首页 > 解决方案 > 使用 AWS CDK 加密卷和自己的 KMS 密钥失败

问题描述

我正在尝试使用 AWS CDK 创建一个 EBS 卷,该卷由我自己在 C# 中的 KMS 密钥加密,使用以下代码段:

var kmsProps = new EncryptionKeyProps
{
    Description = "Encryption key for Storage",
    EnableKeyRotation = true,
    Enabled = true,
    Retain = true
};

var kms = new EncryptionKey(stack, "kms-storage", kmsProps);

var kmsAlias = kms.AddAlias("alias/" + stack.StackName + "/storage");

var storageVolume = new CfnVolume(stack, "server-storage-encrypted", new CfnVolumeProps
{
    AvailabilityZone = privateSubnet1.AvailabilityZone,
    KmsKeyId = kmsAlias.AliasName,
    Size = 30,
    Encrypted = true,
    Tags = new ICfnTag[]
    {
        new CfnTag {Key = "Name", Value = "Server Storage"}
    },
    VolumeType = "gp2"
}); 

但是部署命令失败并出现Volume vol-0e88979f5568c16fa is still creating错误

知道我在 KMS 政策等方面做错了吗?试图寻找它,我唯一发现的是自动缩放需要访问密钥,与 EBS/EC2 无关

标签: amazon-web-servicesamazon-cloudformationaws-kmsaws-ebsaws-cdk

解决方案


我今天跑到这个问题上。事实证明,在 KmsKeyId 中使用别名导致了这个问题。将别名更改为实际密钥 ID 后成功创建堆栈。尽管文档说可以使用别名,但它对我不起作用

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html


推荐阅读