問題タブ [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.
amazon-web-services - AWS CodePipeline - CloudFormation でのデプロイ: アクションの実行に失敗しました機能が必要です: [CAPABILITY_AUTO_EXPAND]
AWS CI/CD パイプラインを始めたばかりです。ラムダ関数 (および後で API ゲートウェイ) をデプロイするための単純なパイプラインを作成したいと考えています。
CodeCommit でコミット -> CodeBuild で CloudFormation パッケージを準備 -> CloudFormation にデプロイ
CodeCommit と CodeBuild は問題なく動作しますが、Deploy ステージ (CodePipeline 内) では常に次のエラーが発生します。
しかし、UI では CAPABILITY_AUTO_EXPAND を選択できず、CAPABILITY_IAM のみを選択でき、問題は解決しません。
CLI 経由でデプロイを行う場合、CAPABILITY_AUTO_EXPAND オプションを設定できると思いますが、UI 経由で行いたいと考えています。
私に何ができる?
SAM テンプレート yaml:
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