3

배포 할 SAM 응용 프로그램과 CodePipeline 설치가 있습니다. 내 파이프 라인에서 SAM의 YAML 파일로 매개 변수를 전달하려고합니다. 나는 ParameterOverrides를 사용하여 시도하지만 여전히 얻을 수가 :CodeForm에서 CloudFormation 전달 매개 변수

매개 변수 : [프로그램 응용] 서비스 값 (이 있어야합니다 AmazonCloudFormation, 상태 코드 : 400, 오류 코드 : ValidationError, 요청 ID : 46d1dfd6-9a9a-11e7-a59d-을 999618d6a174)

sam.yml 매개 변수

AWSTemplateFormatVersion : '2010-09-09' 
Transform: AWS::Serverless-2016-10-31 
Parameters: 
    AppName: 
    Type: String 
    Description: Prefix for resources 

매개 변수를 정의하는 부분을 무시 definations :

- Name: ExecuteChangeSet 
     Actions: 
     - Name: Lambda 
     ActionTypeId: 
      Category: Deploy 
      Owner: AWS 
      Version: 1 
      Provider: CloudFormation 
     Configuration: 
      ActionMode: CHANGE_SET_EXECUTE 
      ChangeSetName: !Sub 
      - '${PipelineName}-lambda' 
      - {PipelineName: !Ref PipelineName} 
      StackName: !Sub 
      - '${PipelineName}-lambda' 
      - {PipelineName: !Ref PipelineName} 
      ParameterOverrides: !Sub '{"AppName": "${PipelineName}-lambda"}' 

뭐가 잘못 되었나요?

답변

2

CHANGE_SET_EXECUTE 동작 모드에서 ParameterOverrides을 적용하려고하는 것 같습니다. 내가 잘못 생각하지 않는다면, 이것은 CloudFormations ExecuteChangeSet 액션에 맵핑되며, 이는 Parameters 속성을 갖지 않습니다.

변경 사항을 만들 때이 매개 변수를 적용하면됩니다. 이 코드 모드는 CHANGE_SET_REPLACE 동작 모드의 CodePipeline에서 수행됩니다. 또는 CREATE_UPDATE을 살펴볼 수도 있습니다. 자세한 내용은 AWS CloudFormation Configuration Properties을 확인하십시오. 여기

작성하는 샘플의 다음 변경

- Name: CreateChangeSet 
    Actions: 
    - Name: Lambda 
     ActionTypeId: 
     Category: Deploy 
     Owner: AWS 
     Version: 1 
     Provider: CloudFormation 
     InputArtifacts: 
     - Name: BuildOutputArtifact 
     Configuration: 
     ActionMode: CHANGE_SET_REPLACE 
     ChangeSetName: !Sub 
      - '${PipelineName}-lambda' 
      - {PipelineName: !Ref PipelineName} 
     StackName: !Sub 
      - '${PipelineName}-lambda' 
      - {PipelineName: !Ref PipelineName} 
     ParameterOverrides: !Ref ProjectParameterOverrides 
     TemplatePath: BuildOutputArtifact::SamDeploymentTemplate.yaml 
- Name: ExecuteChangeSet 
    Actions: 
    - Name: Lambda 
    ActionTypeId: 
     Category: Deploy 
     Owner: AWS 
     Version: 1 
     Provider: CloudFormation 
    Configuration: 
     ActionMode: CHANGE_SET_EXECUTE 
     ChangeSetName: !Sub 
     - '${PipelineName}-lambda' 
     - {PipelineName: !Ref PipelineName} 
     StackName: !Sub 
     - '${PipelineName}-lambda' 
     - {PipelineName: !Ref PipelineName} 
설정 실행