如何使用AWS CDK标记EBS卷? [英] How do I tag an EBS volume using AWS CDK?

查看:243
本文介绍了如何使用AWS CDK标记EBS卷?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用AWS CDK创建具有EBS卷的实例:

I am creating an instance with an EBS volume using AWS CDK:

BlockDevice durableStorage = BlockDevice.builder()
                                        .deviceName("/dev/sdf")
                                        .volume(BlockDeviceVolume.ebs(
                                                    DURABLE_STORAGE_GB,
                                                    EbsDeviceOptions.builder()
                                                                    .deleteOnTermination(true)
                                                                    .encrypted(true)
                                                                    .volumeType(EbsDeviceVolumeType.GP2)
                                                                    .build()))
                                                .build();

Instance instance = new Instance(
                this,
                "MyInstance",
                InstanceProps.builder()
                             /* other config here */
                             .blockDevices(List.of(durableStorage))
                             .build());

如何标记EBS卷? Tag 静态方法需要一个 Construct ,我无法在 BlockDevice 上找到它,例如我想做这样的事情:

How do I tag the EBS volume? The Tag static method requires a Construct, which I can't find on the BlockDevice, e.g. I want to do something like this:

Tag.add(durableStorage, "cdk", "true");

推荐答案

到目前为止,我发现的唯一可行的解​​决方案是使用 EC2用户数据标记附加的EBS卷:

The only working solution I found so far is using EC2 User Data to tag the attached EBS volume:

import * as ec2 from '@aws-cdk/aws-ec2'

// ...

const userData = ec2.UserData.forLinux()
userData.addCommands(
  // Tag volume
  'AWS_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)',
  `ROOT_DISK_ID=$(aws ec2 describe-volumes --region ${props.region} --filter "Name=attachment.instance-id, Values=\${AWS_INSTANCE_ID}" --query "Volumes[].VolumeId" --out text)`,
  `aws ec2 create-tags --region ${props.region} --resources \${ROOT_DISK_ID} --tags Key=${tagKey},Value=${tagValue}`,
)

const ec2Instance = new ec2.Instance(this, 'ec2-instance', {
  // ...
  userData: userData,
})

这篇关于如何使用AWS CDK标记EBS卷?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆