0

私は、LambdaにデプロイするCloudformation SAMスタックを使用してAWS Codepipelineをセットアップしようとしており、パイプラインコンソールからこれを実行しています。パイプラインはCodecommitプロセスのクローンとCodebuildのビルドプロセスを渡しますが、CloudFormを使用した展開は失敗します。CodePipelineがSAMテンプレートyamlファイルを見つけることができません

私は、次のエラーメッセージが出ます:私はかなり密接ドキュメント(http://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html)を、次のしてきたとcodepipeline設定フォーム(テンプレートファイル)のフィールド16で、私はsamTemplateを入れてきた

Action execution failed Invalid TemplatePath: MyAppBuild::samTemplate.yml

を。

私はまた、私のrepo(プロジェクトのルートでもあります)のルートにsamTemplate.ymlを持っています。

私はCodebuild出力成果物名とCloudformation入力成果物名を一致させており、それらは正確に一致しています。

ここに何か不足していますか? CloudForm展開プロセスでSAMテンプレートを認識させるにはどうすればよいですか?

EDIT 1 CodePipelineを直接使用する代わりに、Codestarを使用するように切り替えました。私のbuildspec.ymlに特別なものはありませんが、もし誰かが興味があれば、それは下です。 CodeBuild、結果として作成されるzipファイルに新しい人のために心に留めておくべき

version: 0.2 

phases: 
    install: 
    commands: 
     - echo "install" 
    pre_build: 
    commands: 
     - echo "pre_build" 
    build: 
    commands: 
     - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.json 
artifacts: 
    type: zip 
    files: 
    - template-export.json 

ことの一つは、最終的な展開(に転送されますzipファイルビルド操作のルート・レベルのディレクトリであり、IS私の場合、ラムダ)。

+0

buildspec.ymlを含めることはできますか? – Unsigned

答えて

1

ビルドステージの出力は、CloudFormationアクションに渡す必要があると私は信じています。ビルド出力がNewSamTemplate.yaml

と呼ばれているチュートリアルで

だからあなたはbuildspec.ymlあなたにAWS cloudformationパッケージのコマンドを追加する必要がMyAppBuild::NewSamTemplate.yml

1

にごTemplatePathをアップデートしてみてください。

aws cloudformation package --debug --template-file <YourSamTemplate.yml> --s3-bucket <YourbucketName> --output-template-file <YourOutputSamTemplate.yml> 

ここでYourSamTemplate.ymlはプロジェクトルートのsamTemplate.ymlの名前です。 とYourOutputSamTemplate.ymlは、クラウドフォーメーションパッケージコマンドを実行した後に出力ファイルに与える新しい名前です。

次の段階では、入力アーティファクトをawsコードビルドステージの出力として定義し、この入力アーティファクトを使用してテンプレートをマッピングする必要があります。

build-output::YourOutputSamTemplate.yml 
関連する問題