問題タブ [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 を介して Lambda を API と統合する際の API のカスタマイズ
問題
AWS SAM を使用して、Lambda と API Gateway の間の簡単な統合を実行しようとしています。ラムダの入力をカスタマイズしたい - いくつかのrequestTemplatesを適用します。しかし、それらは無視されているようです。
再現する手順
実行中:
出力は次のとおりです。
デフォルトのAPIが作成されたかのように動作するようです。イベントを印刷します。しかし、私の API 定義は完全に無視されているようです。適用されずに常に元のイベントを返しrequestTemplates
ます。症状:
- 私が闊歩する定義に何を入れても効果はありません。変更
produces
、不正な形式の闊歩をそこに置く - 無効な
RestApiId
(存在しない参照) を使用した場合 - 変更なし type
代わりに存在しないものを使用するとAWS::Serverless::Api
- 効果なし
環境
- サムのバージョン: 0.2.4
- OS:×
コード
私のtemplate.yml
:
私のswagger.yml
:
そしてlambda_function2.py
:
その他のリソース
このsam repo の例は、私が達成したいものとほとんど同じに見えます。どちらも機能しません。
node.js - nodejs6.10 ランタイムの呼び出しエラー: デーモンからのエラー応答: 許可される最小メモリ制限は 4MB です
Mac 用の docker を実行しており、docker ファイルを使用しています。また、docker-compose ファイルを使用して、同じブリッジ ネットワーク上に mysql docker インスタンスと sam ローカル インスタンスを作成しています。
ファイルを sam ローカル インスタンスにコピーし、mysql インスタンスを起動して実行することができました。
docker-compose --build を実行すると
API のいずれかのエンドポイントにヒットすると、次のエラーが表示されます: nodejs6.10 ランタイムの呼び出しエラー: デーモンからのエラー応答: 許可される最小メモリ制限は 4MB です
プロジェクトフォルダーだけの中にdocker-composeまたはdockerファイルなしでsam localを使用してこれを実行すると。この問題がわかりません。
私が知る限り、これは docker for mac が実行する基礎となる linux vm から来ています。これらのコンテナは LXC コンテナであり、最低 4 MB のメモリが必要です。
次を使用してこのイメージを実行すると:
docker run -it --memory-reservation 10000000 -v /var/run/docker.sock:/var/run/docker.sock -p 3000:3000 samlocal
私はまだこの問題を抱えています。これは、これがサムローカル内で新しいラムダコンテナをインスタンス化する際の問題であると私が信じるように導くものです.
コンテナー内から LXC の hostconfig ファイルを変更する方法があるかどうか、またはこの問題に対する他の解決策があるかどうかはわかりません。
私のsamlocal dockerfileとdocker-composeファイルは次のとおりです。
ドッカーファイル:
高山から:3.6
環境バージョン=0.2.4
RUN apk add --no-cache curl && \ curl -sSLO https://github.com/awslabs/aws-sam-local/releases/download/v ${VERSION}/sam_${VERSION}_linux_386.tar.gz && \ tar -C /usr/local/bin -zxvf /sam_${バージョン}_linux_386.tar.gz && \ apk デル カール && \ rm -f /sam_${バージョン}_linux_386.tar.gz
RUN apk add --no-cache py-pip && pip install awscli
WORKDIR /var/opt
露出3000
コピー 。.
ENTRYPOINT ["/usr/local/bin/sam"] CMD ["local","start-api","--host", "0.0.0.0","--docker-volume-basedir", "/1725_ecpo_lambda "]
DOCKER-COMPOSE ファイル:
バージョン: 「3」 サービス:
samlocal: ビルド: コンテキスト: ./ dockerfile: sam-local-docker.dockerfile ポート: - "3000:3000" ボリューム: - /var/run/docker.sock:/var/run/docker.sock ネットワーク: - バックエンド
db: ビルド: コンテキスト: ./ dockerfile: mysql-docker.dockerfile ポート: - 3306:3306 ボリューム: - db-data:/var/lib/mysql - /var/run/docker.sock:/var/run/docker .sock ネットワーク: - バックエンド
ネットワーク: バックエンド:
ボリューム: データベース データ:
amazon-cloudformation - SAM ローカル: SAM テンプレートの代わりに CloudFormation ファイルを直接使用できますか?
コンパイルされた CloudFormation ファイルを SAM Local で直接使用しようとしています。これを行う方法が見つかりません。これを成功させた人はいますか?