You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:34:37