AWS CodeDeploy под AWS Обучение учетной записи - PullRequest
1 голос
/ 29 марта 2020

У меня возникли проблемы при развертывании кода с моей учетной записью AWS Educate. Первоначально, когда я настраивал вещи, я следовал этой статье.

https://hackernoon.com/deploy-to-ec2-with-aws-codedeploy-from-bitbucket-pipelines-4f403e96d50c?fbclid=IwAR3rezVMGpuQxTJ3AneOeTL2oMHjCKbQB5C5ouTLhJQ5gRp3JeL4GK0f53o

В нем говорится о настройке учетной записи службы IAM. Проблема в том, что AWS Educate позволяет создавать учетные записи, но не генерирует ключи. Чтобы развернуть приложения Spring Boot (и VueJS) в мои корзины s3 и ec2 из моего репозитория bitbucket, мне нужен ключ и секретный ключ и CodeDeploy Group.

Хорошо. Я смог использовать кнопку «Нажмите учетную запись» на странице labs.vocareum и получить ключи, однако, когда я пытаюсь создать группу развертывания кода, она запрашивает служебную роль, и я не знаете, где взять это?

1 Ответ

1 голос
/ 03 апреля 2020

Зачем нужна роль службы?

Роль службы используется службой CodeDeploy для выполнения действий вне CodeDeploy (то есть над другой службой, такой как S3).

AWS имеет особый подход к интеграции услуг. По сути, вы должны предоставить каждой службе, которую вы используете, явное разрешение на использование другой службы (даже если доступ остается в пределах одной и той же учетной записи). Сервису CodeDeploy не разрешено изменять вещи в S3. На самом деле, CodeDeploy даже не разрешено читать файлы с S3 без явного разрешения.

Вот официальное объяснение из документации [1]:

В AWS, Роли службы используются для предоставления разрешений службе AWS, чтобы она могла обращаться к ресурсам AWS. Политики, которые вы прикрепляете к роли службы, определяют, к каким AWS ресурсам сервис может получить доступ и что он может делать с этими ресурсами.

Что вы на самом деле делаете в соответствии со статьей о взломе

  1. вам нужна учетная запись пользователя с programmati c доступом к вашей aws учетной записи
  2. к учетной записи пользователя должна быть прикреплена политика, предоставляющая разрешение на загрузку файлов в S3 и запуск CodeDeploy развертывание -> вы предоставляете ключ доступа и секретный ключ доступа этого пользователя в Bitbucket, чтобы он мог загрузить материал в S3 и инициировать развертывание на основе вашей личности
  3. Не относится к шагам 1 и 2: Создать роль в AWS IAM [2], которая будет использоваться обеими службами (НЕ Bitbucket): CodeDeploy и EC2. Строго говоря, автор статьи hackernoon объединяет здесь два шага в один: вы создаете одну роль, которая используется обеими службами (как указано двумя различными принципалами в доверительных отношениях: ec2.amazon aws .com и codedeploy.us-west-2.amazon aws .com ). Обычно это не , как политики IAM должны быть настроены, потому что это нарушает принцип предоставления наименьших привилегий [4], поскольку экземпляры EC2 получают разрешения от политики AWSCodeDeployRole , которая, вероятно, не нужна насколько я вижу. Но это всего лишь философская заметка здесь. Технически, все шаги, упомянутые в статье о хакернах, должны работать.

Итак, что вы действительно делаете:

  • предоставление CodeDeploy разрешения на выполнение различных действий внутри вашей учетной записи, например как просмотр того, какие экземпляры EC2 вы запустили et c. (это указано в политике AWSCodeDeployRole [3])
  • предоставление разрешения EC2 на чтение ревизии, которая была загружена на S3 (это указано в политике AmazonS3FullAccess)

Для получения вернуться к вашему вопросу ...

Однако, когда я пытаюсь создать группу развертывания кода, она запрашивает служебную роль, и я не уверен, где ее получить?

Вам необходимо самостоятельно создать роль службы внутри службы IAM (см. [2]). Я не знаю, поддерживается ли это AWS Обучением, но я предполагаю, что это должно быть. После создания служебной роли вы ДОЛЖНЫ назначить ее в группу CodeDeploy (это та точка, в которой вы застряли прямо сейчас). Кроме того, вы должны назначить эту же сервисную роль своему профилю экземпляра EC2.

Ссылки

[1] https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html
[2] https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles -creatingrole-service-console
[3] https://github.com/SummitRoute/aws_managed_policies/blob/master/policies/AWSCodeDeployRole
[4] https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant -последние привилегии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...