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

在Terraform中创建EC2实例时如何使用AWS Secrets Manager的SSH密钥

问题解决:Terraform引用Secrets Manager SSH密钥报错修正

错误原因

  1. 数据源名称不匹配:你在EC2实例配置中引用了data.aws_secretsmanager_secret_version.ssh_key,但实际定义的数据源名称是current,导致Terraform找不到该数据源。
  2. 未解析密钥键值对:你的SSH密钥以键值对ssh-key存储在Secrets Manager中,但当前代码未从返回的secret_string中提取对应的值。
  3. EC2 key_name参数要求:该参数需要的是AWS EC2密钥对的名称,而非私钥内容,请确保Secrets Manager中ssh-key字段存储的是已创建的EC2密钥对名称。

修正后的代码

resource "aws_security_group" "wordpress_sg" {
  name        = "wordpress-sg"
  description = "Security group for the WordPress instance"

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"] // 允许所有IP的SSH访问
  }

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"] // 允许所有IP的HTTP访问
  }

  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"] // 允许所有IP的HTTPS访问
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

# 获取Secrets Manager中的密钥元数据
data "aws_secretsmanager_secret" "secrets" {
  arn = "arn:aws:secretsmanager:us-east-1:xxxx:secret:mysecret-xxxx"
}

# 获取密钥的当前版本内容
data "aws_secretsmanager_secret_version" "current" {
  secret_id = data.aws_secretsmanager_secret.secrets.id
}

resource "aws_instance" "example" {
  ami           = var.ami_id
  instance_type = var.instance_type
  # 解析JSON格式的密钥内容,提取ssh-key字段对应的值作为EC2密钥对名称
  key_name      = jsondecode(data.aws_secretsmanager_secret_version.current.secret_string)["ssh-key"]
  security_groups = [aws_security_group.wordpress_sg.name]
}

output "instance_public_ip" {
  value = aws_instance.example.public_ip
}

关键修正点说明

  • 将EC2实例的key_name参数修改为jsondecode(data.aws_secretsmanager_secret_version.current.secret_string)["ssh-key"]:通过jsondecode解析Secrets Manager返回的JSON格式密钥内容,提取ssh-key字段的值。
  • 确保数据源引用名称与定义的一致:使用data.aws_secretsmanager_secret_version.current而非不存在的ssh-key。

内容的提问来源于stack exchange,提问作者megha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:07:25