Terraform创建Launch Configuration时,能否为EBS块设备指定KMS Key ID?
解决Terraform AWS Launch Configuration EBS加密卷指定KMS Key ID的问题
放心,这个需求完全能搞定!虽然Terraform官方文档的ebs_block_device小节没明说怎么传入KMS Key ID,但其实早就支持这个功能了,我给你捋清楚具体操作:
核心思路就是在ebs_block_device块里同时配置encrypted = true和kms_key_id参数,后者可以传入你的KMS密钥ID或者ARN,两种格式都能正常生效。
给你一个完整的配置示例:
resource "aws_launch_configuration" "app_server" { name_prefix = "app-server-launch-config" image_id = "ami-0c55b159cbfafe1f0" # 替换成你实际使用的AMI ID instance_type = "t3.small" # 配置根卷加密并指定自定义KMS密钥 root_block_device { device_name = "/dev/sda1" volume_size = 40 encrypted = true kms_key_id = "arn:aws:kms:us-east-1:123456789012:key/abc123-def45-ghi67-jkl89-mno012pqrs34" volume_type = "gp3" } # 配置附加的EBS数据卷,同样指定自定义KMS密钥 ebs_block_device { device_name = "/dev/sdb" volume_size = 100 encrypted = true kms_key_id = "12345678-1234-1234-1234-123456789012" # 直接用KMS密钥ID也可以 volume_type = "gp3" } }
还有几个需要注意的点:
- 如果只设置
encrypted = true但不指定kms_key_id,AWS会自动使用该区域的默认EBS加密密钥,而非你自定义的密钥 - 要确保EC2实例对应的IAM角色拥有使用该KMS密钥的权限(比如
kms:Encrypt、kms:Decrypt等相关权限),否则实例创建时会抛出权限不足的错误 - 不管是根卷(
root_block_device)还是附加数据卷(ebs_block_device),这个配置逻辑都适用
内容的提问来源于stack exchange,提问作者Mazzy
相关产品推荐
相关产品推荐

