如何在实例中获取AWS OpsWorks实例ID?

问题描述

以下是获取当前实例的OpsWorks实例ID的方法

ec2_instance_id=$(ec2-Metadata -i)

aws opsworks describe-stacks ---> returns all the stacks

iterate over all stack_ids from above:
    aws opsworks describe-instances --stack-id <stack-id>
    
    iterate over all instances from above:
         if ec2_instance_id == instance's ec2 id:
              return instance's opsworks id

但是,除了这个以外,还有什么方法可以从实例中找到我们的OpsWorks ID?这些信息是否存储在实例本身的任何位置?

每次登录实例时,其摘要显示如下:

 This instance is managed with AWS OpsWorks.

   ######  OpsWorks Summary  ######
   Operating System: Amazon Linux AMI release 2018.03
   OpsWorks Instance: XXXXXX
   OpsWorks Instance ID: XXXXXX
   OpsWorks Layers: XXXXXX
   OpsWorks Stack: XXXXXX
   EC2 Region: XXXXXX
   EC2 Availability Zone: XXXXX
   EC2 Instance ID: XXXXXX
   Public IP: XXXXXXX
   Private IP: XXXXXX
   VPC ID: XXXXX
   subnet ID: XXXXX

实例中是否可以找到此信息的任何文件

解决方法

在Amazon Linux 2上,该ID位于/etc/aws/opsworks/instance-agent.yml

因此您可以得到它:

ops_instance_id=$(sudo grep identity /etc/aws/opsworks/instance-agent.yml | cut -d ' ' -f2)

echo $ops_instance_id

示例输出:

54e0799e-bf86-426f-b08c-06530ca6b914

也许有更简单的方法。我只知道上面的一个。