Cloud Formation:环境无法启动,因为它进入了已终止状态

Posted

技术标签:

【中文标题】Cloud Formation:环境无法启动,因为它进入了已终止状态【英文标题】:Cloud Formation: Environment failed to launch as it entered Terminated state 【发布时间】:2020-09-15 20:28:57 【问题描述】:

我正在构建一个弹性豆茎环境。运行模板时出现上述错误。我添加了 IAM 角色,让 EC2 可以完全访问云形成

 Resources:
  TestApp:
    Type: 'AWS::ElasticBeanstalk::Application'
    Properties: 
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 53bb2af6-3a68-487a-8048-34f111147171

  EBE1RNK0:
    Type: 'AWS::ElasticBeanstalk::Environment'
    Properties:
      ApplicationName: !Ref TestApp
      Description: AWS Elastic Beanstalk Environment running Node Sample Application
      EnvironmentName: NodejsEnvironment
      SolutionStackName: 64bit Amazon Linux 2 v5.0.1 running Node.js 12
      OptionSettings:
        - Namespace: aws:autoscaling:launchconfiguration
          OptionName: InstanceType
          Value: t1.micro

【问题讨论】:

如果你进入 EB 控制台,点击失败的部署,你应该能看到比这更有用的错误信息。 作为旁注。 t2.microt1.micro 更新,它也在免费层中。 我遇到的问题是它创建了 SampleApplication 但是当它移动到 SampleEnvironment 时,它给出了“环境在进入终止状态时无法启动”。然后它说以下资源未能创建:[示例环境]。用户请求回滚。 【参考方案1】:

查看屏幕截图,它在尝试访问 S3 后就失败了——这就是你的嫌疑人。 AWS Docs 说 beanstalk 将需要访问 S3、Xray 和 CloudWatch Logs 并提供以下示例策略。您的角色是否包含这些权限?


  "Version": "2012-10-17",
  "Statement": [
    
      "Sid": "BucketAccess",
      "Action": [
        "s3:Get*",
        "s3:List*",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::elasticbeanstalk-*",
        "arn:aws:s3:::elasticbeanstalk-*/*"
      ]
    ,
    
      "Sid": "XRayAccess",
      "Action": [
        "xray:PutTraceSegments",
        "xray:PutTelemetryRecords"
      ],
      "Effect": "Allow",
      "Resource": "*"
    ,
    
      "Sid": "CloudWatchLogsAccess",
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogStream",
        "logs:DescribeLogStreams",
        "logs:DescribeLogGroups"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
      ]
    
  ]

【讨论】:

嗨,是的,我拥有必要的权限。我已经解决了这个错误。这是因为我没有添加实例配置文件角色。它允许您在实例启动时将角色信息传递给 EC2 实例。【参考方案2】:

已解决:我错过了添加实例配置文件,因为这将使我能够在实例开始运行时将信息传递给 EC2。

这应该在您的选项设置下方。如下所示。

OptionSettings:
    - Namespace: 'aws:autoscaling:launchconfiguration'
      OptionName: IamInstanceProfile
      Value: aws-elasticbeanstalk-ec2-role

【讨论】:

以上是关于Cloud Formation:环境无法启动,因为它进入了已终止状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS SAM Cloud-Formation 中使用 Route53 设置自定义域名

Cloud Formation 模板将入口规则添加到现有安全组

如何使用 Cloud Formation 模板在 S3 存储桶上设置 SSE-S3 或 SSE-KMS 加密?

以下 AWS Cloud Formation 错误?

如何使用 Cloud Formation 模板自动扩展 DynamoDB?

如何在 AWS Cloud Formation 中实施嵌套堆栈?