Skip to content

Method ​

The Method resource lets you create and manage AWS ApiGateway Methods for your REST APIs, enabling you to define HTTP methods and their integrations.

Minimal Example ​

Create a basic ApiGateway Method for a GET request with default settings.

ts
import AWS from "alchemy/aws/control";

const apiGatewayMethod = await AWS.ApiGateway.Method("getUserMethod", {
  RestApiId: "myApiId",
  ResourceId: "myResourceId",
  HttpMethod: "GET",
  AuthorizationType: "NONE",
  ApiKeyRequired: false
});

Advanced Configuration ​

Configure a Method with request models and integration settings.

ts
import AWS from "alchemy/aws/control";

const postUserMethod = await AWS.ApiGateway.Method("postUserMethod", {
  RestApiId: "myApiId",
  ResourceId: "myResourceId",
  HttpMethod: "POST",
  AuthorizationType: "AWS_IAM",
  RequestModels: {
    "application/json": "UserModel"
  },
  Integration: {
    Type: "AWS_PROXY",
    Uri: "arn:aws:lambda:us-west-2:123456789012:function:myLambdaFunction",
    HttpMethod: "POST"
  },
  MethodResponses: [
    {
      StatusCode: "200",
      ResponseModels: {
        "application/json": "UserResponseModel"
      }
    }
  ]
});

Securing with Authorization Scopes ​

Create a Method with specific authorization scopes for enhanced security.

ts
import AWS from "alchemy/aws/control";

const secureGetUserMethod = await AWS.ApiGateway.Method("secureGetUserMethod", {
  RestApiId: "myApiId",
  ResourceId: "myResourceId",
  HttpMethod: "GET",
  AuthorizationType: "AWS_IAM",
  AuthorizationScopes: ["scope1", "scope2"],
  ApiKeyRequired: true
});

Request Validation ​

Configure a Method with request validation using a validator ID.

ts
import AWS from "alchemy/aws/control";

const validatedPostUserMethod = await AWS.ApiGateway.Method("validatedPostUserMethod", {
  RestApiId: "myApiId",
  ResourceId: "myResourceId",
  HttpMethod: "POST",
  RequestValidatorId: "myRequestValidatorId",
  RequestParameters: {
    "method.request.querystring.userId": true
  },
  MethodResponses: [
    {
      StatusCode: "201",
      ResponseModels: {
        "application/json": "UserResponseModel"
      }
    }
  ]
});