私は、Lambda プロキシ統合を使用して、Lambda 関数統合タイプを持つ API Gateway リソースを (CloudFormation で) 表現する方法を模索してきました。
AWS コンソールには選択できるチェックボックスがあるので、これを簡単に実行できます。
しかし、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"
}