Table of Contents

Class Deployment

Namespace
Amazon.CDK.AWS.APIGateway
Assembly
Amazon.CDK.AWS.APIGateway.dll

A Deployment of a REST API.

public class Deployment : Resource
Inheritance
Deployment

Examples

// production stage
             var prdLogGroup = new LogGroup(this, "PrdLogs");
             var api = new RestApi(this, "books", new RestApiProps {
                 DeployOptions = new StageOptions {
                     AccessLogDestination = new LogGroupLogDestination(prdLogGroup),
                     AccessLogFormat = AccessLogFormat.JsonWithStandardFields()
                 }
             });
             var deployment = new Deployment(this, "Deployment", new DeploymentProps { Api = api });

             // development stage
             var devLogGroup = new LogGroup(this, "DevLogs");
             new Stage(this, "dev", new StageProps {
                 Deployment = deployment,
                 AccessLogDestination = new LogGroupLogDestination(devLogGroup),
                 AccessLogFormat = AccessLogFormat.JsonWithStandardFields(new JsonWithStandardFieldProps {
                     Caller = false,
                     HttpMethod = true,
                     Ip = true,
                     Protocol = true,
                     RequestTime = true,
                     ResourcePath = true,
                     ResponseLength = true,
                     Status = true,
                     User = true
                 })
             });

Remarks

An immutable representation of a RestApi resource that can be called by users using Stages. A deployment must be associated with a Stage for it to be callable over the Internet.

Normally, you don't need to define deployments manually. The RestApi construct manages a Deployment resource that represents the latest model. It can be accessed through restApi.latestDeployment (unless deploy: false is set when defining the RestApi).

If you manually define this resource, you will need to know that since deployments are immutable, as long as the resource's logical ID doesn't change, the deployment will represent the snapshot in time in which the resource was created. This means that if you modify the RestApi model (i.e. add methods or resources), these changes will not be reflected unless a new deployment resource is created.

To achieve this behavior, the method addToLogicalId(data) can be used to augment the logical ID generated for the deployment resource such that it will include arbitrary data. This is done automatically for the restApi.latestDeployment deployment.

Furthermore, since a deployment does not reference any of the REST API resources and methods, CloudFormation will likely provision it before these resources are created, which means that it will represent a "half-baked" model. Use the node.addDependency(dep) method to circumvent that. This is done automatically for the restApi.latestDeployment deployment.

ExampleMetadata: infused

Constructors

Deployment(Construct, string, IDeploymentProps)

public Deployment(Construct scope, string id, IDeploymentProps props)

Parameters

scope Construct
id string
props IDeploymentProps

Properties

Api

public virtual IRestApi Api { get; }

Property Value

IRestApi

DeploymentId

public virtual string DeploymentId { get; }

Property Value

string

Remarks

Attribute: true

Methods

AddToLogicalId(object)

Adds a component to the hash that determines this Deployment resource's logical ID.

public virtual void AddToLogicalId(object data)

Parameters

data object

Remarks

This should be called by constructs of the API Gateway model that want to invalidate the deployment when their settings change. The component will be resolve()ed during synthesis so tokens are welcome.