AWS::ApiGateway::Method
The AWS::ApiGateway::Method
resource creates API Gateway methods that define the parameters and body that clients must send in their requests.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::ApiGateway::Method", "Properties" : { "ApiKeyRequired" :
Boolean
, "AuthorizationScopes" :[ String, ... ]
, "AuthorizationType" :String
, "AuthorizerId" :String
, "HttpMethod" :String
, "Integration" :Integration
, "MethodResponses" :[ MethodResponse, ... ]
, "OperationName" :String
, "RequestModels" :{
, "RequestParameters" :Key
:Value
, ...}{
, "RequestValidatorId" :Key
:Value
, ...}String
, "ResourceId" :String
, "RestApiId" :String
} }
YAML
Type: AWS::ApiGateway::Method Properties: ApiKeyRequired:
Boolean
AuthorizationScopes:- String
AuthorizationType:String
AuthorizerId:String
HttpMethod:String
Integration:Integration
MethodResponses:- MethodResponse
OperationName:String
RequestModels:RequestParameters:
Key
:Value
RequestValidatorId:
Key
:Value
String
ResourceId:String
RestApiId:String
Properties
ApiKeyRequired
-
A boolean flag specifying whether a valid ApiKey is required to invoke this method.
Required: No
Type: Boolean
Update requires: No interruption
-
A list of authorization scopes configured on the method. The scopes are used with a
COGNITO_USER_POOLS
authorizer to authorize the method invocation. The authorization works by matching the method scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any method scopes matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the method scope is configured, the client must provide an access token instead of an identity token for authorization purposes.Required: No
Type: Array of String
Update requires: No interruption
-
The method's authorization type. This parameter is required. For valid values, see Method in the API Gateway API Reference.
Note
If you specify the
AuthorizerId
property, specifyCUSTOM
orCOGNITO_USER_POOLS
for this property.Required: No
Type: String
Update requires: No interruption
-
The identifier of an authorizer to use on this method. The method's authorization type must be
CUSTOM
orCOGNITO_USER_POOLS
.Required: No
Type: String
Update requires: No interruption
HttpMethod
-
The method's HTTP verb.
Required: Yes
Type: String
Update requires: Replacement
Integration
-
Represents an
HTTP
,HTTP_PROXY
,AWS
,AWS_PROXY
, or Mock integration.Required: No
Type: Integration
Update requires: No interruption
MethodResponses
-
Gets a method response associated with a given HTTP status code.
Required: No
Type: Array of MethodResponse
Update requires: No interruption
OperationName
-
A human-friendly operation identifier for the method. For example, you can assign the
operationName
ofListPets
for theGET /pets
method in thePetStore
example.Required: No
Type: String
Update requires: No interruption
RequestModels
-
A key-value map specifying data schemas, represented by Model resources, (as the mapped value) of the request payloads of given content types (as the mapping key).
Required: No
Type: Object of String
Pattern:
[a-zA-Z0-9]+
Update requires: No interruption
RequestParameters
-
A key-value map defining required or optional method request parameters that can be accepted by API Gateway. A key is a method request parameter name matching the pattern of
method.request.{location}.{name}
, wherelocation
isquerystring
,path
, orheader
andname
is a valid and unique parameter name. The value associated with the key is a Boolean flag indicating whether the parameter is required (true
) or optional (false
). The method request parameter names defined here are available in Integration to be mapped to integration request parameters or templates.Required: No
Type: Object of String
Pattern:
[a-zA-Z0-9]+
Update requires: No interruption
RequestValidatorId
-
The identifier of a RequestValidator for request validation.
Required: No
Type: String
Update requires: No interruption
ResourceId
-
The Resource identifier for the MethodResponse resource.
Required: Yes
Type: String
Update requires: Replacement
RestApiId
-
The string identifier of the associated RestApi.
Required: Yes
Type: String
Update requires: Replacement
Return values
Ref
When you pass the logical ID of this resource to the intrinsic Ref
function, Ref
returns the method ID, such as mysta-metho-01234b567890example
.
For more information about using the Ref
function, see Ref
.
Examples
Mock Method
The following example creates a mock GET method for the MyApi
API.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "Api": { "Type": "AWS::ApiGateway::RestApi", "Properties": { "Name": "myAPI" } }, "MockMethod": { "Type": "AWS::ApiGateway::Method", "Properties": { "RestApiId": { "Ref": "Api" }, "ResourceId": { "Fn::GetAtt": [ "Api", "RootResourceId" ] }, "HttpMethod": "GET", "AuthorizationType": "NONE", "RequestParameters": { "method.request.header.myheader": false }, "Integration": { "Type": "MOCK", "RequestParameters": { "integration.request.header.header1": "method.request.header.myheader" }, "IntegrationResponses": [ { "StatusCode": "200", "ResponseParameters": { "method.response.header.header1": "integration.response.header.header1", "method.response.header.header2": "'staticvalue'" } } ] }, "MethodResponses": [ { "StatusCode": "200", "ResponseParameters": { "method.response.header.header1": true, "method.response.header.header2": true } } ] } } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: Api: Type: AWS::ApiGateway::RestApi Properties: Name: myAPI MockMethod: Type: AWS::ApiGateway::Method Properties: RestApiId: !Ref Api ResourceId: !GetAtt Api.RootResourceId HttpMethod: GET AuthorizationType: NONE RequestParameters: method.request.header.myheader: false Integration: Type: MOCK RequestParameters: integration.request.header.header1: method.request.header.myheader IntegrationResponses: - StatusCode: '200' ResponseParameters: method.response.header.header1: integration.response.header.header1 method.response.header.header2: '''staticvalue''' MethodResponses: - StatusCode: '200' ResponseParameters: method.response.header.header1: true method.response.header.header2: true
Lambda Proxy
The following example creates a proxy resource to enable clients to call a Lambda function with a single integration setup on a catch-all ANY method. The Uri
property specifies the Lambda function. For more information about Lambda proxy integration and a sample Lambda function, see Create an API with Lambda Proxy Integration through a Proxy Resource in the API Gateway Developer Guide.
Note
Use the AWS::Lambda::Permission resource to grant API Gateway permission to invoke your Lambda function.
JSON
{ "ProxyResource": { "Type": "AWS::ApiGateway::Resource", "Properties": { "RestApiId": { "Ref": "LambdaSimpleProxy" }, "ParentId": { "Fn::GetAtt": [ "LambdaSimpleProxy", "RootResourceId" ] }, "PathPart": "{proxy+}" } }, "ProxyResourceANY": { "Type": "AWS::ApiGateway::Method", "Properties": { "RestApiId": { "Ref": "LambdaSimpleProxy" }, "ResourceId": { "Ref": "ProxyResource" }, "HttpMethod": "ANY", "AuthorizationType": "NONE", "Integration": { "Type": "AWS_PROXY", "IntegrationHttpMethod": "POST", "Uri": { "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaForSimpleProxy.Arn}/invocations" } } } } }
YAML
ProxyResource: Type: 'AWS::ApiGateway::Resource' Properties: RestApiId: !Ref LambdaSimpleProxy ParentId: !GetAtt - LambdaSimpleProxy - RootResourceId PathPart: '{proxy+}' ProxyResourceANY: Type: 'AWS::ApiGateway::Method' Properties: RestApiId: !Ref LambdaSimpleProxy ResourceId: !Ref ProxyResource HttpMethod: ANY AuthorizationType: NONE Integration: Type: AWS_PROXY IntegrationHttpMethod: POST Uri: !Sub >- arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaForSimpleProxy.Arn}/invocations
Associated Request Validator
The following example creates a REST API, method, and request validator, and associates the request validator with the method. It also lets you specify how to convert the request payload.
JSON
{ "Parameters": { "contentHandling": { "Type": "String" }, "operationName": { "Type": "String", "Default": "testoperationName" }, "restApiName": { "Type": "String", "Default": "testrestApiName" }, "validatorName": { "Type": "String", "Default": "testvalidatorName" }, "validateRequestBody": { "Type": "String", "Default": "testvalidateRequestBody" }, "validateRequestParameters": { "Type": "String", "Default": true } }, "Resources": { "RestApi": { "Type": "AWS::ApiGateway::RestApi", "Properties": { "Name": { "Ref": "restApiName" } } }, "Method": { "Type": "AWS::ApiGateway::Method", "Properties": { "HttpMethod": "POST", "ResourceId": { "Fn::GetAtt": [ "RestApi", "RootResourceId" ] }, "RestApiId": { "Ref": "RestApi" }, "AuthorizationType": "NONE", "Integration": { "Type": "MOCK", "ContentHandling": { "Ref": "contentHandling" }, "IntegrationResponses": [ { "ContentHandling": { "Ref": "contentHandling" }, "StatusCode": 400 } ] }, "RequestValidatorId": { "Ref": "RequestValidator" }, "OperationName": { "Ref": "operationName" } } }, "RequestValidator": { "Type": "AWS::ApiGateway::RequestValidator", "Properties": { "Name": { "Ref": "validatorName" }, "RestApiId": { "Ref": "RestApi" }, "ValidateRequestBody": { "Ref": "validateRequestBody" }, "ValidateRequestParameters": { "Ref": "validateRequestParameters" } } } }, "Outputs": { "RootResourceId": { "Value": { "Fn::GetAtt": [ "RestApi", "RootResourceId" ] } } } }
YAML
Parameters: contentHandling: Type: String operationName: Type: String Default: testoperationName restApiName: Type: String Default: testrestApiName validatorName: Type: String Default: testvalidatorName validateRequestBody: Type: String Default: testvalidateRequestBody validateRequestParameters: Type: String Default: true Resources: RestApi: Type: AWS::ApiGateway::RestApi Properties: Name: !Ref restApiName Method: Type: AWS::ApiGateway::Method Properties: HttpMethod: POST ResourceId: !GetAtt RestApi.RootResourceId RestApiId: !Ref RestApi AuthorizationType: NONE Integration: Type: MOCK ContentHandling: !Ref contentHandling IntegrationResponses: - ContentHandling: !Ref contentHandling StatusCode: 400 RequestValidatorId: !Ref RequestValidator OperationName: !Ref operationName RequestValidator: Type: AWS::ApiGateway::RequestValidator Properties: Name: !Ref validatorName RestApiId: !Ref RestApi ValidateRequestBody: !Ref validateRequestBody ValidateRequestParameters: !Ref validateRequestParameters Outputs: RootResourceId: Value: !GetAtt RestApi.RootResourceId
See also
-
method:put in the Amazon API Gateway REST API Reference