Возможно ли сделать кросс-аккаунт и одно и то же аккаунт в одном конвейере? - PullRequest
0 голосов
/ 26 марта 2020

Я выполняю перекрестное развертывание учетной записи в AWS от моей учетной записи развертывания до промежуточной учетной записи, у меня есть 2 отдельных конвейера для API и интерфейсного приложения.

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

  1. Развертывание стеков формирования облака API от учетной записи развертывания до промежуточной учетной записи - успешно это удалось.
  2. Развертывание одного стека формирования облака в самой учетной записи развертывания - не удалось, возможно ли это? Если это возможно, как это сделать?

Заранее спасибо

1 Ответ

0 голосов
/ 27 марта 2020

CodePipeline состоит из этапов (логических) и действий (Source / Build / Deploy et c).

Каждое действие может выполняться в локальной учетной записи или в перекрестной учетной записи. Как происходит это волшебство c?

Каждое действие имеет свойство roleArn. Эту роль CodePipeline «берет на себя» при выполнении этого действия. Если эта роль, указанная в свойстве roleArn, находится в локальной учетной записи (или свойство имеет значение null), действие выполняется в локальной учетной записи. Если роль, указанная в свойстве roleArn, является перекрестной учетной записью, действие будет выполняться для другой учетной записи.

Выполните следующую команду для проверки:

$ aws codepipeline get-pipeline --name <name> --region us-east-1 

Результат будет выглядеть примерно так (см. вторая последняя строка):

            "name": "Deploy",
            "actions": [
                {
                    "name": "Deploy",
                    "actionTypeId": {
                        "category": "Deploy",
                        "owner": "AWS",
                        "provider": "CloudFormation",
                        "version": "1"
                    },
                    "runOrder": 1,
                    "configuration": {
                        "ActionMode": "CREATE_UPDATE",
                        "Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND",
                        "RoleArn": "arn:aws:iam::0123456789012:role/CrossAccount_Role",
                        "StackName": "Cx-Account",
                        "TemplatePath": "SourceArtifact::template.json"
                    },
                    "outputArtifacts": [],
                    "inputArtifacts": [
                        {
                            "name": "SourceArtifact"
                        }
                    ],
                    "roleArn": "arn:aws:iam::0123456789012:role/CrossAccount_Role",
                    "region": "us-east-1"
                }

Развертывание одного стека формирования облака в самой учетной записи развертывания - Не удалось, возможно ли это? Если это возможно, как это сделать?

Теперь у вас есть ключ для запуска действия в любой учетной записи, которую вы хотите. Создайте действие как обычно и не указывайте roleArn для самого действия, а CodePipeline выполнит операцию облачной информации в самой учетной записи развертывания (где находится конвейер).

...