AWS弹性Beanstalk无法扮演角色

5

我正在按照此处的教程,使用弹性 Beanstalk 将 Ruby on Rails 应用部署到 AWS。但是我遇到了错误。

Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-service-role". 
Verify that the role exists and is configured correctly.

我在IAM中创建了一个角色,并且目前已经授予了AWSElasticBeanstalkFullAccess策略。我想知道我错过了什么。

此外,当我执行eb open命令时,会出现502 Bad Gateway错误。这与上述错误有关吗?

2个回答

1
您需要为角色授予正确的权限。服务角色使elasticbeanstalk有权代表您调用其他服务。
您可以在此处阅读有关所需角色权限的信息:这里。请不要混淆服务角色和实例配置文件。它们是两种具有不同目的的角色。请在这里阅读我的答案以获得更详细的解释。

6
你需要给角色正确的权限。为什么不解释一下应该分配哪些角色以及为什么,而不是链接文档?你的回答不仅没有用,而且对于刚开始使用AWS的人来说也是浪费时间。 - Michal

0
我曾经遇到过同样的问题,为了解决它,我只是创建了一个新的角色,而不是使用默认的角色选项。

template.yml:

AWSTemplateFormatVersion: '2010-09-09'
Description: CloudFormation template to create a service-linked role for Elastic Beanstalk

Resources:

  ElasticBeanstalkServiceRole:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: 'cicd-role'
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: 'Allow'
            Action: 'sts:AssumeRole'
            Principal:
              Service: 'elasticbeanstalk.amazonaws.com'
      Description: 'Allows Elastic Beanstalk to create and manage AWS resources on your behalf.'
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk
        - arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth
        - arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkService

Outputs:
  RoleArn:
    Description: 'ARN of the Elastic Beanstalk service role'
    Value: !GetAtt [ElasticBeanstalkServiceRole, Arn]

在aws管理控制台中:
- 角色 > 创建 - 受信任的实体类型 > AWS服务 - 用例 > Elastic Beanstalk - (其他都默认) - 创建 - 列表项
最后: eb create $EB_CONFIG-env --platform "$EBS_PLATFORM" --service-role $EB_SERVICE_ROLE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接