es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í:

Imagen

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
Tags:  ,

Answer

  1. Avatar for 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:

    setting {
        namespace = "aws:autoscaling:launchconfiguration"
        name      = "IamInstanceProfile"
        value     = "iam_para_beanstalk"
    }
    

    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 recurso aws_iam_role:

    output "arn" {
        value = aws_iam_role.beanstalk.arn
    }
    

    Luego, puede actualizar el campo value en el bloque setting para usar el ARN:

    setting {
        namespace = "aws:autoscaling:launchconfiguration"
        name      = "IamInstanceProfile"
        value     = aws_iam_role.beanstalk.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.

Comments are closed.