Terraform: El perfil de instancia asociado con el entorno no existe.
Estoy tratando de crear una aplicación de Elastic Beanstalk pero me encuentro con el siguiente error:
El perfil de instancia iam_for_beanstalk
asociado con el entorno no existe.
El rol sí existe, como se puede ver aquí:
Y está siendo creado a través de Terraform mediante el siguiente código:
resource "aws_iam_role" "beanstalk" {
name = "iam_for_beanstalk"
assume_role_policy = file("${path.module}/assumerole.json")
}
El archivo assumerole.json
tiene esta estructura:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "elasticbeanstalk.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "elasticbeanstalk"
}
}
}]
}
Y así es como intento asociarlo a la aplicación recién creada:
resource "aws_elastic_beanstalk_environment" "nodejs" {
application = aws_elastic_beanstalk_application.nodejs.name
name = "stackoverflow"
version_label = var.app_version
solution_stack_name = "64bit Amazon Linux 2 v5.4.6 running Node.js 14"
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "IamInstanceProfile"
value = "iam_for_beanstalk"
}
...
}
También intenté asignar el nombre de esta manera, pero sin éxito:
value = aws_iam_role.beanstalk.name
davy.ai
El mensaje de error sugiere que el perfil de instancia asociado con el entorno de Elastic Beanstalk no existe. Esto significa que puede haber un problema con cómo se está asociando el rol de IAM con el entorno.
Al examinar el código de Terraform proporcionado, parece que el rol de IAM se está creando correctamente. Sin embargo, el problema puede estar en cómo se está asociando el rol de IAM con el entorno de Elastic Beanstalk.
En el fragmento de código proporcionado, el rol de IAM se asocia con el entorno utilizando el bloque
setting
:Esto debería funcionar si el rol de IAM se ha creado correctamente. Sin embargo, si esto no funciona, es posible que desee intentar usar el ARN del rol de IAM en lugar del nombre. Puede obtener el ARN del rol de IAM agregando la salida
arn
al recursoaws_iam_role
:Luego, puede actualizar el campo
value
en el bloquesetting
para usar el ARN:Esto debería asociar correctamente el rol de IAM con el entorno de Elastic Beanstalk.
Si esto aún no funciona, es posible que desee verificar si hay algún problema de permisos con el rol de IAM o si hay otros recursos que puedan estar en conflicto con el rol de IAM.