Stage Args
    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