3

私は、SAMアプリケーションとそれを展開するためのCodePipelineセットアップを持っています。私は、私のパイプラインからSAMのYAMLファイルにパラメータを渡したいと思っています。私はParameterOverridesを使用してみましたが、まだ取得するように見える:CloudFormationはCodePipelineからパラメータを渡します

パラメータ:[AppNameは]サービスの値(持っている必要があります:AmazonCloudFormation;ステータスコード:400;エラーコード:ValidationErrorを、リクエストID:46d1dfd6-9a9a-11e7-a59d-を999618d6a174)

マイsam.ymlパラメータdefinations

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

パラメータを定義する部分が上書きされます:

- 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プロパティがありません。

これに対する解決策は、変更セットを作成するときにパラメータを適用することです。これは、CodePipelineでCHANGE_SET_REPLACEアクションモードで行われます。また、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} 
を設定して実行した後、作成するサンプルです
関連する問題