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 выполнит операцию облачной информации в самой учетной записи развертывания (где находится конвейер).