使用 AWS CodeBuild 和 EB CLI 部署到 AWS Elastic Beanstalk
Deploying to AWS Elastic Beanstalk using AWS CodeBuild and EB CLI
我正在尝试设置 AWS Codebuild 以将应用程序部署到 AWS Elastic Beanstalk。
问题是 EB CLI 似乎无法从 AWS CodeBuild 获得(看起来应该是这样,阅读本文...https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli-codebuild.html)
因此,当我在 CodeBuild 上指定 eb cli 命令时:
version: 0.2
phases:
install:
commands:
- echo Logging into Amazon ECR...
- eb init --platform "multi-container-docker-18.03.1-ce-(generic)" --region us-west-1 application
我得到:
/codebuild/output/tmp/script.sh: eb: not found
我还尝试使用以下命令安装 CLI:
- pip install --upgrade awsebcli awscli
- eb init --platform "multi-container-docker-18.03.1-ce-(generic)" --region us-west-1 application
并扩展生成的 AWS CodeBuild 角色,使其具有对 Elastic Beanstalk 的完全访问权限
但是我得到这个错误:
ERROR: NotAuthorizedError - Operation Denied. Access Denied
我在命令中添加了一个 --debug
标志,这是确切的错误:
2018-09-10 13:33:55,151 (DEBUG) ebcli.lib.aws : Making api call: (elasticbeanstalk, describe_configuration_settings) to region: us-west-1 with args:{'ApplicationName': 'application', 'EnvironmentName': 'staging'}
2018-09-10 13:33:55,495 (DEBUG) ebcli.lib.aws : Response: {'Error': {'Type': 'Sender', 'Code': 'InsufficientPrivilegesException', 'Message': 'Access Denied'}, 'ResponseMetadata': {'RequestId': '32f4e739-1694-4aa2-9e2e-076ec4861ae7', 'HTTPStatusCode': 403, 'date': 'Mon, 10 Sep 2018 13:33:55 GMT', 'RetryAttempts': 0}}
2018-09-10 13:33:55,495 (DEBUG) ebcli.lib.aws : API call finished, status = 403
我错过了什么吗?如何正确使用 CodeBuild 中的 EB CLI?
事实证明,EBCLI 需要的不仅仅是 Elastic Beanstalk 策略才能起作用。这就是为什么即使我附加了 Elastic Beanstalk 的完全访问策略,我仍然收到身份验证错误的原因。
为了理解所需的策略,我所做的是创建一个具有对所有服务的完全访问权限的 IAM 角色,并将其附加到 AWS CodeBuild 项目。
然后,转到 IAM Roles
-> Role name
-> Access advisor
您可以准确检查项目使用的策略,以便为服务创建适当的角色.
备注:
- 最近 activity 通常会在 4 小时内出现。 (您可能不会立即看到 Access Advisor 中使用的所有服务)
- 您可以首先使用 AWSElasticBeanstalkFullAccess 内置策略而不是 AdministratorAccess 策略来查明正在使用哪些服务eb 客户端
我正在尝试设置 AWS Codebuild 以将应用程序部署到 AWS Elastic Beanstalk。
问题是 EB CLI 似乎无法从 AWS CodeBuild 获得(看起来应该是这样,阅读本文...https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli-codebuild.html)
因此,当我在 CodeBuild 上指定 eb cli 命令时:
version: 0.2
phases:
install:
commands:
- echo Logging into Amazon ECR...
- eb init --platform "multi-container-docker-18.03.1-ce-(generic)" --region us-west-1 application
我得到:
/codebuild/output/tmp/script.sh: eb: not found
我还尝试使用以下命令安装 CLI:
- pip install --upgrade awsebcli awscli
- eb init --platform "multi-container-docker-18.03.1-ce-(generic)" --region us-west-1 application
并扩展生成的 AWS CodeBuild 角色,使其具有对 Elastic Beanstalk 的完全访问权限
但是我得到这个错误:
ERROR: NotAuthorizedError - Operation Denied. Access Denied
我在命令中添加了一个 --debug
标志,这是确切的错误:
2018-09-10 13:33:55,151 (DEBUG) ebcli.lib.aws : Making api call: (elasticbeanstalk, describe_configuration_settings) to region: us-west-1 with args:{'ApplicationName': 'application', 'EnvironmentName': 'staging'}
2018-09-10 13:33:55,495 (DEBUG) ebcli.lib.aws : Response: {'Error': {'Type': 'Sender', 'Code': 'InsufficientPrivilegesException', 'Message': 'Access Denied'}, 'ResponseMetadata': {'RequestId': '32f4e739-1694-4aa2-9e2e-076ec4861ae7', 'HTTPStatusCode': 403, 'date': 'Mon, 10 Sep 2018 13:33:55 GMT', 'RetryAttempts': 0}}
2018-09-10 13:33:55,495 (DEBUG) ebcli.lib.aws : API call finished, status = 403
我错过了什么吗?如何正确使用 CodeBuild 中的 EB CLI?
事实证明,EBCLI 需要的不仅仅是 Elastic Beanstalk 策略才能起作用。这就是为什么即使我附加了 Elastic Beanstalk 的完全访问策略,我仍然收到身份验证错误的原因。
为了理解所需的策略,我所做的是创建一个具有对所有服务的完全访问权限的 IAM 角色,并将其附加到 AWS CodeBuild 项目。
然后,转到 IAM Roles
-> Role name
-> Access advisor
您可以准确检查项目使用的策略,以便为服务创建适当的角色.
备注:
- 最近 activity 通常会在 4 小时内出现。 (您可能不会立即看到 Access Advisor 中使用的所有服务)
- 您可以首先使用 AWSElasticBeanstalkFullAccess 内置策略而不是 AdministratorAccess 策略来查明正在使用哪些服务eb 客户端