amazon-web-services - 如何使用 AWS CDK 标记 EBS 卷?

标签 amazon-web-services aws-cloudformation aws-cdk

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

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 上找不到它,例如我想做这样的事情:

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

最佳答案

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

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,
})

关于amazon-web-services - 如何使用 AWS CDK 标记 EBS 卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61520269/

相关文章:

c# - 使用 CDK : Internal Server Error 使用容器镜像部署 .NET 5 AWS Lambda

amazon-web-services - AWS CDK - 在为容器指定 secret 时是否可以访问 Secrets Manager secret 中的单个 (JSON) 值?

amazon-web-services - 当我收到 'services has reached steady state'时,是否在Amazon ECS中停止了某些任务?

java - 如何从 Java 在 AWS 中生成签名

amazon-web-services - 按距离排序查询需要读取整个数据集?

amazon-s3 - AWS CDK CloudFront 到 S3 重定向

python - 本地尝试连接到在 ec2 实例上运行的 Redis,但尽管有所有流量入站,但仍出现错误

amazon-web-services - 在 AWS Lambda 中运行云形成代码?这可能吗?

amazon-web-services - 有没有办法从子网列表中选择在 CloudFormation 中启动 EC2 实例?

json - 如何在 AWS CloudFormation 中创建 Amazon SQS 队列并订阅 Amazon SNS 主题?