Welcome to Pulumi Registry, your window into the cloud. Read the announcement.

AWS Classic

v4.25.0 published on Friday, Oct 15, 2021 by Pulumi

MethodSettings

Manages API Gateway Stage Method Settings. For example, CloudWatch logging and metrics.

NOTE: It is recommended to use this resource in conjunction with the aws.apigateway.Stage resource instead of a stage managed by the aws.apigateway.Deployment resource optional stage_name argument. Stages managed by the aws.apigateway.Deployment resource are recreated on redeployment and this resource will require a second apply to recreate the method settings.

Example Usage

using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
	private static string ComputeSHA1(string input) {
		return BitConverter.ToString(
			SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(input))
		).Replace("-","").ToLowerInvariant());
	}

    public MyStack()
    {
        var exampleRestApi = new Aws.ApiGateway.RestApi("exampleRestApi", new Aws.ApiGateway.RestApiArgs
        {
            Body = JsonSerializer.Serialize(new Dictionary<string, object?>
            {
                { "openapi", "3.0.1" },
                { "info", new Dictionary<string, object?>
                {
                    { "title", "example" },
                    { "version", "1.0" },
                } },
                { "paths", new Dictionary<string, object?>
                {
                    { "/path1", new Dictionary<string, object?>
                    {
                        { "get", new Dictionary<string, object?>
                        {
                            { "x-amazon-apigateway-integration", new Dictionary<string, object?>
                            {
                                { "httpMethod", "GET" },
                                { "payloadFormatVersion", "1.0" },
                                { "type", "HTTP_PROXY" },
                                { "uri", "https://ip-ranges.amazonaws.com/ip-ranges.json" },
                            } },
                        } },
                    } },
                } },
            }),
        });
        var exampleDeployment = new Aws.ApiGateway.Deployment("exampleDeployment", new Aws.ApiGateway.DeploymentArgs
        {
            RestApi = exampleRestApi.Id,
            Triggers = 
            {
                { "redeployment", exampleRestApi.Body.Apply(body => JsonSerializer.Serialize(body)).Apply(toJSON => ComputeSHA1(toJSON)) },
            },
        });
        var exampleStage = new Aws.ApiGateway.Stage("exampleStage", new Aws.ApiGateway.StageArgs
        {
            Deployment = exampleDeployment.Id,
            RestApi = exampleRestApi.Id,
            StageName = "example",
        });
        var all = new Aws.ApiGateway.MethodSettings("all", new Aws.ApiGateway.MethodSettingsArgs
        {
            RestApi = exampleRestApi.Id,
            StageName = exampleStage.StageName,
            MethodPath = "*/*",
            Settings = new Aws.ApiGateway.Inputs.MethodSettingsSettingsArgs
            {
                MetricsEnabled = true,
                LoggingLevel = "ERROR",
            },
        });
        var pathSpecific = new Aws.ApiGateway.MethodSettings("pathSpecific", new Aws.ApiGateway.MethodSettingsArgs
        {
            RestApi = exampleRestApi.Id,
            StageName = exampleStage.StageName,
            MethodPath = "path1/GET",
            Settings = new Aws.ApiGateway.Inputs.MethodSettingsSettingsArgs
            {
                MetricsEnabled = true,
                LoggingLevel = "INFO",
            },
        });
    }

}
package main

import (
	"crypto/sha1"
	"encoding/json"
	"fmt"

	"github.com/pulumi/pulumi-aws/sdk/v4/go/aws/apigateway"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func sha1Hash(input string) string {
	hash := sha1.Sum([]byte(input))
	return hex.EncodeToString(hash[:])
}

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		tmpJSON0, err := json.Marshal(map[string]interface{}{
			"openapi": "3.0.1",
			"info": map[string]interface{}{
				"title":   "example",
				"version": "1.0",
			},
			"paths": map[string]interface{}{
				"/path1": map[string]interface{}{
					"get": map[string]interface{}{
						"x-amazon-apigateway-integration": map[string]interface{}{
							"httpMethod":           "GET",
							"payloadFormatVersion": "1.0",
							"type":                 "HTTP_PROXY",
							"uri":                  "https://ip-ranges.amazonaws.com/ip-ranges.json",
						},
					},
				},
			},
		})
		if err != nil {
			return err
		}
		json0 := string(tmpJSON0)
		exampleRestApi, err := apigateway.NewRestApi(ctx, "exampleRestApi", &apigateway.RestApiArgs{
			Body: pulumi.String(json0),
		})
		if err != nil {
			return err
		}
		exampleDeployment, err := apigateway.NewDeployment(ctx, "exampleDeployment", &apigateway.DeploymentArgs{
			RestApi: exampleRestApi.ID(),
			Triggers: pulumi.StringMap{
				"redeployment": exampleRestApi.Body.ApplyT(func(body string) (pulumi.String, error) {
					var _zero pulumi.String
					tmpJSON1, err := json.Marshal(body)
					if err != nil {
						return _zero, err
					}
					json1 := string(tmpJSON1)
					return json1, nil
				}).(pulumi.StringOutput).ApplyT(func(toJSON string) (pulumi.String, error) {
					return sha1Hash(toJSON), nil
				}).(pulumi.StringOutput),
			},
		})
		if err != nil {
			return err
		}
		exampleStage, err := apigateway.NewStage(ctx, "exampleStage", &apigateway.StageArgs{
			Deployment: exampleDeployment.ID(),
			RestApi:    exampleRestApi.ID(),
			StageName:  pulumi.String("example"),
		})
		if err != nil {
			return err
		}
		_, err = apigateway.NewMethodSettings(ctx, "all", &apigateway.MethodSettingsArgs{
			RestApi:    exampleRestApi.ID(),
			StageName:  exampleStage.StageName,
			MethodPath: pulumi.String("*/*"),
			Settings: &apigateway.MethodSettingsSettingsArgs{
				MetricsEnabled: pulumi.Bool(true),
				LoggingLevel:   pulumi.String("ERROR"),
			},
		})
		if err != nil {
			return err
		}
		_, err = apigateway.NewMethodSettings(ctx, "pathSpecific", &apigateway.MethodSettingsArgs{
			RestApi:    exampleRestApi.ID(),
			StageName:  exampleStage.StageName,
			MethodPath: pulumi.String("path1/GET"),
			Settings: &apigateway.MethodSettingsSettingsArgs{
				MetricsEnabled: pulumi.Bool(true),
				LoggingLevel:   pulumi.String("INFO"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
import pulumi
import hashlib
import json
import pulumi_aws as aws

example_rest_api = aws.apigateway.RestApi("exampleRestApi", body=json.dumps({
    "openapi": "3.0.1",
    "info": {
        "title": "example",
        "version": "1.0",
    },
    "paths": {
        "/path1": {
            "get": {
                "x-amazon-apigateway-integration": {
                    "httpMethod": "GET",
                    "payloadFormatVersion": "1.0",
                    "type": "HTTP_PROXY",
                    "uri": "https://ip-ranges.amazonaws.com/ip-ranges.json",
                },
            },
        },
    },
}))
example_deployment = aws.apigateway.Deployment("exampleDeployment",
    rest_api=example_rest_api.id,
    triggers={
        "redeployment": example_rest_api.body.apply(lambda body: json.dumps(body)).apply(lambda to_json: hashlib.sha1(to_json.encode()).hexdigest()),
    })
example_stage = aws.apigateway.Stage("exampleStage",
    deployment=example_deployment.id,
    rest_api=example_rest_api.id,
    stage_name="example")
all = aws.apigateway.MethodSettings("all",
    rest_api=example_rest_api.id,
    stage_name=example_stage.stage_name,
    method_path="*/*",
    settings=aws.apigateway.MethodSettingsSettingsArgs(
        metrics_enabled=True,
        logging_level="ERROR",
    ))
path_specific = aws.apigateway.MethodSettings("pathSpecific",
    rest_api=example_rest_api.id,
    stage_name=example_stage.stage_name,
    method_path="path1/GET",
    settings=aws.apigateway.MethodSettingsSettingsArgs(
        metrics_enabled=True,
        logging_level="INFO",
    ))
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as crypto from "crypto";

const exampleRestApi = new aws.apigateway.RestApi("exampleRestApi", {body: JSON.stringify({
    openapi: "3.0.1",
    info: {
        title: "example",
        version: "1.0",
    },
    paths: {
        "/path1": {
            get: {
                "x-amazon-apigateway-integration": {
                    httpMethod: "GET",
                    payloadFormatVersion: "1.0",
                    type: "HTTP_PROXY",
                    uri: "https://ip-ranges.amazonaws.com/ip-ranges.json",
                },
            },
        },
    },
})});
const exampleDeployment = new aws.apigateway.Deployment("exampleDeployment", {
    restApi: exampleRestApi.id,
    triggers: {
        redeployment: exampleRestApi.body.apply(body => JSON.stringify(body)).apply(toJSON => crypto.createHash('sha1').update(toJSON).digest('hex')),
    },
});
const exampleStage = new aws.apigateway.Stage("exampleStage", {
    deployment: exampleDeployment.id,
    restApi: exampleRestApi.id,
    stageName: "example",
});
const all = new aws.apigateway.MethodSettings("all", {
    restApi: exampleRestApi.id,
    stageName: exampleStage.stageName,
    methodPath: "*/*",
    settings: {
        metricsEnabled: true,
        loggingLevel: "ERROR",
    },
});
const pathSpecific = new aws.apigateway.MethodSettings("pathSpecific", {
    restApi: exampleRestApi.id,
    stageName: exampleStage.stageName,
    methodPath: "path1/GET",
    settings: {
        metricsEnabled: true,
        loggingLevel: "INFO",
    },
});

Create a MethodSettings Resource

new MethodSettings(name: string, args: MethodSettingsArgs, opts?: CustomResourceOptions);
@overload
def MethodSettings(resource_name: str,
                   opts: Optional[ResourceOptions] = None,
                   method_path: Optional[str] = None,
                   rest_api: Optional[str] = None,
                   settings: Optional[MethodSettingsSettingsArgs] = None,
                   stage_name: Optional[str] = None)
@overload
def MethodSettings(resource_name: str,
                   args: MethodSettingsArgs,
                   opts: Optional[ResourceOptions] = None)
func NewMethodSettings(ctx *Context, name string, args MethodSettingsArgs, opts ...ResourceOption) (*MethodSettings, error)
public MethodSettings(string name, MethodSettingsArgs args, CustomResourceOptions? opts = null)
name string
The unique name of the resource.
args MethodSettingsArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name str
The unique name of the resource.
args MethodSettingsArgs
The arguments to resource properties.
opts ResourceOptions
Bag of options to control resource's behavior.
ctx Context
Context object for the current deployment.
name string
The unique name of the resource.
args MethodSettingsArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name string
The unique name of the resource.
args MethodSettingsArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.

MethodSettings Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

Inputs

The MethodSettings resource accepts the following input properties:

MethodPath string
Method path defined as {resource_path}/{http_method} for an individual method override, or */* for overriding all methods in the stage. Ensure to trim any leading forward slashes in the path (e.g. trimprefix(aws_api_gateway_resource.example.path, "/")).
RestApi string | string
The ID of the REST API
Settings MethodSettingsSettingsArgs
The settings block, see below.
StageName string
The name of the stage
MethodPath string
Method path defined as {resource_path}/{http_method} for an individual method override, or */* for overriding all methods in the stage. Ensure to trim any leading forward slashes in the path (e.g. trimprefix(aws_api_gateway_resource.example.path, "/")).
RestApi string | string
The ID of the REST API
Settings MethodSettingsSettingsArgs
The settings block, see below.
StageName string
The name of the stage
methodPath string
Method path defined as {resource_path}/{http_method} for an individual method override, or */* for overriding all methods in the stage. Ensure to trim any leading forward slashes in the path (e.g. trimprefix(aws_api_gateway_resource.example.path, "/")).
restApi string | RestApi
The ID of the REST API
settings MethodSettingsSettingsArgs
The settings block, see below.
stageName string
The name of the stage
method_path str
Method path defined as {resource_path}/{http_method} for an individual method override, or */* for overriding all methods in the stage. Ensure to trim any leading forward slashes in the path (e.g. trimprefix(aws_api_gateway_resource.example.path, "/")).
rest_api str | str
The ID of the REST API
settings MethodSettingsSettingsArgs
The settings block, see below.
stage_name str
The name of the stage

Outputs

All input properties are implicitly available as output properties. Additionally, the MethodSettings resource produces the following output properties:

Id string
The provider-assigned unique ID for this managed resource.
Id string
The provider-assigned unique ID for this managed resource.
id string
The provider-assigned unique ID for this managed resource.
id str
The provider-assigned unique ID for this managed resource.

Look up an Existing MethodSettings Resource

Get an existing MethodSettings resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

public static get(name: string, id: Input<ID>, state?: MethodSettingsState, opts?: CustomResourceOptions): MethodSettings
@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        method_path: Optional[str] = None,
        rest_api: Optional[str] = None,
        settings: Optional[MethodSettingsSettingsArgs] = None,
        stage_name: Optional[str] = None) -> MethodSettings
func GetMethodSettings(ctx *Context, name string, id IDInput, state *MethodSettingsState, opts ...ResourceOption) (*MethodSettings, error)
public static MethodSettings Get(string name, Input<string> id, MethodSettingsState? state, CustomResourceOptions? opts = null)
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
resource_name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.

The following state arguments are supported:

MethodPath string
Method path defined as {resource_path}/{http_method} for an individual method override, or */* for overriding all methods in the stage. Ensure to trim any leading forward slashes in the path (e.g. trimprefix(aws_api_gateway_resource.example.path, "/")).
RestApi string | string
The ID of the REST API
Settings MethodSettingsSettingsArgs
The settings block, see below.
StageName string
The name of the stage
MethodPath string
Method path defined as {resource_path}/{http_method} for an individual method override, or */* for overriding all methods in the stage. Ensure to trim any leading forward slashes in the path (e.g. trimprefix(aws_api_gateway_resource.example.path, "/")).
RestApi string | string
The ID of the REST API
Settings MethodSettingsSettingsArgs
The settings block, see below.
StageName string
The name of the stage
methodPath string
Method path defined as {resource_path}/{http_method} for an individual method override, or */* for overriding all methods in the stage. Ensure to trim any leading forward slashes in the path (e.g. trimprefix(aws_api_gateway_resource.example.path, "/")).
restApi string | RestApi
The ID of the REST API
settings MethodSettingsSettingsArgs
The settings block, see below.
stageName string
The name of the stage
method_path str
Method path defined as {resource_path}/{http_method} for an individual method override, or */* for overriding all methods in the stage. Ensure to trim any leading forward slashes in the path (e.g. trimprefix(aws_api_gateway_resource.example.path, "/")).
rest_api str | str
The ID of the REST API
settings MethodSettingsSettingsArgs
The settings block, see below.
stage_name str
The name of the stage

Supporting Types

MethodSettingsSettings

CacheDataEncrypted bool
Specifies whether the cached responses are encrypted.
CacheTtlInSeconds int
Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.
CachingEnabled bool
Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.
DataTraceEnabled bool
Specifies whether data trace logging is enabled for this method, which effects the log entries pushed to Amazon CloudWatch Logs.
LoggingLevel string
Specifies the logging level for this method, which effects the log entries pushed to Amazon CloudWatch Logs. The available levels are OFF, ERROR, and INFO.
MetricsEnabled bool
Specifies whether Amazon CloudWatch metrics are enabled for this method.
RequireAuthorizationForCacheControl bool
Specifies whether authorization is required for a cache invalidation request.
ThrottlingBurstLimit int
Specifies the throttling burst limit. Default: -1 (throttling disabled).
ThrottlingRateLimit double
Specifies the throttling rate limit. Default: -1 (throttling disabled).
UnauthorizedCacheControlHeaderStrategy string
Specifies how to handle unauthorized requests for cache invalidation. The available values are FAIL_WITH_403, SUCCEED_WITH_RESPONSE_HEADER, SUCCEED_WITHOUT_RESPONSE_HEADER.
CacheDataEncrypted bool
Specifies whether the cached responses are encrypted.
CacheTtlInSeconds int
Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.
CachingEnabled bool
Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.
DataTraceEnabled bool
Specifies whether data trace logging is enabled for this method, which effects the log entries pushed to Amazon CloudWatch Logs.
LoggingLevel string
Specifies the logging level for this method, which effects the log entries pushed to Amazon CloudWatch Logs. The available levels are OFF, ERROR, and INFO.
MetricsEnabled bool
Specifies whether Amazon CloudWatch metrics are enabled for this method.
RequireAuthorizationForCacheControl bool
Specifies whether authorization is required for a cache invalidation request.
ThrottlingBurstLimit int
Specifies the throttling burst limit. Default: -1 (throttling disabled).
ThrottlingRateLimit float64
Specifies the throttling rate limit. Default: -1 (throttling disabled).
UnauthorizedCacheControlHeaderStrategy string
Specifies how to handle unauthorized requests for cache invalidation. The available values are FAIL_WITH_403, SUCCEED_WITH_RESPONSE_HEADER, SUCCEED_WITHOUT_RESPONSE_HEADER.
cacheDataEncrypted boolean
Specifies whether the cached responses are encrypted.
cacheTtlInSeconds number
Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.
cachingEnabled boolean
Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.
dataTraceEnabled boolean
Specifies whether data trace logging is enabled for this method, which effects the log entries pushed to Amazon CloudWatch Logs.
loggingLevel string
Specifies the logging level for this method, which effects the log entries pushed to Amazon CloudWatch Logs. The available levels are OFF, ERROR, and INFO.
metricsEnabled boolean
Specifies whether Amazon CloudWatch metrics are enabled for this method.
requireAuthorizationForCacheControl boolean
Specifies whether authorization is required for a cache invalidation request.
throttlingBurstLimit number
Specifies the throttling burst limit. Default: -1 (throttling disabled).
throttlingRateLimit number
Specifies the throttling rate limit. Default: -1 (throttling disabled).
unauthorizedCacheControlHeaderStrategy string
Specifies how to handle unauthorized requests for cache invalidation. The available values are FAIL_WITH_403, SUCCEED_WITH_RESPONSE_HEADER, SUCCEED_WITHOUT_RESPONSE_HEADER.
cache_data_encrypted bool
Specifies whether the cached responses are encrypted.
cache_ttl_in_seconds int
Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.
caching_enabled bool
Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.
data_trace_enabled bool
Specifies whether data trace logging is enabled for this method, which effects the log entries pushed to Amazon CloudWatch Logs.
logging_level str
Specifies the logging level for this method, which effects the log entries pushed to Amazon CloudWatch Logs. The available levels are OFF, ERROR, and INFO.
metrics_enabled bool
Specifies whether Amazon CloudWatch metrics are enabled for this method.
require_authorization_for_cache_control bool
Specifies whether authorization is required for a cache invalidation request.
throttling_burst_limit int
Specifies the throttling burst limit. Default: -1 (throttling disabled).
throttling_rate_limit float
Specifies the throttling rate limit. Default: -1 (throttling disabled).
unauthorized_cache_control_header_strategy str
Specifies how to handle unauthorized requests for cache invalidation. The available values are FAIL_WITH_403, SUCCEED_WITH_RESPONSE_HEADER, SUCCEED_WITHOUT_RESPONSE_HEADER.

Import

aws_api_gateway_method_settings can be imported using REST-API-ID/STAGE-NAME/METHOD-PATH, e.g.

 $ pulumi import aws:apigateway/methodSettings:MethodSettings example 12345abcde/example/test/GET

Package Details

Repository
https://github.com/pulumi/pulumi-aws
License
Apache-2.0
Notes
This Pulumi package is based on the aws Terraform Provider.