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

Posted

技术标签:

【中文标题】如何在实例中获取 AWS OpsWorks 实例 ID?【英文标题】:How to get AWS OpsWorks instance id within an instance? 【发布时间】:2020-12-09 11:20:37 【问题描述】:

以下是获取我当前实例的 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

实例中是否有可以找到此信息的文件?

【问题讨论】:

【参考方案1】:

在 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

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

【讨论】:

以上是关于如何在实例中获取 AWS OpsWorks 实例 ID?的主要内容,如果未能解决你的问题,请参考以下文章

在实例上设置 aws opsworks 时出现凭证错误

AWS opsworks 如何管理用户上传的内容

AWS opsworks deploy 在实例加入域后永远运行

AWS Opsworks 未能添加 EC2 实例

如何使用 Cloudformation 向 OpsWorks 堆栈注册 RDS 实例?

实例的 AWS OpsWorks setup_failed - 无法部署_branch