aws_public_ips 是一个用于获取与 AWS 账户关联的所有公共 IP 地址(包括 IPv4/IPv6)的工具。
它既可作为库使用,也可作为 CLI 使用,并支持以下 AWS 服务(均包含 Classic 和 VPC 两种类型):
如果某个服务未列出(如 S3、ElastiCache 等),很可能是因为该服务没有可支持的公共 IP 资源(即可能无法公开部署,或者所有 IP 地址均解析至全球 AWS 基础设施等)。
安装 gem 并运行:
$ gem install aws_public_ips
# 使用默认的 ~/.aws/credentials
$ aws_public_ips
52.84.11.13
52.84.11.83
2600:9000:2039:ba00:1a:cd27:1440:93a1
2600:9000:2039:6e00:1a:cd27:1440:93a1
# 使用自定义配置文件
$ AWS_PROFILE=production aws_public_ips
52.84.11.159
该 gem 也可以通过 Docker 运行:
$ docker pull arkadiyt/aws_public_ips
# 如需使用凭证,请确保主机环境中定义了相应的环境变量:
$ docker run -e AWS_REGION -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN arkadiyt/aws_public_ips
$ aws_public_ips --help
Usage: aws_public_ips [options]
-s, --services <s1>,<s2>,<s3> List of AWS services to check. Available services: apigateway,cloudfront,ec2,elasticsearch,elb,elbv2,lightsail,rds,redshift. Defaults to all.
-f, --format <format> Set output format. Available formats: json,prettyjson,text. Defaults to text.
-v, --[no-]verbose Enable debug/trace output
--version Print version
-h, --help Show this help message
aws_public_ips 使用默认的 aws-sdk-ruby 配置进行身份验证,按以下顺序检查:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONAWS_PROFILE~/.aws/credentials~/.aws/config更多信息请参阅 AWS SDK 配置文档。
要从所有 AWS 服务中获取公共 IP,您的 IAM 用户所需的最小策略是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"apigateway:GET",
"cloudfront:ListDistributions",
"ec2:DescribeInstances",
"elasticloadbalancing:DescribeLoadBalancers",
"lightsail:GetInstances",
"lightsail:GetLoadBalancers",
"rds:DescribeDBInstances",
"redshift:DescribeClusters",
"es:ListDomainNames"
],
"Resource": "*"
}
]
}
请参阅 CHANGELOG.md。本项目遵循语义化版本。
请参阅 CONTRIBUTING.md。
欢迎发推或私信联系我:@arkadiyt