Show / Hide Table of Contents

Class IntegrationOptions

Inheritance
System.Object
IntegrationOptions
Implements
IIntegrationOptions
Namespace: Amazon.CDK.AWS.APIGateway
Assembly: Amazon.CDK.Lib.dll
Syntax (csharp)
public class IntegrationOptions : Object, IIntegrationOptions
Syntax (vb)
Public Class IntegrationOptions
    Inherits Object
    Implements IIntegrationOptions
Remarks

ExampleMetadata: lit=aws-apigateway/test/authorizers/integ.request-authorizer.lit.ts infused

Examples
using Path;
using Amazon.CDK.AWS.Lambda;
using Amazon.CDK;
using Amazon.CDK.AWS.APIGateway;

// Against the RestApi endpoint from the stack output, run
// `curl -s -o /dev/null -w "%{http_code}" <url>` should return 401
// `curl -s -o /dev/null -w "%{http_code}" -H 'Authorization: deny' <url>?allow=yes` should return 403
// `curl -s -o /dev/null -w "%{http_code}" -H 'Authorization: allow' <url>?allow=yes` should return 200

var app = new App();
var stack = new Stack(app, "RequestAuthorizerInteg");

var authorizerFn = new Function(stack, "MyAuthorizerFunction", new FunctionProps {
    Runtime = Runtime.NODEJS_14_X,
    Handler = "index.handler",
    Code = AssetCode.FromAsset(Join(__dirname, "integ.request-authorizer.handler"))
});

var restapi = new RestApi(stack, "MyRestApi", new RestApiProps { CloudWatchRole = true });

var authorizer = new RequestAuthorizer(stack, "MyAuthorizer", new RequestAuthorizerProps {
    Handler = authorizerFn,
    IdentitySources = new [] { IdentitySource.Header("Authorization"), IdentitySource.QueryString("allow") }
});

var secondAuthorizer = new RequestAuthorizer(stack, "MySecondAuthorizer", new RequestAuthorizerProps {
    Handler = authorizerFn,
    IdentitySources = new [] { IdentitySource.Header("Authorization"), IdentitySource.QueryString("allow") }
});

restapi.Root.AddMethod("ANY", new MockIntegration(new IntegrationOptions {
    IntegrationResponses = new [] { new IntegrationResponse { StatusCode = "200" } },
    PassthroughBehavior = PassthroughBehavior.NEVER,
    RequestTemplates = new Dictionary<string, string> {
        { "application/json", "{ \"statusCode\": 200 }" }
    }
}), new MethodOptions {
    MethodResponses = new [] { new MethodResponse { StatusCode = "200" } },
    Authorizer = authorizer
});

restapi.Root.ResourceForPath("auth").AddMethod("ANY", new MockIntegration(new IntegrationOptions {
    IntegrationResponses = new [] { new IntegrationResponse { StatusCode = "200" } },
    PassthroughBehavior = PassthroughBehavior.NEVER,
    RequestTemplates = new Dictionary<string, string> {
        { "application/json", "{ \"statusCode\": 200 }" }
    }
}), new MethodOptions {
    MethodResponses = new [] { new MethodResponse { StatusCode = "200" } },
    Authorizer = secondAuthorizer
});

Synopsis

Constructors

IntegrationOptions()

Properties

CacheKeyParameters

A list of request parameters whose values are to be cached.

CacheNamespace

An API-specific tag group of related cached parameters.

ConnectionType

The type of network connection to the integration endpoint.

ContentHandling

Specifies how to handle request payload content type conversions.

CredentialsPassthrough

Requires that the caller's identity be passed through from the request.

CredentialsRole

An IAM role that API Gateway assumes.

IntegrationResponses

The response that API Gateway provides after a method's backend completes processing a request.

PassthroughBehavior

Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource.

RequestParameters

The request parameters that API Gateway sends with the backend request.

RequestTemplates

A map of Apache Velocity templates that are applied on the request payload.

Timeout

The maximum amount of time an integration will run before it returns without a response.

VpcLink

The VpcLink used for the integration.

Constructors

IntegrationOptions()

public IntegrationOptions()

Properties

CacheKeyParameters

A list of request parameters whose values are to be cached.

public string[] CacheKeyParameters { get; set; }
Property Value

System.String[]

Remarks

It determines request parameters that will make it into the cache key.

CacheNamespace

An API-specific tag group of related cached parameters.

public string CacheNamespace { get; set; }
Property Value

System.String

ConnectionType

The type of network connection to the integration endpoint.

public Nullable<ConnectionType> ConnectionType { get; set; }
Property Value

System.Nullable<ConnectionType>

Remarks

Default: - ConnectionType.VPC_LINK if vpcLink property is configured; ConnectionType.Internet otherwise.

ContentHandling

Specifies how to handle request payload content type conversions.

public Nullable<ContentHandling> ContentHandling { get; set; }
Property Value

System.Nullable<ContentHandling>

Remarks

Default: none if this property isn't defined, the request payload is passed through from the method request to the integration request without modification, provided that the passthroughBehaviors property is configured to support payload pass-through.

CredentialsPassthrough

Requires that the caller's identity be passed through from the request.

public Nullable<bool> CredentialsPassthrough { get; set; }
Property Value

System.Nullable<System.Boolean>

Remarks

Default: Caller identity is not passed through

CredentialsRole

An IAM role that API Gateway assumes.

public IRole CredentialsRole { get; set; }
Property Value

IRole

Remarks

Mutually exclusive with credentialsPassThrough.

Default: A role is not assumed

IntegrationResponses

The response that API Gateway provides after a method's backend completes processing a request.

public IIntegrationResponse[] IntegrationResponses { get; set; }
Property Value

IIntegrationResponse[]

Remarks

API Gateway intercepts the response from the backend so that you can control how API Gateway surfaces backend responses. For example, you can map the backend status codes to codes that you define.

PassthroughBehavior

Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource.

public Nullable<PassthroughBehavior> PassthroughBehavior { get; set; }
Property Value

System.Nullable<PassthroughBehavior>

Remarks

There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER.

RequestParameters

The request parameters that API Gateway sends with the backend request.

public IDictionary<string, string> RequestParameters { get; set; }
Property Value

System.Collections.Generic.IDictionary<System.String, System.String>

Remarks

Specify request parameters as key-value pairs (string-to-string mappings), with a destination as the key and a source as the value.

Specify the destination by using the following pattern integration.request.location.name, where location is querystring, path, or header, and name is a valid, unique parameter name.

The source must be an existing method request parameter or a static value. You must enclose static values in single quotation marks and pre-encode these values based on their destination in the request.

RequestTemplates

A map of Apache Velocity templates that are applied on the request payload.

public IDictionary<string, string> RequestTemplates { get; set; }
Property Value

System.Collections.Generic.IDictionary<System.String, System.String>

Remarks

The template that API Gateway uses is based on the value of the Content-Type header that's sent by the client. The content type value is the key, and the template is the value (specified as a string), such as the following snippet:

  { "application/json": "{ \"statusCode\": 200 }" }

See: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

Timeout

The maximum amount of time an integration will run before it returns without a response.

public Duration Timeout { get; set; }
Property Value

Duration

Remarks

Must be between 50 milliseconds and 29 seconds.

Default: Duration.seconds(29)

VpcLink

The VpcLink used for the integration.

public IVpcLink VpcLink { get; set; }
Property Value

IVpcLink

Remarks

Required if connectionType is VPC_LINK

Implements

IIntegrationOptions
Back to top Generated by DocFX