AWS CodePipeline - развертывание в CloudFormation: сбой при выполнении действия Требуются возможности: [CAPABILITY_AUTO_EXPAND]
Я только начал с конвейера AWS CI/CD. Я хочу сделать простой конвейер для развертывания лямбда-функции (а позже и шлюза API):
Фиксация в CodeCommit -> Подготовка пакета CloudFormation в CodeBuild -> Развертывание в CloudFormation
CodeCommit и CodeBuild работают довольно хорошо, но на этапе развертывания (в CodePipeline) я всегда получаю эту ошибку:
Но в пользовательском интерфейсе я не могу выбрать CAPABILITY_AUTO_EXPAND, только CAPABILITY_IAM, и это не решает проблему:
Если я выполняю развертывание через CLI, я думаю, что могу установить опцию CAPABILITY_AUTO_EXPAND, но я хочу сделать это через пользовательский интерфейс.
Что я могу сделать?
SAM шаблон yaml:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Returns the body
Resources:
TestFunction:
Type: AWS::Serverless::Function
Properties:
Handler: test.handler
Runtime: nodejs8.11.0
CodeUri: ./
Events:
TestAPI:
Type: Api
Properties:
Path: /test
Method: POST
2 ответа
Я (вроде) решил мою проблему с помощью ответа в этой теме: aws CAPABILITY_AUTO_EXPAND консоль веб-кода с облачной информацией
Похоже, что пользовательский интерфейс AWS не отображает эту опцию, и вам необходимо обновить конвейер через клиентскую среду AWS.
Я не знаю, как это сделать через пользовательский интерфейс, но в CloudFormation вы бы указали это в шаблоне на узле "Возможности", см. "Возможности" ниже.
Ниже приведен только фрагмент и не является правильно сформированным JSON для CloudFormation.
"Resources": {
"Pipeline": {
"Type": "AWS::CodePipeline::Pipeline",
"Properties": {
"ArtifactStore": {
"Location": {
"Fn::Join": [
"-",
[
"bubbleboy",
{
"Ref": "AWS::AccountId"
}
]
]
},
"Type": "S3"
},
"Name": {
"Ref": "AWS::StackName"
},
"RoleArn": {
"Fn::GetAtt": [
"PipelineRole",
"Arn"
]
},
"Stages": [
{
"Actions": [
{
"ActionTypeId": {
"Category": "Source",
"Owner": "AWS",
"Provider": "CodeCommit",
"Version": "1"
},
"Configuration": {
"RepositoryName": {
"Ref": "Repo"
},
"BranchName": {
"Ref": "Branch"
}
},
"Name": "Source",
"RunOrder": "1",
"OutputArtifacts": [
{
"Name": "Source-Artifact"
}
]
}
],
"Name": "SourceCode"
},
{
"Actions": [
{
"ActionTypeId": {
"Category": "Build",
"Owner": "AWS",
"Provider": "CodeBuild",
"Version": "1"
},
"Configuration": {
"ProjectName": {
"Ref": "CodeBuildStage1NetCoreCodeBuildProject1"
}
},
"Name": "Build",
"RunOrder": "1",
"OutputArtifacts": [
{
"Name": "Build-Artifact"
}
],
"InputArtifacts": [
{
"Name": "Source-Artifact"
}
]
}
],
"Name": "Build"
},
{
"Actions": [
{
"ActionTypeId": {
"Category": "Deploy",
"Owner": "AWS",
"Provider": "CloudFormation",
"Version": "1"
},
"Configuration": {
"ActionMode": "CHANGE_SET_REPLACE",
"StackName": {
"Fn::Join": [
"-",
[
{
"Ref": "AWS::StackName"
},
"deploy"
]
]
},
"Capabilities": "CAPABILITY_IAM",
"RoleArn": {
"Fn::GetAtt": [
"CreateChangesetCloudFormationRole1",
"Arn"
]
},
"ChangeSetName": {
"Ref": "AWS::StackName"
},
"TemplatePath": "Build-Artifact::Deploy.template",
"ParameterOverrides": {
"Fn::Join": [
"",
[
"{ \"YadaYadaBubbleBoyWebApiBucket\": { \"Fn::GetArtifactAtt\": [ \"Build-Artifact\", \"BucketName\" ] }, \"YadaYadaBubbleBoyWebApiKey\": { \"Fn::GetArtifactAtt\": [ \"Build-Artifact\", \"ObjectKey\" ] },\"DbBranch\":\"",
{
"Fn::If": [
"isstaging",
"master",
{
"Ref": "Branch"
}
]
},
"\"}\"DatabaseStack\":\"",
{
"Fn::If": [
"isstaging",
"database-stage",
{
"Ref": "DatabaseStack"
}
]
},
"\"}"
]
]
}
},
"Name": "CreateChangeset",
"RunOrder": "1",
"InputArtifacts": [
{
"Name": "Build-Artifact"
}
]
},
{
"ActionTypeId": {
"Category": "Deploy",
"Owner": "AWS",
"Provider": "CloudFormation",
"Version": "1"
},
"Configuration": {
"ActionMode": "CHANGE_SET_EXECUTE",
"StackName": {
"Fn::Join": [
"-",
[
{
"Ref": "AWS::StackName"
},
"deploy"
]
]
},
"Capabilities": "CAPABILITY_IAM",
"RoleArn": {
"Fn::GetAtt": [
"ExecuteChangesetCloudFormationRole1",
"Arn"
]
},
"ChangeSetName": {
"Ref": "AWS::StackName"
}
},
"Name": "ExecuteChangeset",
"RunOrder": "2"
}
],
"Name": "Deploy"
}
]
},
"DeletionPolicy": "Delete"
},