我们能否在AWS::CloudFormation::Init中收集实例元数据?

当配置AWS cloudwatch代理时,您可以在下面的选项中加入 {instance_id} 里面 awslogs.conf

[/var/log/cfn-hup.log]
file = /var/log/cfn-hup.log
log_group_name = my-log-group
log_stream_name = {instance_id}/cfn-hup

有什么方法可以在 AWS::CloudFormation::Init?

具体来说,我想在我的Instance ID中添加以下信息 档案

Resources: 
  MyLaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata: 
      AWS::CloudFormation::Init: 
        config:
          files: 
            /opt/someconfig.conf: 
              content: |
                INSTANCE_ID={instance_id}
              mode: "000644"
              owner: "root"
              group: "root"

我的解决方法是将 INSTANCE_ID 到我的配置文件 之后cfn-init 命令的运行。

echo "INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)" >> /opt/someconfig.conf

有没有更好的方法?

解决方案:

我采用了Marcin在评论中指出的方法。

Resources:
  MyLaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata:
      AWS::CloudFormation::Init:
        config:
          files:
            /opt/someconfig.conf:
              content: |
                INSTANCE_ID='INSTANCE_ID_PLACEHOLDER'
              mode: "000644"
              owner: "root"
    Properties:
      # removed for brevity
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash -xe

          cfn-init -v \
            --stack ${AWS::StackName} \
            --resource MyLaunchConfig \
            --region ${AWS::Region}

          INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)

          sed -i "s/INSTANCE_ID_PLACEHOLDER/$INSTANCE_ID/g" /opt/someconfig.conf


给TA打赏
共{{data.count}}人
人已打赏
未分类

React:当在第二个容器中插入(渲染)时,如何等到ref可用?

2022-9-9 2:56:16

未分类

亚马逊SQS有什么服务水平协议(SLA)吗?例如,其正常运行时间

2022-9-9 2:56:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索