問題タブ [aws-codepipeline]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - 不明な Cloudformation エラー / 変更セットの実行に失敗しました
Java AWS ラムダ関数を Codepipeline -> Cloudformation 経由でデプロイするように設定していますが、Cloudformation で問題が発生しています。以前に Terraform を使用したことがあるので、一般的な概念は理解しています...
明確にするために、私のコードは Codecommit リポジトリに格納されており、すべて Codestar によってセットアップされているため、1 段階の 2 段階のデプロイ (変更セットの生成、変更セットの実行) で Codepipeline を作成しました。
今のところ、Codestar がリポジトリで作成したサンプルの template.yml ファイルをマークアップしているだけなので、HelloWorld は参照しています。
template.yml ファイルに加えて、Codebuild 用の buildspec.yml ファイルもありますが、ビルド プロセスは正常に完了します。
以下は私の template.yml cloudformation スクリプトです。Codepipeline デプロイ ステージの ChangeSet ステップは正常に完了しますが、ExecuteChangeset ステップは失敗し、「理由が提供されていません」(非常に役立ちます)。詳細リンクをクリックすると、実行ステップの Cloudformation ページが表示されますが、実際にはエラーは表示されません。私が期待する追加/削除手順のいくつかを示していますが、すべてを実行する必要があるとは限りません。「実行」をクリックすると、次のエラーで失敗します。
ここで何が間違っていますか?私は Fn::GetAtt 呼び出しをよく理解していませんが、いくつかの異なる方法を試しましたが、喜びはありませんでした。
**何が問題なのかを特定することに加えて、2 つの質問があります。
Fn::GetAtt 関数呼び出しで参照する必要があるものを正確に説明してください。呼び出そうとしているリソースの先頭に指定したリソース名ですか (例: GetHelloWorld)? または、そのリソースのプロパティとして提供される明示的な名前 (つまり、FunctionName)?
Lambda 関数の宣言では、イベント トリガーをインラインでセットアップしようとしています。これは、Lambda 関数を参照する必要があります。Lambda 関数リソース内にネストされた Event 宣言内から Lambda 関数リソースを参照できますか??
以下は私の template.yml ファイルです。
amazon-web-services - Smarty ファイルは、Elastic Beanstalk、CodePipeline、および CodeCommit を使用して再コンパイルされません
Elastic Beanstalk を使用しており、CodeCommit と CodePipeline を使用してアプリケーションをデプロイしています。テンプレートには Smarty を使用しています。アプリケーションの新しいバージョンをデプロイするたびにすべてのテンプレートが再コンパイルされるのを避けるために、コンパイル済みのテンプレート ファイルを/var/app/current/
ディレクトリの外に置き、デプロイのたびに削除されるようにしたいと考えています。
しかし、これを行うと、元のテンプレート ファイルが更新されても、Smarty はコンパイルされたテンプレート ファイルを更新しません。原因を調べるために調査しました。EC2 インスタンスの元のテンプレート ファイルを見ると、最終更新日はすべて 1979-12-31 05:08:00 です。
Elastic Beanstalk は、デプロイ時にファイルの変更日を保持していないようです。CodeCommit または CodePipeline で元の変更日が失われている可能性がありますか?
私の推測では、Smarty はファイルの変更日を見て、コンパイルされたファイルが最新かどうかを判断していると思います。また、コンパイルされたテンプレートは元のテンプレートよりも新しいため、最新でなくても最新であると見なされます。
新しい展開ごとにコンパイルされたテンプレートを削除することを除いて、この問題を解決する方法についてのアイデアはありますか? Elastic Beanstalk に変更時間を保持させる方法はありますか? または、ファイルの変更日以外に、テンプレート ファイルが更新されたことを Smarty に認識させる方法はありますか?