問題タブ [aws-sam]

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.

0 投票する
2 に答える
760 参照

amazon-web-services - AWS CodePipeline - CloudFormation でのデプロイ: アクションの実行に失敗しました機能が必要です: [CAPABILITY_AUTO_EXPAND]

AWS CI/CD パイプラインを始めたばかりです。ラムダ関数 (および後で API ゲートウェイ) をデプロイするための単純なパイプラインを作成したいと考えています。

CodeCommit でコミット -> CodeBuild で CloudFormation パッケージを準備 -> CloudFormation にデプロイ

CodeCommit と CodeBuild は問題なく動作しますが、Deploy ステージ (CodePipeline 内) では常に次のエラーが発生します。

CodePipeline エラー

しかし、UI では CAPABILITY_AUTO_EXPAND を選択できず、CAPABILITY_IAM のみを選択でき、問題は解決しません。

CodePipeline デプロイ構成

CLI 経由でデプロイを行う場合、CAPABILITY_AUTO_EXPAND オプションを設定できると思いますが、UI 経由で行いたいと考えています。

私に何ができる?

SAM テンプレート yaml:

0 投票する
2 に答える
3465 参照

amazon-web-services - レイヤーメソッドを使用するラムダロジックを単体テストする方法は?

こんにちは、AWS Lambda があり、それにレイヤーを追加したいと考えていました。ラムダの単一のメソッドをテストできるようにしたいと思います。ただし、それらの多くはレイヤーロジックを使用しているため、簡単ではないようです。これを行うための最良のアプローチは何ですか?

1つのアプローチは、レイヤーをパッケージ化することです。ホストはどこかにあり、それを依存関係として使用します。その場合、わざわざレイヤーを使用するのはなぜですか?

私が考えているもう 1 つのアイデアは、sam-cli を使用してラムダをローカルにデプロイすることです。ラムダロジック全体をテストするためにそれを使用する方法は知っていますが、メソッドを個別に単体テストする方法はわかりません;/あなたの経験は何ですか? 韓国語

編集。私の解決策

  • パイテストを追加

  • すべてのテストをtestディレクトリに配置する

  • テストを呼び出すテスト ラムダ ハンドラを追加する

import pytest def lambda_handler(event, _): res = pytest.main(['-x', './tests']) return res

  • 以前に作成したラムダ ハンドラーを指す template.yml を追加します。

Resources: MyFunction: Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: src/ Handler: test.lambda_handler Runtime: python3.6 Events: MyInfo: Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api Properties: Path: /my-service/test Method: get Environment: Variables: ELASTICSEARCH_DOC_TYPE: "article" ELASTICSEARCH_INDEX: "artilces" ELASTICSEARCH_HOST: "elastic" ELASTICSEARCH_PORT: "9200" ELASTICSEARCH_URL: "http://my_elastic.com:9200" Layers: - arn:aws:lambda:eu-west-1:XXXXXXXXXXXXX:layer:lambda_layer:37

  • 走るsam local invoke --no-event