登录角色时出现 AWS Elastic Beanstalk ServiceRole 错误

Posted

技术标签:

【中文标题】登录角色时出现 AWS Elastic Beanstalk ServiceRole 错误【英文标题】:AWS Elastic Beanstalk ServiceRole Error When Logging In To A Role 【发布时间】:2015-11-05 18:49:17 【问题描述】:

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

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

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

【问题讨论】:

您是否使用 IAM 用户登录?您的 IAM 用户是否拥有 iam:PassRole 权限?您能否在此处查看您的 IAM 用户策略中所需的权限列表:docs.aws.amazon.com/elasticbeanstalk/latest/dg/…? 您是否也仅在 AWS 管理控制台或 API/CLI 中收到此错误?您可以尝试使用 root 帐户吗? 我正在使用控制台并通过 SSO 提供程序登录到角色。登录到实际帐户可以解决问题,但出于安全原因,这不是一个长期的选择,因此我将继续调查。 AWS 支持人员告诉我们,他们这边存在一个错误,导致 SSO 失败。我现在在同一条船上,需要创建临时 IAM 用户,直到他们修复它。 【参考方案1】:

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

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

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

第一次创建后,控制台会显示一个下拉列表,其中包含您之前创建的角色(通​​常命名为 aws-elasticbeanstalk-service-role),您可以重复使用此服务角色。

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

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

更新

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

【讨论】:

感谢您的详细回复。我们遇到了与@thefroatgt 类似的墙,具有完全相同的行为和解决方法,即它只能通过 IAM 用户工作,但在担任 IAM 角色时不起作用。后者适用于所有三个场景,通过 AWS 控制台或通过 AWS CLI(例如update-environment)和通过 AWS 开发工具包以编程方式进行跨账户,因此我们开始认为 AWS 方面可能确实存在更改问题,而不是我们通常的许可问题。我们可以在各种帐户中可靠地重现这两种情况。还有其他想法吗?非常感谢! 我注意到的一件事是生成的aws-elasticbeanstalk-service-role 的信任关系具有sts:ExternalId == elasticbeanstalk 的条件。从概念上讲,我可以看到这种混乱的代理保护可能被认为是有用的,但还没有看到其他自动生成的角色促进了它。出于对可能尚未提交sts:ExternalId 的不同代码路径的绝望和猜测,我暂时删除了该条件,但不出所料,它也没有任何区别。 还有一个障碍,即使您登录到用户创建环境,您也无法在控制台上以角色查看该环境,它会将您踢回环境列表。跨度> 作为参考,越来越多的用户遇到此问题,例如在Error creating new Environment: "Invalid service role" (Elastic Beanstalk forum) 和EB deployment OptionName: 'ServiceRole' (Utoolity Q&A forum) 中讨论。 @SteffenOpel 现在应该已修复。如果您仍然遇到问题,请告诉我们。【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

我是对的,问题与联合用户有关。 forums.aws.amazon.com/thread.jspa?threadID=212981。即将修复错误

以上是关于登录角色时出现 AWS Elastic Beanstalk ServiceRole 错误的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk 使用 CLI 部署时出现 Botocore 错误

上传 Flask 应用程序时出现 AWS Elastic Beanstalk 错误

Laravel 7- AWS - 运行“php artisan migrate”时出现 Elastic Beanstalk + RDS 错误

Spring Boot版本升级-在aws elastic beanstalk中部署时出现mysql错误

将 asp.net core web api 部署到 aws elastic beanstalk 时出现错误 404

使用 AWS Elastic Beanstalk 部署 Django 应用程序时出现 502 Bad Gateway nginx/1.20.0 错误