0

我想使用云形成模板标记附有 ec2 实例的 ebs 卷。我能够在新的 ec2 实例和 ebs 卷上创建标签。

我还尝试了云形成中的用户数据方法。但这没有用..有人可以帮助解决这个问题。

请让我知道我缺少什么。

我也尝试在 url 下面解决这个问题,但它没有用。

如何通过 CloudFormation 设置 EC2 实例根卷的标签

我尝试了以下代码:-

"MyInstance" : {
    "Type" : "AWS::EC2::Instance",
    "Properties" : {
        "SecurityGroups" : "MySecurityGroup",
        "AvailabilityZone" : "us-east-1a",
        "ImageId" : "ami-20b65349",
        "Volumes" : [
            { "VolumeId" : "MyEBS",
                       "Device" : "/dev/sdk" }
        ],
        "Tags" : [
            {
                "Key" : "Stage",
                "Value" : "QA"
            }
         ]
       }
    },

并且还使用用户数据......

  Tags:
    - Key: Application
      Value: !Ref 'AWS::StackId'
    - Key: Name
      Value: MNPMGMT-SPMASTER
  NetworkInterfaces:
    - NetworkInterfaceId: !GetAtt 'MgmtNetworkingStack.Outputs.niSplunkMstrIp'
      DeviceIndex: '0'
  BlockDeviceMappings:
    - DeviceName: /dev/sdb
      Ebs:
        Encrypted: 'true'
        VolumeSize: '250'
  UserData: 
    Fn::Base64: |
      #!/bin/bash
      EC2_INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
      EC2_REGION=${EC2_AVAIL_ZONE:0:${#EC2_AVAIL_ZONE} - 1}
      ROOT_DISK_ID=$(aws ec2 describe-volumes --filters Name=attachment.instance-id,Values={EC2_INSTANCE_ID} Name=attachment.device,Values=/dev/sda1 --query 'Volumes[*].[VolumeId]' --region=${EC2_REGION} --out \"text\" | cut -f 1)
      aws ec2 create-tags --resources $ROOT_DISK_ID --tags Key=Name,Value=\"Root Volume my-instance\" --region ${EC2_REGION}

我希望标签也将在现有的 ec2 实例和 ebs 卷上创建,并且应该使用堆栈名称和环境名称命名。

请帮我解决这个问题。

4

2 回答 2

0

在您的用户数据中尝试以下脚本

#!/bin/bash
EC2_AVAIL_ZONE=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed 's/[a-z]$//'`"
EC2_INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
DATA_VOLUME_ID="`aws ec2 describe-volumes  --filters Name=attachment.device,Values=/dev/sda1 Name=attachment.instance-id,Values=$EC2_INSTANCE_ID --query 'Volumes[*].{ID:VolumeId}' --region $EC2_REGION --output text`"
aws ec2 create-tags --resources $DATA_VOLUME_ID --tags Key=KeyName,Value=ValueName Key=KeyName,Value=ValueName --region ${EC2_REGION}
于 2021-10-07T07:22:28.130 回答
0

@John Rotenstein,更正它应该有堆栈名称和 ID,但它没有标记 vol。这就是他想要做的

于 2019-07-15T14:12:16.110 回答