在其中一个 ec2 实例上获取自动缩放组中其他 ec2 的私有 IP 地址的最佳方法是什么?

What is the best way to get the private IP addresses of other ec2's in an autoscaling group while on one of the ec2 instances?

我需要使用当前自动缩放组的所有私有 IP 地址更新共享 EFS 驱动器中的配置文件。

我想的方法是 运行 一个用户数据脚本,该脚本在 ASG 中查询私有 IP 地址,然后将其回显到配置文件中。为此,ec2 需要具有 AWS CLI 凭证和适当的只读访问权限。理想情况下,我不想在此 ec2 上存储任何凭据。

还有别的办法吗?可能是 VPC 端点之类的?

谢谢!

你问了两个问题。

如何安全地向 EC2 实例提供凭据?

您使用 IAM 角色并将该角色分配给您的 EC2 实例。然后在您的代码中使用实例凭据。下面的 CLI 示例将自动获取这些凭据。

Using an IAM Role to Grant Permissions to Applications Running on Amazon EC2 Instances

如何获取 Auto Scaling Group (ASG) 中 EC2 实例的私有 IP 地址?

  1. 您需要获取附加到您的 ASG 的实例列表。
  2. 为您的 ASG 中的每个实例调用描述 API 并提取私有 IP 地址。

示例命令:

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-auto-scaling-group

aws ec2 describe-instances --instance-ids i-1234567890abcdef0

您可以过滤命令输出。例如,将以下内容添加到第二个命令以仅显示私有 IP 地址:

--query 'Reservations[*].Instances[*].PrivateIpAddress'

推荐: 我会使用 Python SDK 并编写一个简单的程序来提供这些功能并更新您的配置文件。