我需要能够查询 AWS 以验证弹性 IP 是否已附加到实例。这必须通过命令行或脚本完成。
我尝试使用 Ansible 和 AWS CLI 来获取此信息。示例:
aws ec2 describe-addresses --filters Name='public-ip',Values=34.29.176.23
返回错误:HTTPSConnectionPool(host='ec2.us-west-2a.amazonaws.com',port=443):url 超出最大重试次数:/(由 NewConnectionError(':无法建立新连接:[Errno -2] 名称或服务未知',)引起)
并使用 Opsworks
aws opsworks describe-elastic-ips --ips '34.29.176.20'
返回错误:HTTPSConnectionPool(host='opsworks.us-west-2a.amazonaws.com',port=443):url 超出最大重试次数:/(由 NewConnectionError(':无法建立新连接:[Errno -2] 名称或服务未知',)引起)
答案1
您错误地配置了 aws-cli 安装。
您已将区域配置为us-west-2a
,但它不是一个区域,而是一个可用区域。
这就是您收到错误的原因——不是因为您没有指定区域,而是因为您在配置中指定了无效值。否则,aws-cli 会抛出错误,提示操作需要选择区域。
答案2
AWS 中的几乎所有内容都按区域组织。大多数 CLI 命令都需要指定区域。
当您设置 AWS CLI 时,会设置一个默认区域以及您的凭证。
在控制台中输入“aws configure”。如果您已经配置了凭证,请对每个凭证按 ENTER,然后会使用保存的值。当显示“默认区域名称:”行时,请输入您的默认区域名称,例如 us-west-2。现在,您的 CLI 命令将在不指定 --region 选项的情况下运行。您的脚本(Python、Java 等)也将能够自动使用您的凭证和区域。
另外,请确保您使用的是最新版本。re:Invent 2017 上的所有公告都对 CLI 进行了一些出色的更新。当前版本是 1.14.2。在控制台上输入“ pip install awscli --upgrade
”。在 Windows 上,这需要在管理员命令 shell 中运行。
答案3
显然,http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-addresses.html
describe-addresses 需要提供一个区域。例如:
aws ec2 describe-addresses --filters Name='public-ip',Values='34.29.176.20' --region us-west-2