我正在尝试找出最好的方法来快速确定给定的AWS IP地址是否链接到我控制下的AWS帐户。在过去,使用一两个AWS账户很容易做到这一点。随着更广泛的多账户策略,这变得更加困难和耗时。
有没有人对如何最好地解决这个问题有什么建议?S3存储镜头适用于监控所有账户的S3存储桶,但显然这是针对S3而不是EIP的。
发布于 2021-03-19 04:52:43
这不是“最好的”方法,但它既快捷又简单。使用JSON aws ec2 describe-addresses,它会将EIP和一些有用的细节转储为AWS CLI字符串。通过附加> myips.txt将此输出发送到一个文件,然后使用文本编辑器搜索IP。
aws ec2 describe-addresses > myips.txt
对于每个弹性公网EIP,myips.txt将包含如下数据
{
"Addresses": [
{
"InstanceId": "i-XXXXXXXXXXXXXXXXX",
"PublicIp": "XXX.XXX.XXX.XXX",
"AllocationId": "eipalloc-XXXXXXXX",
"AssociationId": "eipassoc-XXXXXXXX",
"Domain": "vpc",
"NetworkInterfaceId": "eni-XXXXXXXX",
"NetworkInterfaceOwnerId": "XXXXXXXXXXXX",
"PrivateIpAddress": "XXX.X.X.XXX",
"Tags": [
{
"Key": "Name",
"Value": "Web1"
},
{
"Key": "Role",
"Value": "Web"
}
],
"PublicIpv4Pool": "amazon",
"NetworkBorderGroup": "us-east-1"
}
]
}如果你有一堆不同的账号,你可以按名字使用不同的证书,比如:aws --profile producton ec2 describe-addresses >> myips.txt (注:>> appends)。这里假设配置文件"production“在~/.aws/credentials (Linux & Mac)或%USERPROFILE%.aws\credentials (Windows)中定义如下:
[production]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY自己创建一个.sh或.bat脚本,并使用它对每个配置文件/区域执行aws,并不断将结果附加到当前目录中的"myips.txt“文件:
aws --profile production --region us-east-1 ec2 describe-addresses > myips.txt
aws --profile production --region ca-central-1 ec2 describe-addresses >> myips.txt
aws --profile sandbox ec2 describe-addresses >> myips.txt
aws --profile testing ec2 describe-addresses >> myips.txt
aws --profile backup ec2 describe-addresses >> myips.txt然后,您可以在需要查找IP的任何时候运行此脚本(每次您运行此脚本时,它都会创建/覆盖myips.txt )。
显然,您可以进一步自动化这一点,遍历每个区域,很好地格式化输出等。另一种选择是使用不同的filter options for aws cli搜索IP。搜索所需的IP可能比检索所有IP的列表更快。这在很大程度上取决于你想投入多少努力和你的aws账户的大小。
https://stackoverflow.com/questions/66697235
复制相似问题