Развертывание в AWS Elastic Beanstalk с использованием AWS CodeBuild и EB CLI - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь настроить AWS Codebuild для развертывания приложения в AWS Elastic Beanstalk.

Проблема в том, что кажется, что интерфейс командной строки EB недоступен из AWS CodeBuild (кажется, что так и должно быть, читая это ... https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli-codebuild.html)

Поэтому, когда я указываю команду eb cli в CodeBuild:

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

Я что-то упустил? Как правильно использовать интерфейс командной строки EB из CodeBuild?

1 Ответ

0 голосов
/ 10 сентября 2018

Оказывается, для работы EBCLI нужно нечто большее, чем просто политика Elastic Beanstalk. Вот почему я все еще получаю ошибку аутентификации, даже если я приложил политику полного доступа для Elastic Beanstalk.

Чтобы понять, какие политики необходимы, я создал роль IAM с полным доступом ко всем службам и прикрепил ее к проекту AWS CodeBuild.

Затем, перейдя к IAM Roles -> Role name -> Access advisor, вы можете точно проверить, какие политики использовались в проекте, чтобы вы могли создать правильную роль для службы.

Примечания:

  • Последние действия обычно появляются в течение 4 часов. (Скорее всего, вы не сразу увидите все службы, используемые в Access Advisor)
  • Можно начать с использования встроенной политики AWSElasticBeanstalkFullAccess вместо политики AdministratorAccess , чтобы определить, какие службы используются с клиентом eb
...