#amazon-web-services #amazon-iam #continuous-delivery #amazon-policy
#amazon-web-services #amazon-iam #непрерывная доставка #amazon-политика
Вопрос:
Я хочу настроить CI / CD с помощью GitHub Actions, который создает новую версию приложения в AWS Elastic Beanstalk всякий раз, когда новый код фиксируется и передается. Вот рабочий процесс .yml
:
name: Build Frontend and Deploy
on:
push:
branches: [ master ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: '12'
- name: Install app dependencies
run: npm install
- name: Build sapper app
run: npm run build
- name: Create ZIP deployment package
run: zip -r deploy_frontend.zip ./
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: "us-east-1"
- name: Upload package to S3 bucket
run: aws s3 cp deploy_frontend.zip s3://***-deploy-dev/
- name: Create new ElasticBeanstalk application version
run: |
aws elasticbeanstalk create-application-version
--application-name ***
--source-bundle S3Bucket="***",S3Key="deploy_frontend.zip"
--version-label "ver-${{ github.sha }}"
--description "commit-sha-${{ github.sha }}"
- name: Deploy new ElasticBeanstalk application version
run: |
aws elasticbeanstalk update-environment
--environment-name ***
--version-label "ver-${{ github.sha }}"
Примечание: я использую ***
, чтобы скрыть имя приложения и среды
Ошибка сборки на Deploy new ElasticBeanstalk application version
этапе. Полная ошибка
Run aws elasticbeanstalk update-environment
aws elasticbeanstalk update-environment
--environment-name ***
--version-label "ver-44d23ff7b95541c3527b0a7f156c1377d3fdc217"
shell: /bin/bash -e {0}
env:
AWS_DEFAULT_REGION: us-east-1
AWS_REGION: us-east-1
AWS_ACCESS_KEY_ID: ***
AWS_SECRET_ACCESS_KEY: ***
An error occurred (InsufficientPrivilegesException) when calling the UpdateEnvironment operation: Access Denied
Error: Process completed with exit code 255.
Тем не менее, я думаю, что я настроил соответствующие разрешения в политиках AWS. Вот политика для пользователя github actions:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "elasticbeanstalk:UpdateEnvironment",
"Resource": "arn:aws:elasticbeanstalk:us-east-1:917801217495:environment/appname/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"elasticbeanstalk:ListPlatformBranches",
"elasticbeanstalk:DescribeAccountAttributes",
"elasticbeanstalk:CreateStorageLocation",
"elasticbeanstalk:CheckDNSAvailability"
],
"Resource": "*"
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "elasticbeanstalk:*",
"Resource": [
"arn:aws:elasticbeanstalk:*:917801217495:applicationversion/*/*",
"arn:aws:elasticbeanstalk:us-east-1:917801217495:environment/appname/*",
"arn:aws:elasticbeanstalk:us-east-1:917801217495:application/appname"
]
}
]
}
Опять же, я заменил имя своего приложения на appname
.
Я даже попробовал это в симуляторе политики, и политика работает так, как ожидалось. В чем здесь может быть проблема?
Ответ №1:
Я следовал руководству из https://documentation.codeship.com/basic/continuous-deployment/deployment-to-elastic-beanstalk/#iam-policies и это работает. В принципе, вам также необходимо настроить разрешения во всех связанных службах elastic beanstalk, а не только в elastic beanstalk.