我如何从 AWS 账户中列出所有正在运行的实例?

我如何从 AWS 账户中列出所有正在运行的实例?

我在 Windows 10 Professional 上使用 AWSCLI 和 GitBash。我需要按帐户列出所有正在运行的 AWS 实例。将开始在帐户中执行操作以创建列表来填充来自用户的公钥。

基于这些网站:

使用 Ansible 自动将 SSH 密钥添加到 EC2 实例

AWS 文档:

过滤 AWS

并已完成:

aws ec2 describe-instances --filters Name=instance-state-name,Values=running

但是这个命令的输出生成了很多信息。我尝试查看公共 IP 并生成少一点的信息,只是为了进行过滤测试。

 $ aws ec2 describe-network-interfaces --query NetworkInterfaces[].Association.PublicIp
[
    "5.1.210.2",
    "5.9.236.6",
    "5.25.225.6",
    "3.2.254.5",
    "3.9.237.67",
    "4.5.183.15",
    "8.6.37.159",
    "5.0.128.119",
    "5.8.74.231",
    "4.2.37.138",
    "5.8.103.63",
    "4.1.17.9",
    "4.4.216.193",
    "4.9.147.45",
    "4.7.169.22"
]

出于安全考虑,我对一些八位数字进行了更改。输出效果更好,但我不知道如何正确过滤第一个例子。

我的 add-key.yml

[root@devops list]# cat add-key.yml
- name: "Playbook to Add Key to EC2 Instances"
  hosts: hosts_to_add_key
  vars:
    - status : "present"
    - key : "user_rsa_key.pub"

  tasks:

  - name: "Copy the authorized key file from"
    authorized_key:
      user: "{{ansible_user}}"
      state: "{{status}}"
      key: "{{ lookup('file', '{{ key }}')}}"

我的hosts_to_add_key:

[root@devops list]# cat hosts_to_add_key
[hosts_to_add_key]
bacula ansible_host=3.2.1.43 ansible_user=centos
1.2.1.20 ansible_host=10.9.1.50 ansible_user=centos
devops ansible_host=localhost ansible_user=centos
docker ansible_host=52.87.108.170 ansible=ec2-user
jenkins ansible_host=52.7.6.214 ansible_user=ec2-user
jira ansible_host=54.175.104.102 ansible_user=ec2-user
[hosts_to_add_key:vars]
ansible_ssh_common_args="-o StrictHostKeyChecking=no"

删除了上面的一些主机以显示几行。如果有人能指出有关 describe-instances 的信息以获得更好的结果,那就太好了(按名称、按 VPC)

答案1

您可以通过设置 aws cli 来实现此目的:

  1. 下载并设置 AWS CLI

  2. 配置AWS ie aws configure(提供你的账户访问密钥和密钥ID)

  3. 运行以下代码,列出正在运行的实例以及私有 IP

     aws ec2 describe-instances \
     --filter "Name=instance-state-name,Values=running" \
     --query "Reservations[*].Instances[*].[PrivateIpAddress, Tags[?Key=='Name'].Value|[0]]" \
     --output table > ec2_list.txt
    

这也将表格输出到ec2_list.txt文件中,以便于共享。

相关内容