Lambda プロキシ統合を使用して API ゲートウェイ リソースをクラウドフォーム化するにはどうすればよいですか? 質問する

Lambda プロキシ統合を使用して API ゲートウェイ リソースをクラウドフォーム化するにはどうすればよいですか? 質問する

私は、Lambda プロキシ統合を使用して、Lambda 関数統合タイプを持つ API Gateway リソースを (CloudFormation で) 表現する方法を模索してきました。

AWS コンソールには選択できるチェックボックスがあるので、これを簡単に実行できます。API ゲートウェイ コンソールに [Lambda プロキシ統合の使用] チェックボックスが表示されている

しかし、AWS::ApiGateway::Method CloudFormationリソースには対応するフィールドがありません(統合プロパティ)。

CloudFormation でこれをどのように構成すればよいですか?

ベストアンサー1

統合タイプは に設定する必要がありますAWS_PROXY。動作する YAML CloudFormation テンプレートのメソッドのサンプル スニペットを以下に示します。

ProxyResourceAny:
  Type: AWS::ApiGateway::Method
  Properties:
    AuthorizationType: NONE
    HttpMethod: ANY
    ResourceId:
      Ref: ProxyResource
    RestApiId:
      Ref: API
    Integration:
      Type: AWS_PROXY
      IntegrationHttpMethod: POST
      Uri: !Sub
        - arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${Arn}/invocations
        - Arn:
            Fn::GetAtt:
            - RestorerLambda
            - Arn

私がこれをどうやって理解したかを説明する価値はあるでしょう...

しばらく頭を悩ませた後、aws apigateway get-methodコンソールを使用してこのように構成されたメソッドの CLI コマンドの出力を調べました。次の JSON が表示され、チェックボックスがタイプにエンコードされている可能性があることに気付きました。私は自分の仮説をテストし、上記の CloudFormation を思いつきました。

{
    "apiKeyRequired": false,
    "httpMethod": "ANY",
    "methodIntegration": {
        "integrationResponses": {
            "200": {
                "responseTemplates": {
                    "application/json": null
                },
                "statusCode": "200"
            }
        },
        "passthroughBehavior": "WHEN_NO_MATCH",
        "cacheKeyParameters": [],
        "uri": "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:XXXXXXXXX:function:Shildrew-Restorer-Play-Lambda/invocations",
        "httpMethod": "POST",
        "cacheNamespace": "64bl3tgw4g",
        "type": "AWS_PROXY"
    },
    "requestParameters": {},
    "authorizationType": "NONE"
}

おすすめ記事