Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何使用AWS CDK标记EBS卷?_Amazon Web Services_Amazon Cloudformation_Aws Cdk - Fatal编程技术网

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

Amazon web services 如何使用AWS CDK标记EBS卷?,amazon-web-services,amazon-cloudformation,aws-cdk,Amazon Web Services,Amazon Cloudformation,Aws Cdk,我正在使用AWS CDK创建具有EBS卷的实例: BlockDevice durableStorage = BlockDevice.builder() .deviceName("/dev/sdf") .volume(BlockDeviceVolume.ebs(

我正在使用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.add(durableStorage, "cdk", "true");

看起来不可能直接使用CDK构造标记卷。在标记实例时,可能会将标记传播到卷


直接标记卷看起来是可以通过使用CloudFormation资源实现的-

应该可以通过堆栈和资源类型进行限制:

cdk.Tag.add(这个'cdk','true'{
IncludeResourceType:[
“AWS::EC2::卷”,
],
});

到目前为止,我找到的唯一可行的解决方案是使用
EC2用户数据
标记连接的EBS卷:

import*作为ec2从'@aws cdk/aws-ec2'导入
// ...
const userData=ec2.userData.forLinux()
userData.add命令(
//标签卷
'AWS_实例_ID=$(curlhttp://169.254.169.254/latest/meta-data/instance-id)',
`ROOT\u DISK\u ID=$(aws ec2描述卷--区域${props.region}--过滤器“Name=attachment.instance-ID,Values=\${aws\u instance\u ID}”--查询“volumes[].VolumeId”--输出文本)`,
`aws ec2创建标记--区域${props.region}--资源\${ROOT\u DISK\u ID}--标记键=${tagKey},值=${tagValue}`,
)
const ec2Instance=new ec2.Instance(此“ec2实例”{
// ...
userData:userData,
})

不幸的是,这不起作用。您可以轻松地
cdk diff
,并在diff输出中看到未标记的卷。我尝试标记实例,希望附加的卷将被标记。不幸的是,它没有起作用。