web-dev-qa-db-ja.com

テンプレートを使用してawsラムダイベントにパラメーターを追加する

クラウド形成テンプレートを使用してラムダ関数イベントに(パス)パラメーターを追加するにはどうすればよいですか?

奇妙な使用:

DeleteItem:
          Type: Api
          Properties:
            Path: /item/{id}
            Method: delete
            Request:
            Parameters:
              Paths:
                id: true

aws-sam-cliを使用して動作します。ただし、クラウドフォーメーションを使用してデプロイしようとすると、プロパティRequestが定義されていないと表示されます。このリクエストのアイデアは サーバーレスドキュメント から入手しましたが、ローカルでのみ機能するようです。テンプレートでこれを行う方法に関するドキュメントが見つからないため、助けていただければ幸いです。

5
Zachscs

サーバーレスフレームワークは、SAMとは異なる独自の構文を使用します(ただし、canはSAMまたは生のCloudFormationにコンパイルされます)。

SAM仕様を見つけることができます ここ

明示的ではありませんが、必要なのは{path-name}構文を使用することだけです。 Request/Parametersを追加する必要はありません(またはサポートされていません)。

例えば:

Ratings:
  Type: AWS::Serverless::Function
  Properties:
    Handler: ratings.handler
    Runtime: python3.6
    Events:
      Api:
        Type: Api
        Properties:
          Path: /ratings/{id}
          Method: get

あなたに次のようなイベントを提供します:

event.pathParameters.id == 'whatever-was-put-in-the-id-position'

(長い例はここにあります: https://github.com/1Strategy/redirect/blob/master/redirect.yaml