問題タブ [aws-sam-cli]
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 - AWS SAM CodePipelines はコミットごとに全体を再構築しますか?
基本リソース (iam など)、データ ウェアハウジング、ラムダ、sns、mongodb などのほとんどのサーバーレス リソースで構成される分散型アプリを AWS で構築しています。
これを OTAP 経由でデプロイするために、AWS ツールを検討しています。
これは、CodeCommit の 1 つのリポジトリが CodePipeline をトリガーし、これらのコンポーネントが適切な場所に配置されることを意味します (順序制御を実現します)。
- CF スタックのデプロイ
- CodeBuild を使用して SAM リソースをパッケージ化 (AWS sam パッケージ) -> SAM リソースごとに 1 つ
- ビルドステップを使用して変更セットを作成 -> SAM リソースごとに 1 つ
- ビルドステップを使用して変更セットを実行 -> 変更セットごとに 1 つ
例として、そのラムダの .js ファイルの横にあるすべてのラムダに buildspec.yml が必要です。また、ラムダは SAM テンプレート (独自のテンプレートまたはグループ化されたテンプレート) で構築する必要があります。また、それぞれの build-change-set ステップと execute-change-set ステップ。
私の質問: この設定で、分散アプリ全体の 1 つのリポジトリに対して、多くのラムダのうちの 1 つのタイムアウトのような小さなばかげたことを 1 つ変更した場合、これはアプリのすべての要素を再デプロイして再構築しますか?
いいえの場合、神に感謝しますが、どのように機能しますか? CodeCommit は、変更のみではなく、すべてのソースの zip 全体を S3 に送信します。そのため、すべての要素がトリガーされ、スタック (CF または SAM) の展開中に、基盤となる技術がスマートになり、変更が必要なことだけを行うことができます。それでも、CodePipeline のすべての要素 (および多数の要素) がトリガーされますが、これはデプロイ全体をできるだけ早く完了することが目標である場合には非効率的です。
はいの場合、それはまずいので、CodeCommit API からのみ変更を抽出するパイプラインでカスタム コード (ラムダ) を使用して別のソリューションを見つけ、cretae-change-set を実行して実行します。aws sdk を使用する主な欠点は、オン オーダー制御に屈することと、「aws sam パッケージ」などのいくつかのものを sdk で使用できないことです。
aws-api-gateway - Api メソッドで ApiKeyRequired を有効にする方法は?
API Gateway の標準 API キー機能を使用したい。標準の cloudformation を使用する場合、これはメソッドのプロパティ ApiKeyRequired を true に設定することで可能になります。SAMでこれを行うにはどうすればよいですか?
私はswaggerを使ってみましたが、うまくいかないようです:
助言がありますか?
amazon-web-services - 関数の呼び出し時に aws-sam-cli 公式チュートリアルでエラーが発生しました
以下の aws-sam-cli 公式チュートリアルを実行するとエラーが発生しました。
https://github.com/awslabs/aws-sam-cli#invoke-functions-locally
チュートリアルでは、以下のコマンドは関数を呼び出していると書かれています。
しかし、以下のチュートリアルを行ったところ、template.yaml に「HelloWorldFunction」というリソースがありました。
だから、私は以下のコマンドを挿入しました。
そして、エラーが発生しました。
macOS High Sierra 10.13.3 を使用しています。