如何使用 terraform 脚本访问存储在 aws 参数存储中的键值对
How to access key value pairs stored in aws parameter store using terraform script
要求是我想在运行时将我的 SSH 密钥传递给 ec2 实例,该实例使用 terraform 代码存储在参数存储中。
data "aws_ssm_parameter" "key_pair" {
name = "/Test/keystest"
}
这是我的启动配置
resource "aws_launch_configuration" "app" {
image_id = data.aws_ssm_parameter.ami.value
instance_type = "t2.micro"
key_name = data.aws_ssm_parameter.key_pair.value
security_groups = [ aws_security_group.sg_web.id ]
associate_public_ip_address = true
user_data = <<USER_DATA
#!/bin/bash
sudo su
yum update -y
yum install httpd -y
cd /var/www/html
echo "MyGoogle-2" > index.html
service httpd start
chkconfig httpd on
USER_DATA
lifecycle {
create_before_destroy = false
}
}
当我执行上面的 tf 代码时,出现以下错误
Error creating launch configuration: ValidationError: 1 validation error detected:
Value 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBBBnLT+Q2ga26mv4coeobj4flEDtX/lfmP4tCWYhMW868UqHIJw4C+Ns1yh3Ondp1sW094UR6NCJHKJeGkFrzB7/EaPKLt/z3wJceIsXKSsqS539YiaslIY54t7fDpM0qcE/Y6K+zS21lGLEuAys/OwgutZGgFxDSDWtTleU0kRvnI4MVsPtWLMu4AzfvrlHrYkv2fGiwfJzq/UjnF+TvHTPoYMp3TImjvhLzrmL1y2XrWesj7Q1E1xsgMgs4N5WIbXGI45KuRBcJVNmSpw/quv5vz/3NxtRQwmQcPriJo+Fucj14+UsW+CD3agbPn4arh4PE8E2Gel Test' at 'keyName' failed to satisfy constraint: Member must have length less than or equal to 255
│
status code: 400, request id: f5bf125c-54b8-4bf5-ad13-aead7176f3a3
错误说明你的key_name
是错误的。您正在尝试将 ssh 密钥传递给它,但它应该是一个名称,例如“MyKeyPair”,您使用 aws_key_pair 创建的。这是您指定 public_key
.
的地方
您将 ssh 密钥数据传递给 key_name。您必须将 ssh 密钥名称传递给 key_name。现在,如果您需要 EC2 中的 ssh 密钥。使用用户数据传递它。安装 AWS cli 然后使用 ssm get 参数获取 EC2 中的密钥。
要求是我想在运行时将我的 SSH 密钥传递给 ec2 实例,该实例使用 terraform 代码存储在参数存储中。
data "aws_ssm_parameter" "key_pair" {
name = "/Test/keystest"
}
这是我的启动配置
resource "aws_launch_configuration" "app" {
image_id = data.aws_ssm_parameter.ami.value
instance_type = "t2.micro"
key_name = data.aws_ssm_parameter.key_pair.value
security_groups = [ aws_security_group.sg_web.id ]
associate_public_ip_address = true
user_data = <<USER_DATA
#!/bin/bash
sudo su
yum update -y
yum install httpd -y
cd /var/www/html
echo "MyGoogle-2" > index.html
service httpd start
chkconfig httpd on
USER_DATA
lifecycle {
create_before_destroy = false
}
}
当我执行上面的 tf 代码时,出现以下错误
Error creating launch configuration: ValidationError: 1 validation error detected:
Value 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBBBnLT+Q2ga26mv4coeobj4flEDtX/lfmP4tCWYhMW868UqHIJw4C+Ns1yh3Ondp1sW094UR6NCJHKJeGkFrzB7/EaPKLt/z3wJceIsXKSsqS539YiaslIY54t7fDpM0qcE/Y6K+zS21lGLEuAys/OwgutZGgFxDSDWtTleU0kRvnI4MVsPtWLMu4AzfvrlHrYkv2fGiwfJzq/UjnF+TvHTPoYMp3TImjvhLzrmL1y2XrWesj7Q1E1xsgMgs4N5WIbXGI45KuRBcJVNmSpw/quv5vz/3NxtRQwmQcPriJo+Fucj14+UsW+CD3agbPn4arh4PE8E2Gel Test' at 'keyName' failed to satisfy constraint: Member must have length less than or equal to 255
│
status code: 400, request id: f5bf125c-54b8-4bf5-ad13-aead7176f3a3
错误说明你的key_name
是错误的。您正在尝试将 ssh 密钥传递给它,但它应该是一个名称,例如“MyKeyPair”,您使用 aws_key_pair 创建的。这是您指定 public_key
.
您将 ssh 密钥数据传递给 key_name。您必须将 ssh 密钥名称传递给 key_name。现在,如果您需要 EC2 中的 ssh 密钥。使用用户数据传递它。安装 AWS cli 然后使用 ssm get 参数获取 EC2 中的密钥。