我正在尝试找到一种列出/描述 EC2 实例的公共 IP(不必是 EIP)的方法。我已阅读有关 Describe* 的信息,并且知道无法在策略中指定资源的限制。
我的问题是:
在策略中指定资源时,我有什么办法可以获取 EC2 实例的公共 IP?是否有任何可以在 awscli 中使用的命令,这些命令会在用户/组下运行时返回公共 IP,并且仅在指定资源内允许此操作?
我基本上想应用一项策略,授予用户/组仅从指定的 EC2 实例 ID 获取 IP 的权限。
谢谢你!
答案1
唯一可以获取 EC2 实例的公共 IP 地址的命令如下:
aws ec2 describe-instances \
--region us-east-1 \
--instance-ids i-abcdef
不幸的是,没有 IAM 策略语法能够将命令限制为仅单个 EC2 实例。describe-instances
不允许资源级权限。因此,要授予此命令的访问权限,需要授予所有 EC2 实例的访问权限。
答案2
你可以使用它来获取公共 IP
aws ec2 describe-instances --instance-ids i-the-instance-id-here | grep PublicIpAddress | awk -F ":" '{print $2}' | sed 's/[",]//g'
并且您可以授予您的 AWS CLI 用户AmazonEC2ContainerRegistryReadOnly
访问权限。