【问题标题】:Deploy ElasticBeanstalk environment using ClourdFormation使用 CloudFormation 部署 Elastic Beanstalk 环境
【发布时间】:2021-09-02 23:52:48
【问题描述】:

我有以下 CF 模板来部署 EB 环境:

Resources:

  EBEC2Role:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: 'Allow'
            Principal:
              Service:
                - 'ec2.amazonaws.com'
            Action:
              - 'sts:AssumeRole'
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier'
        - 'arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier'
        - 'arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker'
      RoleName: 'aws-elasticbeanstalk-ec2-role'


  EBServiceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: 'Allow'
            Principal:
              Service:
                - 'elasticbeanstalk.amazonaws.com'
            Action:
              - 'sts:AssumeRole'
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth'
        - 'arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkService'
      RoleName: 'aws-elasticbeanstalk-service-role'

  EBApplication:
    Type: AWS::ElasticBeanstalk::Application
    Properties:
      ApplicationName: 'Freyja'
      Description: 'Freyja EB Application'

  EBAppVersion:
    Type: AWS::ElasticBeanstalk::ApplicationVersion
    Properties:
      ApplicationName:
        Ref: EBApplication
      Description: 'App version'
      SourceBundle:
        S3Bucket:
          Fn::ImportValue:
                  Fn::Sub: 'S3MainBucket'
        S3Key: 'python.zip'

  EBEnv:
    Type: AWS::ElasticBeanstalk::Environment
    Properties:
      ApplicationName:
        Ref: EBApplication
      Description: 'Freyja main environment'
      EnvironmentName: 'Freyja'
      SolutionStackName: '64bit Amazon Linux 2 v3.1.4 running Python 3.7'
      OptionSettings:
        - Namespace: 'aws:autoscaling:launchconfiguration'
          OptionName: 'InstanceType'
          Value: 't2.nano'
        - Namespace: 'aws:autoscaling:launchconfiguration'
          OptionName: 'IamInstanceProfile'
          Value: !Ref EBEC2Role
        - Namespace: 'aws:elasticbeanstalk:environment'
          OptionName: 'ServiceRole'
          Value: !Ref EBServiceRole
      VersionLabel:
        Ref: EBAppVersion

但是,我在 CF 中创建它时一直出错:

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

我浏览了很多文档,但似乎无法找到导致此问题的原因。请记住,这个想法是将其部署在一个全新的帐户中,这就是我在模板中创建角色的原因,除了一个单独的 CF 模板来创建 S3 存储桶之外,其中没有任何内容。

【问题讨论】:

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


    【解决方案1】:

    这可能是因为IamInstanceProfile 应该是实例配置文件,而不是角色。所以你可以按如下方式添加:

      EBInstanceProfile:
        Type: AWS::IAM::InstanceProfile
        Properties: 
          Roles: 
            - !Ref EBEC2Role
    

    然后:

            - Namespace: 'aws:autoscaling:launchconfiguration'
              OptionName: 'IamInstanceProfile'
              Value: !Ref EBInstanceProfile
    

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 2016-07-18
      • 2016-04-20
      • 2020-05-29
      • 2017-10-12
      • 2019-07-22
      • 2015-04-03
      • 2019-07-23
      • 2018-06-07
      相关资源
      最近更新 更多