登录角色时 AWS Elastic Beanstalk ServiceRole 错误

问题描述 投票:0回答:4

我正在通过 SSO 登录角色,并尝试创建一个新的 Elastic Beanstalk 环境(如果重要,则为最新的 tomcat),但收到以下错误,该错误甚至阻止我开始构建环境:


(Namespace: 'aws:elasticbeanstalk:environment', OptionName: 'ServiceRole'): Invalid service role

即使我尝试克隆现有环境,也会发生这种情况。我尝试自动生成服务角色并手动创建一个。两者都给出了错误。当我登录具有相同权限的用户时,不会发生此错误。

amazon-web-services amazon-elastic-beanstalk
4个回答
15
投票

当您使用 Elastic Beanstalk 控制台克隆环境时,您可以选择新平台和服务角色。服务角色是 here 记录的 beanstalk 中的一个新概念。如果您使用基本健康监测,则不需要服务,但如果您选择使用增强健康监测,则需要服务。

创建环境时,您可以选择传递 IamInstanceProfile(通常名为

aws-elasticbeanstalk-ec2-role
)和服务角色(通常名为
aws-elasticbeanstalk-service-role
)。使用增强型应用程序运行状况监控时需要这两个角色。 请注意,这两个角色需要一组完全不同的权限,您应该为每个角色使用不同的角色。您可以在此处找到记录的服务角色和实例配置文件所需的权限列表。

使用 AWS 控制台创建/克隆/修改环境时,您将看到一个选择服务角色的选项。如果您以前从未使用过服务角色,您将看到“创建新角色”选项。控制台允许您通过单击按钮来创建 beanstalk 所需的服务角色。您可以在创建角色之前查看权限。

首次创建后,控制台将向您显示一个下拉列表,其中包含您之前创建的角色(通常名为

aws-elasticbeanstalk-service-role
),您可以重用此服务角色。

文档中:“服务角色是 Elastic Beanstalk 在代表您调用其他服务时所承担的 IAM 角色。Elastic Beanstalk 在调用 Amazon Elastic Compute Cloud (Amazon EC2) 时使用您在创建 Elastic Beanstalk 环境时指定的服务角色)、Elastic Load Balancing 和 Auto Scaling API,用于收集有关其 AWS 资源运行状况的信息。”

创建/使用角色时,您需要确保 IAM 用户具有您创建的角色的传递角色权限。如果您不使用根账户,请确保您拥有 IAM 用户的正确的策略。 请注意,iam:PassRole 权限允许您的 IAM 用户将角色传递给 beanstalk 服务。

更新

单点登录存在问题,现已解决。如果您仍然遇到问题,请在此处或下面的 AWS 论坛主题中进行更新。 AWS 论坛主题:https://forums.aws.amazon.com/thread.jspa?threadID=171369


4
投票

我昨天遇到了同样的错误,今天使用相同的堆栈遇到了不同的错误“无法分配角色。请验证您是否有权传递此角色:XXXXXX。

我解决了将此策略“AWSElasticBeanstalkFullAccess”分配给我的用户

在这里您可以阅读更多内容: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-roles.html#concepts-roles-user


0
投票

AWS 支持论坛上似乎有一个帖子:https://forums.aws.amazon.com/thread.jspa?messageID=670359

我在尝试通过跨账户 iam 策略访问 beanstalk 环境时遇到同样的问题。

我认为使用属于该特定 AWS 账户的 IAM 账户登录控制台可以解决该问题。我确信 AWS 人员正在努力解决这个问题


0
投票

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-servicerole.html

由于权限问题,Elastic Beanstalk 服务无法 始终为您成功创建此服务相关角色。 因此,控制台尝试显式创建它。为确保您的 帐户具有此服务相关角色,至少创建一个环境 使用控制台后,配置要启用的托管更新 在创建环境之前。

当您开始构建环境时,请确保以下内容

  1. 在 EC2 实例中创建密钥对和注释名称
  2. 创建角色 aws-elasticbeanstalk-service-role 并添加
  • AWSElasticBeanstalkEnhancedHealth
  • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
  1. 创建Ebs-service-role并添加
    • AWSElasticBeanstalkWebTier,
    • AWSElasticBeanstalkWorkerTier,
    • AWSElasticBeanstalk多容器Docker

现在

  • 添加服务角色:aws-elasticbeanstalk-service-role
  • EC2 键入您的实例密钥名称
  • 添加 EC2 实例配置文件:Ebs-service-role

如果您想创建自定义策略

AWSElasticBeanstalkWebTier

    {
      "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",
            "xray:GetSamplingRules",
            "xray:GetSamplingTargets",
            "xray:GetSamplingStatisticSummaries"
          ],
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Sid": "CloudWatchLogsAccess",
          "Action": [
            "logs:PutLogEvents",
            "logs:CreateLogStream",
            "logs:DescribeLogStreams",
            "logs:DescribeLogGroups"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
          ]
        },
        {
          "Sid": "ElasticBeanstalkHealthAccess",
          "Action": [
            "elasticbeanstalk:PutInstanceStatistics"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:elasticbeanstalk:*:*:application/*",
            "arn:aws:elasticbeanstalk:*:*:environment/*"
          ]
        }
      ]
    }
    
    

AWSElasticBeanstalkWorkerTier

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "MetricsAccess",
          "Action": [
            "cloudwatch:PutMetricData"
          ],
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Sid": "XRayAccess",
          "Action": [
            "xray:PutTraceSegments",
            "xray:PutTelemetryRecords",
            "xray:GetSamplingRules",
            "xray:GetSamplingTargets",
            "xray:GetSamplingStatisticSummaries"
          ],
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Sid": "QueueAccess",
          "Action": [
            "sqs:ChangeMessageVisibility",
            "sqs:DeleteMessage",
            "sqs:ReceiveMessage",
            "sqs:SendMessage"
          ],
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Sid": "BucketAccess",
          "Action": [
            "s3:Get*",
            "s3:List*",
            "s3:PutObject"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::elasticbeanstalk-*",
            "arn:aws:s3:::elasticbeanstalk-*/*"
          ]
        },
        {
          "Sid": "DynamoPeriodicTasks",
          "Action": [
            "dynamodb:BatchGetItem",
            "dynamodb:BatchWriteItem",
            "dynamodb:DeleteItem",
            "dynamodb:GetItem",
            "dynamodb:PutItem",
            "dynamodb:Query",
            "dynamodb:Scan",
            "dynamodb:UpdateItem"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:dynamodb:*:*:table/*-stack-AWSEBWorkerCronLeaderRegistry*"
          ]
        },
        {
          "Sid": "CloudWatchLogsAccess",
          "Action": [
            "logs:PutLogEvents",
            "logs:CreateLogStream"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
          ]
        },
        {
          "Sid": "ElasticBeanstalkHealthAccess",
          "Action": [
            "elasticbeanstalk:PutInstanceStatistics"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:elasticbeanstalk:*:*:application/*",
            "arn:aws:elasticbeanstalk:*:*:environment/*"
          ]
        }
      ]
    }
    
    

AWSElasticBeanstalk多容器Docker

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "ECSAccess",
          "Effect": "Allow",
          "Action": [
            "ecs:Poll",
            "ecs:StartTask",
            "ecs:StopTask",
            "ecs:DiscoverPollEndpoint",
            "ecs:StartTelemetrySession",
            "ecs:RegisterContainerInstance",
            "ecs:DeregisterContainerInstance",
            "ecs:DescribeContainerInstances",
            "ecs:Submit*"
          ],
          "Resource": "*"
        }
      ]
    }
© www.soinside.com 2019 - 2024. All rights reserved.