Terraform - 与环境关联的实例配置文件不存在

Posted

技术标签:

【中文标题】Terraform - 与环境关联的实例配置文件不存在【英文标题】:Terraform - The instance profile associated with the environment does not exist 【发布时间】:2022-01-17 01:29:45 【问题描述】:

我正在尝试创建 Elastic Beanstalk 应用程序,但遇到错误:

与环境关联的实例配置文件 iam_for_beanstalk 不存在。

如您在此处所见,该角色确实存在:

它是通过 Terraform 通过以下代码创建的:

resource "aws_iam_role" "beanstalk" 
  name = "iam_for_beanstalk"
  assume_role_policy = file("$path.module/assumerole.json")

assumerole.json 看起来像这样:


    "Version": "2012-10-17",
    "Statement": [
        "Effect": "Allow",
        "Principal": 
            "Service": "elasticbeanstalk.amazonaws.com"
        ,
        "Action": "sts:AssumeRole",
        "Condition": 
          "StringEquals": 
            "sts:ExternalId": "elasticbeanstalk"
          
        
    ]

下面是我尝试将它与新创建的应用程序关联的方法:

resource "aws_elastic_beanstalk_environment" "nodejs" 
  application = aws_elastic_beanstalk_application.nodejs.name
  name = "***"
  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"
  ...

我也尝试分配如下名称,但没有成功:

value     = aws_iam_role.beanstalk.name

【问题讨论】:

【参考方案1】:

您还需要创建一个aws_iam_instance_profile 资源:

resource "aws_iam_instance_profile" "beanstalk_instance_profile" 
  name = "stack-overflow-example"
  role = aws_iam_role.beanstalk.name

【讨论】:

以上是关于Terraform - 与环境关联的实例配置文件不存在的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk:环境必须有一个与之关联的实例配置文件

在不使用 Terraform 文件配置器的情况下将本地文件部署到实例

引用 IP 地址生成配置文件时的 Terraform 循环依赖问题

如何使用 Terraform 传递 AssumeRole 并将 SSM 文档与 EC2 关联

使用Terraform部署代码和管理配置

使用 terraform 启动 aws elb 实例