【问题标题】:Environment failed to launch as it entered Terminated state环境因进入已终止状态而无法启动
【发布时间】:2019-04-22 20:32:28
【问题描述】:

设置
Serverless.com 框架

目标
通过无服务器创建 AWS Elastic Beanstalk

代码
serverless.yml

service: aws-beanstalk-sls
description: Test stack deployment ????

provider:
  name: aws
  stage: running
  region: eu-central-1
  profile: beanstalk-test-deployment

resources:
  Resources:
    sampleApplication:
      Type: AWS::ElasticBeanstalk::Application
      Properties:
        Description: AWS Elastic Beanstalk Sample Application

    sampleApplicationVersion:
      Type: AWS::ElasticBeanstalk::ApplicationVersion
      Properties:
        ApplicationName:
          Ref: sampleApplication
        Description: AWS ElasticBeanstalk Sample Application Version
        SourceBundle:
          S3Bucket: elasticbeanstalk-samples-eu-central-1
          S3Key: nodejs-sample.zip

    sampleConfigurationTemplate:
      Type: AWS::ElasticBeanstalk::ConfigurationTemplate
      Properties:
        SolutionStackName: 64bit Amazon Linux 2018.03 v4.7.0 running Node.js
        Description: AWS ElasticBeanstalk Sample Configuration Template
        ApplicationName:
          Ref: sampleApplication
        OptionSettings:
        - Namespace: aws:autoscaling:asg
          OptionName: MinSize
          Value: '2'
        - Namespace: aws:autoscaling:asg
          OptionName: MaxSize
          Value: '6'
        - Namespace: aws:elasticbeanstalk:environment
          OptionName: EnvironmentType
          Value: LoadBalanced

    sampleEnvironment:
      Type: AWS::ElasticBeanstalk::Environment
      Properties:
        ApplicationName:
          Ref: sampleApplication
        Description: AWS ElasticBeanstalk Sample Environment
        TemplateName:
          Ref: sampleConfigurationTemplate
        VersionLabel:
          Ref: sampleApplicationVersion

错误
发生错误:sampleEnvironment - 环境无法启动,因为它进入了已终止状态。

注意
配置文件 beanstalk-test-deployment 已经具有 IAM 角色:

  • AWSElasticBeanstalkFullAccess
  • 管理员访问权限

【问题讨论】:

    标签: amazon-web-services amazon-iam amazon-elastic-beanstalk


    【解决方案1】:

    您需要创建 aws-elasticbeanstalk-ec2-role AWS::IAM::InstanceProfile 并在 sampleConfigurationTemplate 的 OptionSettings 中提供它:

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

    该角色可以使用这些托管策略 Arns:

    - arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier
    - arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier
    - arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker
    

    如果添加此角色没有帮助,该错误也可能表明 .ebextensions 失败。我曾经通过在 ebextensions 中调用一个不存在的 KeyName 得到这个错误。

    【讨论】:

    • 如果您将iam:CreateServiceLinkedRole 权限添加到启动 Cloudformation 堆栈的角色中,Cloudformation/Beanstalk 应自动创建服务角色(如果它不存在)。如果您部署到多个帐户/环境,这可以避免以后出现一系列问题。
    • Elastic Beanstalk 日志可能还会包含更多信息。在我的情况下,我最初没有看到它,因为如果没有正在运行的 Elastic Beanstalks,控制台会向您显示入门页面,而不是死的 Elastic Beanstalks 列表。
    猜你喜欢
    • 2020-09-15
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多