AWS CodePipeline部署失败:角色缺少elasticbeanstalk:CreateApplicationVersion权限
解决CodePipeline部署到Elastic Beanstalk的权限错误问题
你犯了一个常见的新手错误:你把权限策略附加到了Elastic Beanstalk的角色上,但CodePipeline的部署阶段使用的是它自己的服务角色,而非aws-elasticbeanstalk-ec2-role或aws-elasticbeanstalk-service-role。
按照以下步骤修复:
找到你的CodePipeline服务角色
- 打开CodePipeline控制台,进入出问题的流水线
- 点击右上角的「设置」→「服务角色」,记录下这个角色的名称(通常格式为
AWSCodePipelineServiceRole-<区域>-<流水线名称>)
给CodePipeline服务角色附加权限
- 打开IAM控制台,搜索刚才记录的角色名称
- 点击「添加权限」→「附加策略」
- 选择你已创建的
ElasticbeanstalkCreateApplicationVersion策略,点击「附加策略」
(可选)为避免后续出现其他权限问题,建议给这个角色添加更完整的Elastic Beanstalk部署权限,比如创建包含以下内容的自定义策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:UpdateEnvironment", "elasticbeanstalk:DescribeEnvironments", "elasticbeanstalk:DescribeApplications" ], "Resource": [ "arn:aws:elasticbeanstalk:<你的AWS区域>:<你的账号ID>:application/<你的EB应用名称>", "arn:aws:elasticbeanstalk:<你的AWS区域>:<你的账号ID>:environment/<你的EB应用名称>/<你的EB环境名称>" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::<你的CodePipeline存储桶名称>/*" } ] }
完成后,回到CodePipeline控制台,重新运行失败的部署阶段,错误应该会消失。
内容的提问来源于stack exchange,提问作者Farrukh Waheed
相关产品推荐
相关产品推荐

