我正在通过 SSO 登录角色,并尝试创建一个新的 Elastic Beanstalk 环境(如果重要,则为最新的 tomcat),但收到以下错误,该错误甚至阻止我开始构建环境:
(Namespace: 'aws:elasticbeanstalk:environment', OptionName: 'ServiceRole'): Invalid service role
即使我尝试克隆现有环境,也会发生这种情况。我尝试自动生成服务角色并手动创建一个。两者都给出了错误。当我登录具有相同权限的用户时,不会发生此错误。
当您使用 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
我昨天遇到了同样的错误,今天使用相同的堆栈遇到了不同的错误“无法分配角色。请验证您是否有权传递此角色:XXXXXX。”
我解决了将此策略“AWSElasticBeanstalkFullAccess”分配给我的用户
在这里您可以阅读更多内容: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-roles.html#concepts-roles-user
AWS 支持论坛上似乎有一个帖子:https://forums.aws.amazon.com/thread.jspa?messageID=670359
我在尝试通过跨账户 iam 策略访问 beanstalk 环境时遇到同样的问题。
我认为使用属于该特定 AWS 账户的 IAM 账户登录控制台可以解决该问题。我确信 AWS 人员正在努力解决这个问题
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-servicerole.html
由于权限问题,Elastic Beanstalk 服务无法 始终为您成功创建此服务相关角色。 因此,控制台尝试显式创建它。为确保您的 帐户具有此服务相关角色,至少创建一个环境 使用控制台后,配置要启用的托管更新 在创建环境之前。
当您开始构建环境时,请确保以下内容
现在
如果您想创建自定义策略
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": "*"
}
]
}