Stage

class Stage : KotlinCustomResource

Manages an API Gateway Stage. A stage is a named reference to a deployment, which can be done via the aws.apigateway.Deployment resource. Stages can be optionally managed further with the aws.apigateway.BasePathMapping resource, aws.apigateway.DomainName resource, and aws_api_method_settings resource. For more information, see the API Gateway Developer Guide.

Managing the API Logging CloudWatch Log Group

API Gateway provides the ability to enable CloudWatch API logging. To manage the CloudWatch Log Group when this feature is enabled, the aws.cloudwatch.LogGroup resource can be used where the name matches the API Gateway naming convention. If the CloudWatch Log Group previously exists, import the aws.cloudwatch.LogGroup resource into Pulumi as a one time operation. You can recreate the environment without import.

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const config = new pulumi.Config();
const stageName = config.get("stageName") || "example";
const example = new aws.apigateway.RestApi("example", {});
const exampleLogGroup = new aws.cloudwatch.LogGroup("example", {
name: pulumi.interpolate`API-Gateway-Execution-Logs_${example.id}/${stageName}`,
retentionInDays: 7,
});
const exampleStage = new aws.apigateway.Stage("example", {stageName: stageName}, {
dependsOn: [exampleLogGroup],
});
import pulumi
import pulumi_aws as aws
config = pulumi.Config()
stage_name = config.get("stageName")
if stage_name is None:
stage_name = "example"
example = aws.apigateway.RestApi("example")
example_log_group = aws.cloudwatch.LogGroup("example",
name=example.id.apply(lambda id: f"API-Gateway-Execution-Logs_{id}/{stage_name}"),
retention_in_days=7)
example_stage = aws.apigateway.Stage("example", stage_name=stage_name,
opts = pulumi.ResourceOptions(depends_on=[example_log_group]))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var stageName = config.Get("stageName") ?? "example";
var example = new Aws.ApiGateway.RestApi("example");
var exampleLogGroup = new Aws.CloudWatch.LogGroup("example", new()
{
Name = example.Id.Apply(id => $"API-Gateway-Execution-Logs_{id}/{stageName}"),
RetentionInDays = 7,
});
var exampleStage = new Aws.ApiGateway.Stage("example", new()
{
StageName = stageName,
}, new CustomResourceOptions
{
DependsOn =
{
exampleLogGroup,
},
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway"
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
stageName := "example"
if param := cfg.Get("stageName"); param != "" {
stageName = param
}
example, err := apigateway.NewRestApi(ctx, "example", nil)
if err != nil {
return err
}
exampleLogGroup, err := cloudwatch.NewLogGroup(ctx, "example", &cloudwatch.LogGroupArgs{
Name: example.ID().ApplyT(func(id string) (string, error) {
return fmt.Sprintf("API-Gateway-Execution-Logs_%v/%v", id, stageName), nil
}).(pulumi.StringOutput),
RetentionInDays: pulumi.Int(7),
})
if err != nil {
return err
}
_, err = apigateway.NewStage(ctx, "example", &apigateway.StageArgs{
StageName: pulumi.String(stageName),
}, pulumi.DependsOn([]pulumi.Resource{
exampleLogGroup,
}))
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.apigateway.RestApi;
import com.pulumi.aws.cloudwatch.LogGroup;
import com.pulumi.aws.cloudwatch.LogGroupArgs;
import com.pulumi.aws.apigateway.Stage;
import com.pulumi.aws.apigateway.StageArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var stageName = config.get("stageName").orElse("example");
var example = new RestApi("example");
var exampleLogGroup = new LogGroup("exampleLogGroup", LogGroupArgs.builder()
.name(example.id().applyValue(id -> String.format("API-Gateway-Execution-Logs_%s/%s", id,stageName)))
.retentionInDays(7)
.build());
var exampleStage = new Stage("exampleStage", StageArgs.builder()
.stageName(stageName)
.build(), CustomResourceOptions.builder()
.dependsOn(exampleLogGroup)
.build());
}
}
configuration:
stageName:
type: string
default: example
resources:
example:
type: aws:apigateway:RestApi
exampleStage:
type: aws:apigateway:Stage
name: example
properties:
stageName: ${stageName}
options:
dependsOn:
- ${exampleLogGroup}
exampleLogGroup:
type: aws:cloudwatch:LogGroup
name: example
properties:
name: API-Gateway-Execution-Logs_${example.id}/${stageName}
retentionInDays: 7 # ... potentially other configuration ...

Import

Using pulumi import, import aws_api_gateway_stage using REST-API-ID/STAGE-NAME. For example:

$ pulumi import aws:apigateway/stage:Stage example 12345abcde/example

Properties

Link copied to clipboard

Enables access logs for the API stage. See Access Log Settings below.

Link copied to clipboard
val arn: Output<String>

ARN

Link copied to clipboard

Whether a cache cluster is enabled for the stage

Link copied to clipboard
val cacheClusterSize: Output<String>?

Size of the cache cluster for the stage, if enabled. Allowed values include 0.5, 1.6, 6.1, 13.5, 28.4, 58.2, 118 and 237.

Link copied to clipboard

Configuration settings of a canary deployment. See Canary Settings below.

Link copied to clipboard

Identifier of a client certificate for the stage.

Link copied to clipboard
val deployment: Output<String>

ID of the deployment that the stage points to

Link copied to clipboard
val description: Output<String>?

Description of the stage.

Link copied to clipboard

Version of the associated API documentation

Link copied to clipboard
val executionArn: Output<String>

Execution ARN to be used in lambda_permission's source_arn when allowing API Gateway to invoke a Lambda function, e.g., arn:aws:execute-api:eu-west-2:123456789012:z4675bid1j/prod

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val invokeUrl: Output<String>

URL to invoke the API pointing to the stage, e.g., https://z4675bid1j.execute-api.eu-west-2.amazonaws.com/prod

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val restApi: Output<String>

ID of the associated REST API

Link copied to clipboard
val stageName: Output<String>

Name of the stage

Link copied to clipboard
val tags: Output<Map<String, String>>?

Map of tags to assign to the resource. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.

Link copied to clipboard
val tagsAll: Output<Map<String, String>>

Map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

Link copied to clipboard
val urn: Output<String>
Link copied to clipboard
val variables: Output<Map<String, String>>?

Map that defines the stage variables

Link copied to clipboard
val webAclArn: Output<String>

ARN of the WebAcl associated with the Stage.

Link copied to clipboard

Whether active tracing with X-ray is enabled. Defaults to false.