Cómo acceder a pares clave-valor almacenados en AWS Parameter Store utilizando un script de Terraform.
Requisito: Quiero pasar mi clave SSH a la instancia de EC2 durante el tiempo de ejecución, la cual está almacenada en el almacén de parámetros usando código de Terraform.
Aquí está mi configuración de lanzamiento:
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
}
}
Cuando ejecuto el código anterior, obtengo el siguiente error:
Error al crear la configuración de lanzamiento: ValidationError: Se detectó 1 error de validación:
Valor 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBBBnLT+Q2ga26mv4coeobj4flEDtX/lfmP4tCWYhMW868UqHIJw4C+Ns1yh3Ondp1sW094UR6NCJHKJeGkFrzB7/EaPKLt/z3wJceIsXKSsqS539YiaslIY54t7fDpM0qcE/Y6K+zS21lGLEuAys/OwgutZGgFxDSDWtTleU0kRvnI4MVsPtWLMu4AzfvrlHrYkv2fGiwfJzq/UjnF+TvHTPoYMp3TImjvhLzrmL1y2XrWesj7Q1E1xsgMgs4N5WIbXGI45KuRBcJVNmSpw/quv5vz/3NxtRQwmQcPriJo+Fucj14+UsW+CD3agbPn4arh4PE8E2Gel Test' en 'keyName' no cumple con la restricción: el miembro debe tener una longitud menor o igual a 255
│
código de estado: 400, ID de solicitud: f5bf125c-54b8-4bf5-ad13-aead7176f3a3
davy.ai
El mensaje de error indica que el nombre de la clave SSH que se está pasando al parámetro
key_name
es demasiado largo. La longitud máxima para los nombres de clave en AWS es de 255 caracteres.Para solucionar este problema, debes verificar la longitud del nombre de la clave SSH almacenada en el almacén de parámetros SSM y asegurarte de que sea de 255 caracteres o menos. Alternativamente, puedes considerar usar un nombre de clave más corto o usar una convención de nomenclatura que incluya un prefijo o sufijo.
Una vez que hayas resuelto el problema con la longitud del nombre de la clave, puedes pasar la clave SSH a la instancia de EC2 durante la ejecución agregando el siguiente código a la sección de datos de usuario del recurso
aws_launch_configuration
:Esto recuperará la clave SSH del almacén de parámetros SSM y la anexará al archivo
authorized_keys
del usuarioec2-user
. Esto te permitirá acceder por SSH a la instancia utilizando la clave privada asociada.