diff --git a/examples/ecr-image/Pulumi.yaml b/examples/ecr-image/Pulumi.yaml
new file mode 100644
index 00000000000..86d71cf0f7e
--- /dev/null
+++ b/examples/ecr-image/Pulumi.yaml
@@ -0,0 +1,3 @@
+name: ecr-image
+runtime: nodejs
+description: Publish docker images to ECR
diff --git a/examples/ecr-image/README.md b/examples/ecr-image/README.md
new file mode 100644
index 00000000000..64a70dc2199
--- /dev/null
+++ b/examples/ecr-image/README.md
@@ -0,0 +1,41 @@
+# examples/ecr-image
+
+This example demonstrates how to use Pulumi to publish a Docker image to Amazon Elastic Container Registry (ECR).
+
+## Steps
+
+1. **Install Dependencies**
+
+ Ensure you have the necessary dependencies installed:
+
+ ```sh
+ npm install
+ ```
+
+2. **Run Pulumi Up**
+
+ Run Pulumi to create the ECR repository and push the Docker image:
+
+ ```sh
+ pulumi up
+ ```
+
+ Confirm the changes and wait for the process to complete.
+
+## Files
+
+- `index.ts`: Contains the Pulumi program to create the ECR repository and push the Docker image.
+- `Dockerfile`: Dockerfile for building the Docker image.
+
+## Clean Up
+
+To clean up the resources created by Pulumi:
+
+```sh
+pulumi destroy
+```
+
+## Additional Resources
+
+- [Pulumi AWS Documentation](https://www.pulumi.com/docs/intro/cloud-providers/aws/)
+- [Amazon ECR Documentation](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
diff --git a/examples/ecr-image/app/Dockerfile b/examples/ecr-image/app/Dockerfile
new file mode 100644
index 00000000000..c1f18590bc4
--- /dev/null
+++ b/examples/ecr-image/app/Dockerfile
@@ -0,0 +1,3 @@
+FROM public.ecr.aws/nginx/nginx
+RUN echo "
Hello Pulumi!
" > \
+ /usr/share/nginx/html/index.html
diff --git a/examples/ecr-image/index.ts b/examples/ecr-image/index.ts
new file mode 100644
index 00000000000..8bbf9b685de
--- /dev/null
+++ b/examples/ecr-image/index.ts
@@ -0,0 +1,36 @@
+import * as pulumi from "@pulumi/pulumi";
+import * as aws from "@pulumi/aws";
+import * as docker from "@pulumi/docker-build";
+
+const config = new pulumi.Config("aws");
+const providerOpts = { provider: new aws.Provider("prov", { region: config.require("envRegion") }) };
+
+const repository = new aws.ecr.Repository("myrepository", {
+ forceDelete: true,
+}, providerOpts);
+
+// Get registry info (credentials and endpoint) so we can publish to it.
+const credentials = aws.ecr.getCredentialsOutput({ registryId: repository.registryId }, providerOpts);
+const decodedCredentials = credentials.authorizationToken.apply(tok => Buffer.from(tok, "base64").toString());
+const registryInfo = decodedCredentials.apply(creds => {
+ const [username, password] = creds.split(":");
+ if (!password || !username) {
+ throw new Error("Invalid credentials");
+ }
+ return {
+ address: credentials.proxyEndpoint,
+ username: username,
+ password: password,
+ };
+});
+
+const image = new docker.Image("myimage", {
+ push: true,
+ tags: [pulumi.interpolate`${repository.repositoryUrl}:latest`],
+ context: {
+ location: "./app",
+ },
+ registries: [registryInfo],
+});
+
+export const digest = image.digest;
diff --git a/examples/ecr-image/package.json b/examples/ecr-image/package.json
new file mode 100644
index 00000000000..99f083466bb
--- /dev/null
+++ b/examples/ecr-image/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "ecr-image",
+ "version": "0.0.1",
+ "license": "Apache-2.0",
+ "scripts": {
+ "build": "tsc"
+ },
+ "dependencies": {
+ "@pulumi/pulumi": "^3.0.0",
+ "@pulumi/aws": "^6.0.0",
+ "@pulumi/docker-build": "^0.0.7"
+ },
+ "devDependencies": {
+ "@types/node": "^8.0.0"
+ }
+}
diff --git a/examples/ecr-image/tsconfig.json b/examples/ecr-image/tsconfig.json
new file mode 100644
index 00000000000..ab65afa6135
--- /dev/null
+++ b/examples/ecr-image/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "outDir": "bin",
+ "target": "es2016",
+ "module": "commonjs",
+ "moduleResolution": "node",
+ "sourceMap": true,
+ "experimentalDecorators": true,
+ "pretty": true,
+ "noFallthroughCasesInSwitch": true,
+ "noImplicitReturns": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "files": [
+ "index.ts"
+ ]
+}
diff --git a/examples/examples_nodejs_test.go b/examples/examples_nodejs_test.go
index 39e73547b37..90d6dcb601f 100644
--- a/examples/examples_nodejs_test.go
+++ b/examples/examples_nodejs_test.go
@@ -716,3 +716,17 @@ func TestServerlessAppRepositoryApplication(t *testing.T) {
integration.ProgramTest(t, &test)
}
+
+func TestAccEcrImage(t *testing.T) {
+ test := getJSBaseOptions(t).
+ With(integration.ProgramTestOptions{
+ Dir: filepath.Join(getCwd(t), "ecr-image"),
+ ExtraRuntimeValidation: func(t *testing.T, stack integration.RuntimeValidationStackInfo) {
+ repoDigest, ok := stack.Outputs["digest"].(string)
+ assert.True(t, ok, "expected digest output to be set")
+ assert.NotEmpty(t, repoDigest)
+ },
+ })
+
+ integration.ProgramTest(t, &test)
+}
diff --git a/examples/go.mod b/examples/go.mod
index a87d0b19835..267586b565d 100644
--- a/examples/go.mod
+++ b/examples/go.mod
@@ -4,7 +4,7 @@ go 1.23.2
require (
github.com/aws/aws-sdk-go v1.55.5
- github.com/aws/aws-sdk-go-v2/config v1.27.43
+ github.com/aws/aws-sdk-go-v2/config v1.28.0
github.com/aws/aws-sdk-go-v2/service/iam v1.37.2
github.com/pulumi/providertest v0.1.2
github.com/pulumi/pulumi-aws/provider/v6 v6.0.0-00010101000000-000000000000
@@ -60,7 +60,7 @@ require (
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.41 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 // indirect
- github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.32 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.33 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
@@ -78,21 +78,21 @@ require (
github.com/aws/aws-sdk-go-v2/service/appflow v1.45.3 // indirect
github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.2 // indirect
github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.28.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.0 // indirect
github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.6.2 // indirect
github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.2 // indirect
github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.2 // indirect
github.com/aws/aws-sdk-go-v2/service/appstream v1.41.2 // indirect
github.com/aws/aws-sdk-go-v2/service/appsync v1.38.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/athena v1.47.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/athena v1.48.0 // indirect
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/autoscaling v1.45.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/autoscaling v1.46.0 // indirect
github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.2 // indirect
github.com/aws/aws-sdk-go-v2/service/backup v1.39.3 // indirect
github.com/aws/aws-sdk-go-v2/service/batch v1.46.2 // indirect
github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/bedrock v1.20.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.23.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/bedrock v1.21.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.24.0 // indirect
github.com/aws/aws-sdk-go-v2/service/budgets v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.2 // indirect
github.com/aws/aws-sdk-go-v2/service/chime v1.34.2 // indirect
@@ -127,17 +127,17 @@ require (
github.com/aws/aws-sdk-go-v2/service/configservice v1.50.2 // indirect
github.com/aws/aws-sdk-go-v2/service/connect v1.113.2 // indirect
github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/controltower v1.18.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/controltower v1.18.3 // indirect
github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.2 // indirect
github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.10.2 // indirect
github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.42.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.43.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.0 // indirect
github.com/aws/aws-sdk-go-v2/service/databrew v1.33.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/dataexchange v1.32.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.0 // indirect
github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.2 // indirect
github.com/aws/aws-sdk-go-v2/service/datasync v1.42.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/datazone v1.22.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/datazone v1.23.0 // indirect
github.com/aws/aws-sdk-go-v2/service/dax v1.23.2 // indirect
github.com/aws/aws-sdk-go-v2/service/detective v1.31.2 // indirect
github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.2 // indirect
@@ -149,12 +149,12 @@ require (
github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.13.2 // indirect
github.com/aws/aws-sdk-go-v2/service/drs v1.30.2 // indirect
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.36.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/ec2 v1.182.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ec2 v1.184.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2 // indirect
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/ecs v1.47.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ecs v1.47.4 // indirect
github.com/aws/aws-sdk-go-v2/service/efs v1.33.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/eks v1.50.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/eks v1.51.0 // indirect
github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.0 // indirect
github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.2 // indirect
@@ -169,7 +169,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/finspace v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/firehose v1.34.2 // indirect
github.com/aws/aws-sdk-go-v2/service/fis v1.30.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/fms v1.37.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/fms v1.38.0 // indirect
github.com/aws/aws-sdk-go-v2/service/fsx v1.49.2 // indirect
github.com/aws/aws-sdk-go-v2/service/gamelift v1.36.2 // indirect
github.com/aws/aws-sdk-go-v2/service/glacier v1.26.2 // indirect
@@ -181,6 +181,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/guardduty v1.50.0 // indirect
github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.0 // indirect
github.com/aws/aws-sdk-go-v2/service/inspector v1.25.2 // indirect
github.com/aws/aws-sdk-go-v2/service/inspector2 v1.32.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect
@@ -212,7 +213,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.2 // indirect
github.com/aws/aws-sdk-go-v2/service/location v1.42.2 // indirect
github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/m2 v1.17.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/m2 v1.18.0 // indirect
github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.2 // indirect
github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.2 // indirect
github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.61.2 // indirect
@@ -239,16 +240,16 @@ require (
github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.2 // indirect
github.com/aws/aws-sdk-go-v2/service/pcs v1.2.2 // indirect
github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.15.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/pipes v1.17.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.16.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/pipes v1.18.0 // indirect
github.com/aws/aws-sdk-go-v2/service/polly v1.45.2 // indirect
github.com/aws/aws-sdk-go-v2/service/pricing v1.32.2 // indirect
github.com/aws/aws-sdk-go-v2/service/qbusiness v1.14.0 // indirect
github.com/aws/aws-sdk-go-v2/service/qldb v1.25.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/quicksight v1.76.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/quicksight v1.77.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ram v1.29.2 // indirect
github.com/aws/aws-sdk-go-v2/service/rbin v1.20.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/rds v1.87.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/rds v1.88.0 // indirect
github.com/aws/aws-sdk-go-v2/service/redshift v1.50.0 // indirect
github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.30.2 // indirect
github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.23.2 // indirect
@@ -265,7 +266,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.2 // indirect
github.com/aws/aws-sdk-go-v2/service/route53resolver v1.33.0 // indirect
github.com/aws/aws-sdk-go-v2/service/rum v1.21.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/s3 v1.65.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0 // indirect
github.com/aws/aws-sdk-go-v2/service/s3control v1.49.2 // indirect
github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/sagemaker v1.163.2 // indirect
@@ -306,7 +307,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.2 // indirect
github.com/aws/aws-sdk-go-v2/service/waf v1.25.2 // indirect
github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/wafv2 v1.54.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.0 // indirect
github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.2 // indirect
github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 // indirect
github.com/aws/aws-sdk-go-v2/service/workspaces v1.48.2 // indirect
@@ -390,7 +391,7 @@ require (
github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 // indirect
github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1 // indirect
github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 // indirect
- github.com/hashicorp/terraform-plugin-framework-validators v0.13.0 // indirect
+ github.com/hashicorp/terraform-plugin-framework-validators v0.14.0 // indirect
github.com/hashicorp/terraform-plugin-go v0.24.0 // indirect
github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect
github.com/hashicorp/terraform-plugin-mux v0.16.0 // indirect
diff --git a/examples/go.sum b/examples/go.sum
index e01eefdd4e9..1c5ee0adb5d 100644
--- a/examples/go.sum
+++ b/examples/go.sum
@@ -1238,14 +1238,14 @@ github.com/aws/aws-sdk-go-v2 v1.32.2 h1:AkNLZEyYMLnx/Q/mSKkcMqwNFXMAvFto9bNsHqcT
github.com/aws/aws-sdk-go-v2 v1.32.2/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 h1:pT3hpW0cOHRJx8Y0DfJUEQuqPild8jRGmSFmBgvydr0=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6/go.mod h1:j/I2++U0xX+cr44QjHay4Cvxj6FUbnxrgmqN3H1jTZA=
-github.com/aws/aws-sdk-go-v2/config v1.27.43 h1:p33fDDihFC390dhhuv8nOmX419wjOSDQRb+USt20RrU=
-github.com/aws/aws-sdk-go-v2/config v1.27.43/go.mod h1:pYhbtvg1siOOg8h5an77rXle9tVG8T+BWLWAo7cOukc=
+github.com/aws/aws-sdk-go-v2/config v1.28.0 h1:FosVYWcqEtWNxHn8gB/Vs6jOlNwSoyOCA/g/sxyySOQ=
+github.com/aws/aws-sdk-go-v2/config v1.28.0/go.mod h1:pYhbtvg1siOOg8h5an77rXle9tVG8T+BWLWAo7cOukc=
github.com/aws/aws-sdk-go-v2/credentials v1.17.41 h1:7gXo+Axmp+R4Z+AK8YFQO0ZV3L0gizGINCOWxSLY9W8=
github.com/aws/aws-sdk-go-v2/credentials v1.17.41/go.mod h1:u4Eb8d3394YLubphT4jLEwN1rLNq2wFOlT6OuxFwPzU=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 h1:TMH3f/SCAWdNtXXVPPu5D6wrr4G5hI1rAxbcocKfC7Q=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17/go.mod h1:1ZRXLdTpzdJb9fwTMXiLipENRxkGMTn1sfKexGllQCw=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.32 h1:C2hE+gJ40Cb4vzhFJ+tTzjvBpPloUq7XP6PD3A2Fk7g=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.32/go.mod h1:0OmMtVNp+10JFBTfmA2AIeqBDm0YthDXmE+N7poaptk=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.33 h1:X+4YY5kZRI/cOoSMVMGTqFXHAMg1bvvay7IBcqHpybQ=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.33/go.mod h1:DPynzu+cn92k5UQ6tZhX+wfTB4ah6QDU/NgdHqatmvk=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 h1:UAsR3xA31QGf79WzpG/ixT9FZvQlh5HY1NRqSHBNOCk=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21/go.mod h1:JNr43NFf5L9YaG3eKTm7HQzls9J+A9YYcGI5Quh1r2Y=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 h1:6jZVETqmYCadGFvrYEQfC5fAQmlo80CeL5psbno6r0s=
@@ -1280,8 +1280,8 @@ github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.2 h1:r/++KdfZx8Woi3pI
github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.2/go.mod h1:bcwWgN13kk3Y7iq5stSA+joIygO0/QK7d18ohTEF188=
github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.2 h1:douQmMbPFGG5AxFDoWdImN3T+8N1z32hkQXPIL7NKGs=
github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.2/go.mod h1:yg5Zb3dlzZMV7FsmL5fI82xPgUa62sQP4MeQwTS3NRk=
-github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.28.2 h1:gOn6bFXWTsGHSBMdMUU5hwmZzop650HoYPq0JSqM+so=
-github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.28.2/go.mod h1:6igoPKTMLmlS5UzkIaVsJYLXQjSQAVs75HiY2xdJyKI=
+github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.0 h1:eI1i6YZDDwAd+wN2v40yWwzRd7DMVPO3227233q9vgA=
+github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.0/go.mod h1:6igoPKTMLmlS5UzkIaVsJYLXQjSQAVs75HiY2xdJyKI=
github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.6.2 h1:VhZVJ0HiiWieoahI0LC+/rrAkgwPpuWw37HlVxs8OrM=
github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.6.2/go.mod h1:GzJ9Fze7pxMh9r8wIjFWWDpR7LidenXT5/xEAlZjBkQ=
github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.2 h1:YWAxOgkdNG0+K25He+mU3QnxoB7HAGoqDOSLkIA4Ix8=
@@ -1292,12 +1292,12 @@ github.com/aws/aws-sdk-go-v2/service/appstream v1.41.2 h1:gNGJ/+acSa5t10VkXTi0FK
github.com/aws/aws-sdk-go-v2/service/appstream v1.41.2/go.mod h1:zjq724ntnP8ame8ZzDW0/yca9YPb4CeENOS4hSH/t0Y=
github.com/aws/aws-sdk-go-v2/service/appsync v1.38.2 h1:ygiw0umAkC+Gdzcs77aaLtjq4UUJOW6lIu7eK8vpaxM=
github.com/aws/aws-sdk-go-v2/service/appsync v1.38.2/go.mod h1:L7JKjMdMuWIfvOLPkN0dGNSLbKrcey+XATTHeB+dCJM=
-github.com/aws/aws-sdk-go-v2/service/athena v1.47.2 h1:y8ela03RAsDRd4ajx/M2l/aZQAjwz763LWvuvltxXak=
-github.com/aws/aws-sdk-go-v2/service/athena v1.47.2/go.mod h1:bmGCoIiNCRnfKa6T64nCTKrWOtw362tPUKDpq/fjMDU=
+github.com/aws/aws-sdk-go-v2/service/athena v1.48.0 h1:oGuR6wuok/T96ISXwQZ64jA83g0qw+poXrDqElx8jk0=
+github.com/aws/aws-sdk-go-v2/service/athena v1.48.0/go.mod h1:bmGCoIiNCRnfKa6T64nCTKrWOtw362tPUKDpq/fjMDU=
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.2 h1:n6IT2Q6DJg+540tWwIBnJHMrO3Vl5nu+HafGNNo077c=
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.2/go.mod h1:IZovD0WWpMx5oFy87RwgPPQcnMCQsiFHir7C9SCV50E=
-github.com/aws/aws-sdk-go-v2/service/autoscaling v1.45.2 h1:NurelK9YO5OB0HlIUj1ycEZJIFNvkuG5iJjo7/r6AJ4=
-github.com/aws/aws-sdk-go-v2/service/autoscaling v1.45.2/go.mod h1:YmWinWbpoVdOgnBZQFeZJ2l4kT97lvnRlTvX2zyyBfc=
+github.com/aws/aws-sdk-go-v2/service/autoscaling v1.46.0 h1:HQ0OvPxqTh2mYKRx4BappkCeLBU+E6oWAKSJ5JpP03c=
+github.com/aws/aws-sdk-go-v2/service/autoscaling v1.46.0/go.mod h1:YmWinWbpoVdOgnBZQFeZJ2l4kT97lvnRlTvX2zyyBfc=
github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.2 h1:adYgaCwIbN816Nxyjhfh4P+YkbgoWX5u/+195qOeDH8=
github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.2/go.mod h1:FJIWPT79C+J0TC0svBOcVZi3agyv/t8ej+nZekrTItU=
github.com/aws/aws-sdk-go-v2/service/backup v1.39.3 h1:mjYDN7CPl0CHrTBe36EKqAAGGXAKy8MXuNF+2qHkVdM=
@@ -1306,10 +1306,10 @@ github.com/aws/aws-sdk-go-v2/service/batch v1.46.2 h1:QS0NsLcQjsigdaswnWN/xlqZuC
github.com/aws/aws-sdk-go-v2/service/batch v1.46.2/go.mod h1:cAqXVRS4uwp/DsssDOY+Gi2wiDoQ4xgRWaPAX/mJbi8=
github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.2 h1:phRK57EADWnti25vt4PoNtsOgD/ZH5ojlm5Netstokk=
github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.2/go.mod h1:l/bYZQeSpoxKlYA8gEcQQDqkec+MId5k1g3r/EXpYdg=
-github.com/aws/aws-sdk-go-v2/service/bedrock v1.20.2 h1:5lZExZBtvE/iWK387JSMbfLWnVSiGCUB4nZdc413RCs=
-github.com/aws/aws-sdk-go-v2/service/bedrock v1.20.2/go.mod h1:o0EnsM4cr3V+xf+dQw3TzeqOSYkxxq7VgGnDsgyjgBw=
-github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.23.2 h1:xy4po1FFPotL07BNMDNDrgivQB9rxi6/rV2+Q4qQQ5M=
-github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.23.2/go.mod h1:gYKKDvLQt8S5EdovDwxZBDTVWa4aC86GixDtsmxcZqM=
+github.com/aws/aws-sdk-go-v2/service/bedrock v1.21.0 h1:STFP+23Q1vXMnauv3OWu5vLenuzWPKYeTC1JUHolW8U=
+github.com/aws/aws-sdk-go-v2/service/bedrock v1.21.0/go.mod h1:o0EnsM4cr3V+xf+dQw3TzeqOSYkxxq7VgGnDsgyjgBw=
+github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.24.0 h1:NbiMdHggevTwK+YY/4gpPEgt60z7dfdPpznhUR1qi1c=
+github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.24.0/go.mod h1:gYKKDvLQt8S5EdovDwxZBDTVWa4aC86GixDtsmxcZqM=
github.com/aws/aws-sdk-go-v2/service/budgets v1.28.2 h1:bHYXDkOhPR44ewGRD+7jU6zAvgqAJfNWQ5tsMp4C+UE=
github.com/aws/aws-sdk-go-v2/service/budgets v1.28.2/go.mod h1:VS+/KtauBBdzOBHe4v7LjF0lHb4l5f+/Bwlq6aG/LJ0=
github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.2 h1:/q5MHgjvnVjFwXS+DVhfvk8HS9B+TlwcywoDD0+HiyA=
@@ -1378,8 +1378,8 @@ github.com/aws/aws-sdk-go-v2/service/connect v1.113.2 h1:h45hg2xWdzhr+eFn7aqfg26
github.com/aws/aws-sdk-go-v2/service/connect v1.113.2/go.mod h1:Cr/NBm+YdRHJg0uHNTIDEF++8IQL207oUsjhTAyS4zE=
github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.2 h1:BtBIsvj3F0LrsDoLPSZO9qanyXYoDFmXCNJ3I+X80XI=
github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.2/go.mod h1:ZrU0ZA81zcKXOUnC8rvjYddEFB3pl7t9tYCdtIRFAb4=
-github.com/aws/aws-sdk-go-v2/service/controltower v1.18.2 h1:IZi4ivxDbOAfCZvEeNhvYwrBANiYF9RE35yczZb4f0Y=
-github.com/aws/aws-sdk-go-v2/service/controltower v1.18.2/go.mod h1:15mOn+tmGhx9+TidoQaa8gSBItjFx/A5XT9GV1L+LPc=
+github.com/aws/aws-sdk-go-v2/service/controltower v1.18.3 h1:v4aBi2Jw4vGmLv58u5YZduJbbErX8a0ML1+RRWI7Sko=
+github.com/aws/aws-sdk-go-v2/service/controltower v1.18.3/go.mod h1:15mOn+tmGhx9+TidoQaa8gSBItjFx/A5XT9GV1L+LPc=
github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.2 h1:i7yTib7O8olbSmTyW2c5C2asN6GUfMI2RLmdKsc/3e4=
github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.2/go.mod h1:2Ux5wul+bF0/JIAATf1cv3PWJatZqi/dFt7bRSeYEcU=
github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.2 h1:Tg7kuCaHMCFOW+HhK/maIH7qtkeDbzahqQOUO9c+/L8=
@@ -1388,18 +1388,18 @@ github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.10.2 h1:3MtTruznyGml
github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.10.2/go.mod h1:khyqDEa/5mT22FwodCCtZN4n+9C62VXwqNiPeAkqYlY=
github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.42.2 h1:dHQXIHPlijJIBUubNpShhIUooNDUKB/B8nJ6OSsJfmQ=
github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.42.2/go.mod h1:n9F5nRLYyqBz1khsBptXyceq6ZJG9xqzl2pIyVqYq/8=
-github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.43.0 h1:jb9QBxC7Xh0cSpprVOtzJtlyVbJrnLs0oAplby2sZ78=
-github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.43.0/go.mod h1:+JQlP0jMyl8iWGcUcGzTf+qculjIY+08UN7RKiljmps=
+github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.0 h1:u/zESCIEwz9UoEHFZgITa097TkQZWyrqR5bNHZn/Ozw=
+github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.0/go.mod h1:+JQlP0jMyl8iWGcUcGzTf+qculjIY+08UN7RKiljmps=
github.com/aws/aws-sdk-go-v2/service/databrew v1.33.2 h1:M18nqFfXtAgxfGoUaaeJS7x8vfZum5SeGq1+5Iu0DLQ=
github.com/aws/aws-sdk-go-v2/service/databrew v1.33.2/go.mod h1:CVFxoBbEUNT6MbNBrDAv2rAZJSuYYLUssU9pyXVQbEc=
-github.com/aws/aws-sdk-go-v2/service/dataexchange v1.32.2 h1:Xm45iokXdZeq+gSsl7P3ZLzPnHIAUWdH2RLOEYt342Y=
-github.com/aws/aws-sdk-go-v2/service/dataexchange v1.32.2/go.mod h1:s7mEeIfGsxtBz5vAt/0N+cTHrO+jktEyJMuRxhaLQG8=
+github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.0 h1:k6mEvId7/e7VFQHDYERVSIINa/b+9rTs8kASzsS5aQ0=
+github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.0/go.mod h1:s7mEeIfGsxtBz5vAt/0N+cTHrO+jktEyJMuRxhaLQG8=
github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.2 h1:RyuqjcKTFUrAcOrORvZTc7OrqO280S8CKBHjNuSQWHY=
github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.2/go.mod h1:s5RnNkqKX4CuWw48LUh0l18kxmcY1ft7Vz1uZOogxmk=
github.com/aws/aws-sdk-go-v2/service/datasync v1.42.2 h1:mNOyYZFjd3CakcvYIVCmqXFZ0pZJSGobtDx5UciBLOc=
github.com/aws/aws-sdk-go-v2/service/datasync v1.42.2/go.mod h1:qWAvIKfkNqX/IN0sXwOiq73zzSCW/Ar96mHbfY/5D9c=
-github.com/aws/aws-sdk-go-v2/service/datazone v1.22.2 h1:d/oy2uO4xd8CdUvpPBtdMcyicNvmjcv1FMR2uz8GeAQ=
-github.com/aws/aws-sdk-go-v2/service/datazone v1.22.2/go.mod h1:vP3xFM0eQ1QJiEyoLeMQQZFPyVDyAiz8oZT6Oyktc44=
+github.com/aws/aws-sdk-go-v2/service/datazone v1.23.0 h1:vPcABuqO6byiCK1ziiuqRGhwJIZ5olcLIVqdfsVjnLc=
+github.com/aws/aws-sdk-go-v2/service/datazone v1.23.0/go.mod h1:vP3xFM0eQ1QJiEyoLeMQQZFPyVDyAiz8oZT6Oyktc44=
github.com/aws/aws-sdk-go-v2/service/dax v1.23.2 h1:sa4Tc0fyVoQ4TYTpYEts24eme3A/gJ8JtJ8ivPnmZfU=
github.com/aws/aws-sdk-go-v2/service/dax v1.23.2/go.mod h1:I0tRaWbXqL20SQYLpkj/SMfF7DWn2uixcWh6wgxPmIA=
github.com/aws/aws-sdk-go-v2/service/detective v1.31.2 h1:YNJKvWXuq2bSP7gGiiUAFovKsIfRroQ+hrH7jAUN0IE=
@@ -1422,18 +1422,18 @@ github.com/aws/aws-sdk-go-v2/service/drs v1.30.2 h1:x3Npo3YynC7zY+2NBo7BGpyJ2FQ6
github.com/aws/aws-sdk-go-v2/service/drs v1.30.2/go.mod h1:J+ZP4mpSfSaWNFekoJULiHE2yZBzjYRMtWSlQhjZUQY=
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.36.2 h1:kJqyYcGqhWFmXqjRrtFFD4Oc9FXiskhsll2xnlpe8Do=
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.36.2/go.mod h1:+t2Zc5VNOzhaWzpGE+cEYZADsgAAQT5v55AO+fhU+2s=
-github.com/aws/aws-sdk-go-v2/service/ec2 v1.182.0 h1:LaeziEhHZ/SJZYBK223QVzl3ucHvA9IP4tQMcxGrc9I=
-github.com/aws/aws-sdk-go-v2/service/ec2 v1.182.0/go.mod h1:kYXaB4FzyhEJjvrJ84oPnMElLiEAjGxxUunVW2tBSng=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.184.0 h1:SZnuDlml1uFv5ojh+QTxS+Yru89Hr3QYIUwWoY71frI=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.184.0/go.mod h1:kYXaB4FzyhEJjvrJ84oPnMElLiEAjGxxUunVW2tBSng=
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2 h1:VDQaVwGOokbd3VUbHF+wupiffdrbAZPdQnr5XZMJqrs=
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2/go.mod h1:lvUlMghKYmSxSfv0vU7pdU/8jSY+s0zpG8xXhaGKCw0=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2 h1:Zru9Iy2JPM5+uRnFnoqeOZzi8JIVIHJ0ua6JdeDHcyg=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2/go.mod h1:PtQC3XjutCYFCn1+i8+wtpDaXvEK+vXF2gyLIKAmh4A=
-github.com/aws/aws-sdk-go-v2/service/ecs v1.47.3 h1:4eCmSyAxsmZ1i8Bf3YoXX0XXx4hN1G4Y+ujCY4/VYHE=
-github.com/aws/aws-sdk-go-v2/service/ecs v1.47.3/go.mod h1:sMFLFhL27cKYa/eQYZp4asvIwHsnJWrAzTUpy9AQdnU=
+github.com/aws/aws-sdk-go-v2/service/ecs v1.47.4 h1:CTkPGE8fiElvLtYWl/U+Eu5+1fVXiZbJUjyVCRSRgxk=
+github.com/aws/aws-sdk-go-v2/service/ecs v1.47.4/go.mod h1:sMFLFhL27cKYa/eQYZp4asvIwHsnJWrAzTUpy9AQdnU=
github.com/aws/aws-sdk-go-v2/service/efs v1.33.2 h1:ePgaKeaN4kXAqzxvDsSilIIq+jftioJb4KXRobIM6ko=
github.com/aws/aws-sdk-go-v2/service/efs v1.33.2/go.mod h1:ZEnNWIxtJp/3H1pPE+IZE4exGTJkAdoGfpM5m5/evxo=
-github.com/aws/aws-sdk-go-v2/service/eks v1.50.2 h1:vL3RqZ4x6uqpKswp5gB0KyGcsrgkUdKmLTXCDHDUUZw=
-github.com/aws/aws-sdk-go-v2/service/eks v1.50.2/go.mod h1:oaPCqTzAe8C5RQZJGRD4RENcV7A4n99uGxbD4rULbNg=
+github.com/aws/aws-sdk-go-v2/service/eks v1.51.0 h1:BYyB+byjQ7oyupe3v+YjTp1yfmfNEwChYA2naCc85xI=
+github.com/aws/aws-sdk-go-v2/service/eks v1.51.0/go.mod h1:oaPCqTzAe8C5RQZJGRD4RENcV7A4n99uGxbD4rULbNg=
github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.0 h1:rebYexCOCdOpR1zU1ObUIn+or4pS38W1IVQGKzZcSos=
github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.0/go.mod h1:pfx/wDobZvEpxE96P1i0nHbTYEJMCCMv3uMk7UPvdsE=
github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.2 h1:La4LqsDHSMdCKoYzKs5b20wSYHfvc6xFBb8OAPDFuGg=
@@ -1462,8 +1462,8 @@ github.com/aws/aws-sdk-go-v2/service/firehose v1.34.2 h1:9uMAwYszi6P6FTbUVq1X6MM
github.com/aws/aws-sdk-go-v2/service/firehose v1.34.2/go.mod h1:yGI4W+5bau/K+JNUGepk4lwqLPt77Le6bLL8XrmKAMY=
github.com/aws/aws-sdk-go-v2/service/fis v1.30.2 h1:qw7ZkSCy0akQJbJdIgRQaqXEHe7PrA3DHvE4VvemFJw=
github.com/aws/aws-sdk-go-v2/service/fis v1.30.2/go.mod h1:CArS66NFuL1fBiSLVfWZV6oQjicsdViLm7Ic9Lte7x4=
-github.com/aws/aws-sdk-go-v2/service/fms v1.37.2 h1:TwT5oa4EUI2O97pPSzLQmJH/4R1aqV+ucnMatvksjXE=
-github.com/aws/aws-sdk-go-v2/service/fms v1.37.2/go.mod h1:sWvDxD23qcn9nbwvVfCmXOQx2HufC9n76agqoio9pfg=
+github.com/aws/aws-sdk-go-v2/service/fms v1.38.0 h1:GcVv0jgW1fXkNkDFYVQTfpkYB+J4UBXXQ69Epx8MzyE=
+github.com/aws/aws-sdk-go-v2/service/fms v1.38.0/go.mod h1:sWvDxD23qcn9nbwvVfCmXOQx2HufC9n76agqoio9pfg=
github.com/aws/aws-sdk-go-v2/service/fsx v1.49.2 h1:Wc2N860CGBc3GJTqfucK7IvQCtGECZXOrHACyFth3sI=
github.com/aws/aws-sdk-go-v2/service/fsx v1.49.2/go.mod h1:sk7ZHm49x4rJzJAfeo1dl43sCL26lZx5/Yx2b2VUJkU=
github.com/aws/aws-sdk-go-v2/service/gamelift v1.36.2 h1:YN63wWC/rOHKr2sKdCQ7d8GA1xkWpiAqxDeZEBRxvqg=
@@ -1488,6 +1488,8 @@ github.com/aws/aws-sdk-go-v2/service/iam v1.37.2 h1:E7vCDUFeDN8uOk8Nb2d4E1howWS1
github.com/aws/aws-sdk-go-v2/service/iam v1.37.2/go.mod h1:QzMecFrIFYJ1cyxjlUoIFRzYSDX19gdqYUd0Tyws2J8=
github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.2 h1:QSrf6HsounqUtlFAwArhVNHPt3WXmSm0pz7RtojjBdo=
github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.2/go.mod h1:PtkL4CXOQy84zudggyFtyJFXCGDRY8igg9Nfo9df1sU=
+github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.0 h1:+gsGZbypyP+atqTDsrtaKe26TgrONg3z6rLTm5RmIhg=
+github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.0/go.mod h1:hqe5ZWGAMgZC14I2GrXc+tUPpucDfGb94RB/7IOdQ/o=
github.com/aws/aws-sdk-go-v2/service/inspector v1.25.2 h1:xiQ70pTvXs9PFYmewDgeICVxRpiQP+cWQZmunV5uYKk=
github.com/aws/aws-sdk-go-v2/service/inspector v1.25.2/go.mod h1:sDcAla3dh7DO6AAdh+29e+rowLaIcw2fxuwNFCIlBuA=
github.com/aws/aws-sdk-go-v2/service/inspector2 v1.32.2 h1:D0nDW7y3KLPGShqF7gaKFRswY8ekG8jsfN4r3CWqAjQ=
@@ -1550,8 +1552,8 @@ github.com/aws/aws-sdk-go-v2/service/location v1.42.2 h1:QeEPlMSVn/GtUGVz/G9FBFV
github.com/aws/aws-sdk-go-v2/service/location v1.42.2/go.mod h1:nCDXuPUnJLC/PvDh6iXjM/4LIUak0MTzXamdVn9Typk=
github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.2 h1:xq/m847nPu/qjcGWfT5AMmLfmb0Z8RzYmsiPQCnqWRg=
github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.2/go.mod h1:sWTm2Cszymy7WYqCuLvw/Zvzy1t08ceZP6Brpo7COY0=
-github.com/aws/aws-sdk-go-v2/service/m2 v1.17.2 h1:2U0/1YSsugrRPnSa9WSPQqBEt5/8ZuTPwYhSFjndIzY=
-github.com/aws/aws-sdk-go-v2/service/m2 v1.17.2/go.mod h1:HWB51wlVsdbT1BrpH4BYrgpxhc012ja8je2TTwjzr/0=
+github.com/aws/aws-sdk-go-v2/service/m2 v1.18.0 h1:4yncbqHQ5TmL+AElqjSIppgEvCiNgboMDk0FcQ5qSW8=
+github.com/aws/aws-sdk-go-v2/service/m2 v1.18.0/go.mod h1:HWB51wlVsdbT1BrpH4BYrgpxhc012ja8je2TTwjzr/0=
github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.2 h1:MbR0vRNd7am1So5hcYho+N11dxzhZbB4qdsi+cmcBp0=
github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.2/go.mod h1:B2FFzz9qQQ8l3MZV/MjMi4ua9VbqcQK8Huuv6066RZ8=
github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.2 h1:AibWQdB6x5CTlJ11/C0wp+fAUUKmCFLwU5H4h9kov0c=
@@ -1604,10 +1606,10 @@ github.com/aws/aws-sdk-go-v2/service/pcs v1.2.2 h1:UGa4l3NHvmTWb+tbaNrpqYt0jHgiQ
github.com/aws/aws-sdk-go-v2/service/pcs v1.2.2/go.mod h1:IisjjF5pkMDOaPgMt3XtIp4ovE0eIghP6Xt4UjZOejs=
github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.2 h1:2M25NsmsuIgFd4JLfcrgOhaikgJ77QghJitjCJM2fRM=
github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.2/go.mod h1:MXITGxBf1myinMhDcLjx/8dskl5uwwOkjQuSk97mBe0=
-github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.15.2 h1:2c/NwrSaSvoMIUeNIaFlF7OODfzAt/Pfm73ytyRkKUk=
-github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.15.2/go.mod h1:jndiYCP1PdoEayQPElKL+m9Rg6sG+TElnL04eNBPZa4=
-github.com/aws/aws-sdk-go-v2/service/pipes v1.17.2 h1:M6llQCYVeHTlLBK45YcwXpmQptmI/at47l3QXnGY6rU=
-github.com/aws/aws-sdk-go-v2/service/pipes v1.17.2/go.mod h1:XtWK2mf8LxoRhiuidG/bsHd/kOGUijNkS2MKu5Yz2ZY=
+github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.16.0 h1:oqt4D9ke97Mry5q6RWxRavlq+Z/mppBUGunongcrP5I=
+github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.16.0/go.mod h1:jndiYCP1PdoEayQPElKL+m9Rg6sG+TElnL04eNBPZa4=
+github.com/aws/aws-sdk-go-v2/service/pipes v1.18.0 h1:G6JDBcdwWA+c4pUrf1L6N7qx+l7nDhQyEHpwjxrj5vI=
+github.com/aws/aws-sdk-go-v2/service/pipes v1.18.0/go.mod h1:XtWK2mf8LxoRhiuidG/bsHd/kOGUijNkS2MKu5Yz2ZY=
github.com/aws/aws-sdk-go-v2/service/polly v1.45.2 h1:8SxFBXQz6ugH4+/91nQlYMHGpH4pdFDSOin+oQnMvJ8=
github.com/aws/aws-sdk-go-v2/service/polly v1.45.2/go.mod h1:PAg+2IgPApH1b/uKkuf30SV6JTzew21vz0ztIFFas/M=
github.com/aws/aws-sdk-go-v2/service/pricing v1.32.2 h1:eBKzA9Te6JHD1TfVjuja7pa8iEdXVzW5z0QPcbrPhNs=
@@ -1616,14 +1618,14 @@ github.com/aws/aws-sdk-go-v2/service/qbusiness v1.14.0 h1:o+1+kyTMk1Wxiegc6tFGhY
github.com/aws/aws-sdk-go-v2/service/qbusiness v1.14.0/go.mod h1:O4hOPHq3wkF16n15JtVWRfHV9FgR9cWVK+ZEiVrZQt4=
github.com/aws/aws-sdk-go-v2/service/qldb v1.25.2 h1:4JPtMnMSUvNI0WmbmS6z3PrnFaYMivMOM61RaXlqFs4=
github.com/aws/aws-sdk-go-v2/service/qldb v1.25.2/go.mod h1:LmPnnHoe1VWC1pnVVBP2IMJ2i/Fc70C9yamwgmwOyA4=
-github.com/aws/aws-sdk-go-v2/service/quicksight v1.76.2 h1:kne8Igc11d2/rTfrjDql4Eg5CAl/EC2VXbagPgeEqHQ=
-github.com/aws/aws-sdk-go-v2/service/quicksight v1.76.2/go.mod h1:q9eOAAmLIZKHy+3ONua6b/WW2HwdtyVb8gUSBbh8Ejs=
+github.com/aws/aws-sdk-go-v2/service/quicksight v1.77.0 h1:rduomqww7uQsAZhwOQeKbjSk37v7gvuBLcGytuhFT6Q=
+github.com/aws/aws-sdk-go-v2/service/quicksight v1.77.0/go.mod h1:q9eOAAmLIZKHy+3ONua6b/WW2HwdtyVb8gUSBbh8Ejs=
github.com/aws/aws-sdk-go-v2/service/ram v1.29.2 h1:MzE8+xBV5omQ8aP7I2XarPS1bORO3tHpJcyCkMQQa+8=
github.com/aws/aws-sdk-go-v2/service/ram v1.29.2/go.mod h1:/rvsX6270oRGq4zBWQlFAenU4144KSJcaOFrDffHsjk=
github.com/aws/aws-sdk-go-v2/service/rbin v1.20.2 h1:U+BnnWf3/yxyTQO5GBXkFO9S2lxJwtEcHskMSNIqqE0=
github.com/aws/aws-sdk-go-v2/service/rbin v1.20.2/go.mod h1:B7r89tuqcg/tnDE5rtukNU1irjRhC+S10GjEFIFAj1M=
-github.com/aws/aws-sdk-go-v2/service/rds v1.87.2 h1:EUBCpvWYJRDV+baakcOlytZsEnjq21dBBw+di4q5TUE=
-github.com/aws/aws-sdk-go-v2/service/rds v1.87.2/go.mod h1:KziDa/w2AVz3dfANxwuBV0XqoQjxTKbVQyLNH5BRvO4=
+github.com/aws/aws-sdk-go-v2/service/rds v1.88.0 h1:QdpwmIB0ZZN/devOnw+dJSF2VFnmn3LM5kuEKQ0kpj0=
+github.com/aws/aws-sdk-go-v2/service/rds v1.88.0/go.mod h1:KziDa/w2AVz3dfANxwuBV0XqoQjxTKbVQyLNH5BRvO4=
github.com/aws/aws-sdk-go-v2/service/redshift v1.50.0 h1:AT056ID/JR3pCAhwpak11ATQ6wRtaQpFqoJYjoEG7aM=
github.com/aws/aws-sdk-go-v2/service/redshift v1.50.0/go.mod h1:LuUSvbRK6lNleFaeXOm3gJxnnau2qoZd1wPU7DwjS4w=
github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.30.2 h1:nghfgMfAqF3xl783g5Ig0UZafPMNAHm+Bx8G2l63aEg=
@@ -1656,8 +1658,8 @@ github.com/aws/aws-sdk-go-v2/service/route53resolver v1.33.0 h1:CBZvorZuZJOtHRnM
github.com/aws/aws-sdk-go-v2/service/route53resolver v1.33.0/go.mod h1:hw1tbJqbXUc5KzxQjgMhxQ7jrvlJHEnnvpBbrpECoy4=
github.com/aws/aws-sdk-go-v2/service/rum v1.21.2 h1:/Pkl6B1xo1Q+/O31/M6+jIu/8DxyNR4R/7BUbTrpG5M=
github.com/aws/aws-sdk-go-v2/service/rum v1.21.2/go.mod h1:TdJqY9exgK2kZ9ltoAubxiJ+a+mfF4qLYXsQaI1JkUI=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.65.3 h1:xxHGZ+wUgZNACQmxtdvP5tgzfsxGS3vPpTP5Hy3iToE=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.65.3/go.mod h1:cB6oAuus7YXRZhWCc1wIwPywwZ1XwweNp2TVAEGYeB8=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0 h1:xA6XhTF7PE89BCNHJbQi8VvPzcgMtmGC5dr8S8N7lHk=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0/go.mod h1:cB6oAuus7YXRZhWCc1wIwPywwZ1XwweNp2TVAEGYeB8=
github.com/aws/aws-sdk-go-v2/service/s3control v1.49.2 h1:W1nwi6M/LfTRO8bPw9wlKJ1tDy1tIT4fytBsHXpIRIw=
github.com/aws/aws-sdk-go-v2/service/s3control v1.49.2/go.mod h1:+EAvXfnipjpvEfaKWS98sgU7KgzEuH4/qxJIeEG+GTY=
github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.2 h1:n5Pq/tEiZFuk6Ylju7zyWjA6tlgOvpBVx7h3KJtMC5k=
@@ -1738,8 +1740,8 @@ github.com/aws/aws-sdk-go-v2/service/waf v1.25.2 h1:mGMfHPEXIR1G2mRJ5BGQnksDTt7J
github.com/aws/aws-sdk-go-v2/service/waf v1.25.2/go.mod h1:g7m/OfmrD3MK7JHjJ/NBxMy87Mffp1KhNhQIKskMp2U=
github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.2 h1:PMBOZsPm34AE5+0FUkBD94hoEdAsRiVNO+V1NcVstWk=
github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.2/go.mod h1:Zw9xd/Zg0wMX3V57Pi/KAiQdqXg9ikfdEd0IK83v9B0=
-github.com/aws/aws-sdk-go-v2/service/wafv2 v1.54.2 h1:SXwBXwm13cbQKjV3nt7Fkkxs/blH3lrbV9aKdjT+Zmk=
-github.com/aws/aws-sdk-go-v2/service/wafv2 v1.54.2/go.mod h1:0omlXhQY21zKfGkdIfufpV7kLt564XtjQcywixaNXrM=
+github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.0 h1:sS3SDk8EugdW+KW56VR6qcEg8JpC8pNLVICVBr8mMb4=
+github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.0/go.mod h1:0omlXhQY21zKfGkdIfufpV7kLt564XtjQcywixaNXrM=
github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.2 h1:uhOu5pbceq96a/0nWtf/2Drt/M9hh94ic5d4LaEdFzE=
github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.2/go.mod h1:VJNJ9aES48jXBIc74SZnP0KmQr6Fku2eYHSV8854qpc=
github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 h1:VN3Qydtdl3UlJRHVxQxSP1d8I5gtvT5zdaCCAfZST7Y=
@@ -2178,8 +2180,8 @@ github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1 h1:gm5b1kHgFFhaK
github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1/go.mod h1:MsjL1sQ9L7wGwzJ5RjcI6FzEMdyoBnw+XK8ZnOvQOLY=
github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 h1:v3DapR8gsp3EM8fKMh6up9cJUFQ2iRaFsYLP8UJnCco=
github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0/go.mod h1:c3PnGE9pHBDfdEVG9t1S1C9ia5LW+gkFR0CygXlM8ak=
-github.com/hashicorp/terraform-plugin-framework-validators v0.13.0 h1:bxZfGo9DIUoLLtHMElsu+zwqI4IsMZQBRRy4iLzZJ8E=
-github.com/hashicorp/terraform-plugin-framework-validators v0.13.0/go.mod h1:wGeI02gEhj9nPANU62F2jCaHjXulejm/X+af4PdZaNo=
+github.com/hashicorp/terraform-plugin-framework-validators v0.14.0 h1:3PCn9iyzdVOgHYOBmncpSSOxjQhCTYmc+PGvbdlqSaI=
+github.com/hashicorp/terraform-plugin-framework-validators v0.14.0/go.mod h1:LwDKNdzxrDY/mHBrlC6aYfE2fQ3Dk3gaJD64vNiXvo4=
github.com/hashicorp/terraform-plugin-go v0.22.0/go.mod h1:mPULV91VKss7sik6KFEcEu7HuTogMLLO/EvWCuFkRVE=
github.com/hashicorp/terraform-plugin-go v0.24.0 h1:2WpHhginCdVhFIrWHxDEg6RBn3YaWzR2o6qUeIEat2U=
github.com/hashicorp/terraform-plugin-go v0.24.0/go.mod h1:tUQ53lAsOyYSckFGEefGC5C8BAaO0ENqzFd3bQeuYQg=
diff --git a/patches/0002-Add-S3-legacy-bucket-to-resources.patch b/patches/0002-Add-S3-legacy-bucket-to-resources.patch
index 3c93f551849..ad274dc832e 100644
--- a/patches/0002-Add-S3-legacy-bucket-to-resources.patch
+++ b/patches/0002-Add-S3-legacy-bucket-to-resources.patch
@@ -14,7 +14,7 @@ scheme for registration: see
https://github.com/hashicorp/terraform-provider-aws/pull/29717.
diff --git a/internal/provider/provider.go b/internal/provider/provider.go
-index 08f2e6ee07..75389aad3d 100644
+index b048f661fe..b6521d3f55 100644
--- a/internal/provider/provider.go
+++ b/internal/provider/provider.go
@@ -14,6 +14,8 @@ import (
diff --git a/patches/0004-De-deprecate-bucket_object.patch b/patches/0004-De-deprecate-bucket_object.patch
index f10f0bf92f8..2a26e0e13be 100644
--- a/patches/0004-De-deprecate-bucket_object.patch
+++ b/patches/0004-De-deprecate-bucket_object.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] De-deprecate bucket_object
diff --git a/internal/service/s3/bucket_object.go b/internal/service/s3/bucket_object.go
-index 7030b9cdb1..6e42e471c0 100644
+index 631a49255c..f20c66ca2e 100644
--- a/internal/service/s3/bucket_object.go
+++ b/internal/service/s3/bucket_object.go
-@@ -71,7 +71,7 @@ func resourceBucketObject() *schema.Resource {
+@@ -70,7 +70,7 @@ func resourceBucketObject() *schema.Resource {
Computed: true,
},
names.AttrBucket: {
@@ -17,7 +17,7 @@ index 7030b9cdb1..6e42e471c0 100644
Type: schema.TypeString,
Required: true,
ForceNew: true,
-@@ -128,7 +128,7 @@ func resourceBucketObject() *schema.Resource {
+@@ -127,7 +127,7 @@ func resourceBucketObject() *schema.Resource {
Default: false,
},
names.AttrKey: {
@@ -26,7 +26,7 @@ index 7030b9cdb1..6e42e471c0 100644
Type: schema.TypeString,
Required: true,
ForceNew: true,
-@@ -201,7 +201,9 @@ func resourceBucketObject() *schema.Resource {
+@@ -193,7 +193,9 @@ func resourceBucketObject() *schema.Resource {
},
},
diff --git a/patches/0009-Add-ECR-credentials_data_source.patch b/patches/0009-Add-ECR-credentials_data_source.patch
index 393c4947b50..2356a78f899 100644
--- a/patches/0009-Add-ECR-credentials_data_source.patch
+++ b/patches/0009-Add-ECR-credentials_data_source.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add ECR credentials_data_source
diff --git a/internal/provider/provider.go b/internal/provider/provider.go
-index 75389aad3d..aa05ae4790 100644
+index b6521d3f55..c7c3935b94 100644
--- a/internal/provider/provider.go
+++ b/internal/provider/provider.go
@@ -14,6 +14,8 @@ import (
diff --git a/patches/0014-add-matchmaking-configuration-72.patch b/patches/0014-add-matchmaking-configuration-72.patch
index 030cdc6ec77..b9e73871179 100644
--- a/patches/0014-add-matchmaking-configuration-72.patch
+++ b/patches/0014-add-matchmaking-configuration-72.patch
@@ -10,7 +10,7 @@ Subject: [PATCH] add matchmaking configuration (#72)
* add resource docs
diff --git a/internal/provider/provider.go b/internal/provider/provider.go
-index aa05ae4790..3b939a83f3 100644
+index c7c3935b94..30ebfcf0f3 100644
--- a/internal/provider/provider.go
+++ b/internal/provider/provider.go
@@ -16,6 +16,7 @@ import (
diff --git a/patches/0018-Change-default-descriptions-to-Managed-by-Pulumi.patch b/patches/0018-Change-default-descriptions-to-Managed-by-Pulumi.patch
index f615a8d8c27..091f91960b4 100644
--- a/patches/0018-Change-default-descriptions-to-Managed-by-Pulumi.patch
+++ b/patches/0018-Change-default-descriptions-to-Managed-by-Pulumi.patch
@@ -278,7 +278,7 @@ index 6812406afa..bc44534a05 100644
names.AttrName: {
Type: schema.TypeString,
diff --git a/internal/service/route53/record.go b/internal/service/route53/record.go
-index aeef59b958..abac8702c5 100644
+index e845687f06..87e1dd26d3 100644
--- a/internal/service/route53/record.go
+++ b/internal/service/route53/record.go
@@ -360,7 +360,7 @@ func resourceRecordCreate(ctx context.Context, d *schema.ResourceData, meta inte
@@ -290,7 +290,7 @@ index aeef59b958..abac8702c5 100644
},
HostedZoneId: aws.String(cleanZoneID(aws.ToString(zoneRecord.HostedZone.Id))),
}
-@@ -662,7 +662,7 @@ func resourceRecordUpdate(ctx context.Context, d *schema.ResourceData, meta inte
+@@ -664,7 +664,7 @@ func resourceRecordUpdate(ctx context.Context, d *schema.ResourceData, meta inte
ResourceRecordSet: expandResourceRecordSet(d, aws.ToString(zoneRecord.HostedZone.Name)),
},
},
@@ -299,7 +299,7 @@ index aeef59b958..abac8702c5 100644
},
HostedZoneId: aws.String(cleanZoneID(aws.ToString(zoneRecord.HostedZone.Id))),
}
-@@ -729,7 +729,7 @@ func resourceRecordDelete(ctx context.Context, d *schema.ResourceData, meta inte
+@@ -731,7 +731,7 @@ func resourceRecordDelete(ctx context.Context, d *schema.ResourceData, meta inte
ResourceRecordSet: rec,
},
},
diff --git a/patches/0026-Restore-S3ConnURICleaningDisabled.patch b/patches/0026-Restore-S3ConnURICleaningDisabled.patch
index d60912c4928..e41c89cce9b 100644
--- a/patches/0026-Restore-S3ConnURICleaningDisabled.patch
+++ b/patches/0026-Restore-S3ConnURICleaningDisabled.patch
@@ -5,32 +5,10 @@ Subject: [PATCH] Restore S3ConnURICleaningDisabled
diff --git a/internal/conns/awsclient.go b/internal/conns/awsclient.go
-index f31b7a7ef2..dde69d462d 100644
+index 9425b4a16d..ddfe9d8849 100644
--- a/internal/conns/awsclient.go
+++ b/internal/conns/awsclient.go
-@@ -17,6 +17,7 @@ import (
- apigatewayv2_types "github.com/aws/aws-sdk-go-v2/service/apigatewayv2/types"
- s3_sdkv2 "github.com/aws/aws-sdk-go-v2/service/s3"
- session_sdkv1 "github.com/aws/aws-sdk-go/aws/session"
-+ s3_sdkv1 "github.com/aws/aws-sdk-go/service/s3"
- baselogging "github.com/hashicorp/aws-sdk-go-base/v2/logging"
- "github.com/hashicorp/terraform-plugin-log/tflog"
- "github.com/hashicorp/terraform-provider-aws/internal/errs"
-@@ -104,6 +105,13 @@ func (c *AWSClient) S3UsePathStyle(context.Context) bool {
- return c.s3UsePathStyle
- }
-
-+func (client *AWSClient) S3ConnURICleaningDisabled(ctx context.Context) *s3_sdkv1.S3 {
-+ config := client.S3Conn(ctx).Config
-+ config.DisableRestProtocolURICleaning = aws_sdkv2.Bool(true)
-+
-+ return s3_sdkv1.New(client.session.Copy(&config))
-+}
-+
- // SetHTTPClient sets the http.Client used for AWS API calls.
- // To have effect it must be called before the AWS SDK v1 Session is created.
- func (c *AWSClient) SetHTTPClient(_ context.Context, httpClient *http.Client) {
-@@ -169,7 +177,7 @@ func (c *AWSClient) DefaultKMSKeyPolicy(context.Context) string {
+@@ -182,7 +182,7 @@ func (c *AWSClient) DefaultKMSKeyPolicy(context.Context) string {
"Resource": "*"
}
]
@@ -39,3 +17,31 @@ index f31b7a7ef2..dde69d462d 100644
`, c.Partition, c.AccountID)
}
+diff --git a/internal/conns/awsclient_extra.go b/internal/conns/awsclient_extra.go
+new file mode 100644
+index 0000000000..96c809fc47
+--- /dev/null
++++ b/internal/conns/awsclient_extra.go
+@@ -0,0 +1,22 @@
++// Copyright (c) HashiCorp, Inc.
++// SPDX-License-Identifier: MPL-2.0
++
++package conns
++
++import (
++ "context"
++
++ s3_sdkv1 "github.com/aws/aws-sdk-go/service/s3"
++)
++
++func (c *AWSClient) S3Conn(ctx context.Context) *s3_sdkv1.S3 {
++ return errs.Must(conn[*s3_sdkv1.S3](ctx, c, names.S3, make(map[string]any)))
++}
++
++func (client *AWSClient) S3ConnURICleaningDisabled(ctx context.Context) *s3_sdkv1.S3 {
++ config := client.S3Conn(ctx).Config
++ t := true
++ config.DisableRestProtocolURICleaning = &t
++
++ return s3_sdkv1.New(client.session.Copy(&config))
++}
diff --git a/patches/0027-Do-not-compute-tags_all-at-TF-level.patch b/patches/0027-Do-not-compute-tags_all-at-TF-level.patch
index e093d72073a..9956b8f405e 100644
--- a/patches/0027-Do-not-compute-tags_all-at-TF-level.patch
+++ b/patches/0027-Do-not-compute-tags_all-at-TF-level.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Do not compute tags_all at TF level
diff --git a/internal/framework/resource_with_configure.go b/internal/framework/resource_with_configure.go
-index a415a989a8..9a3f8eea5c 100644
+index 6ece15b4f4..89844a1233 100644
--- a/internal/framework/resource_with_configure.go
+++ b/internal/framework/resource_with_configure.go
@@ -30,6 +30,11 @@ func (r *ResourceWithConfigure) Configure(_ context.Context, request resource.Co
@@ -21,7 +21,7 @@ index a415a989a8..9a3f8eea5c 100644
if request.Plan.Raw.IsNull() {
return
diff --git a/internal/provider/fwprovider/provider.go b/internal/provider/fwprovider/provider.go
-index 95563b9882..5ed49e758f 100644
+index c29a9f9b7d..3eebe2feb9 100644
--- a/internal/provider/fwprovider/provider.go
+++ b/internal/provider/fwprovider/provider.go
@@ -430,8 +430,8 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource {
@@ -231,110 +231,20 @@ index 789e374885..d5a771ce81 100644
Blocks: map[string]schema.Block{
names.AttrTimeouts: timeouts.Block(ctx, timeouts.Opts{
diff --git a/internal/verify/diff.go b/internal/verify/diff.go
-index 95c63b9f8d..e0636e99ce 100644
+index afffb80b4a..afb980ec65 100644
--- a/internal/verify/diff.go
+++ b/internal/verify/diff.go
-@@ -5,101 +5,12 @@ package verify
-
- import (
- "context"
-- "fmt"
- "time"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-- "github.com/hashicorp/terraform-provider-aws/internal/conns"
-- tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
- )
-
--// Find JSON diff functions in the json.go file.
--
--// SetTagsDiff sets the new plan difference with the result of
--// merging resource tags on to those defined at the provider-level;
--// returns an error if unsuccessful or if the resource tags are identical
--// to those configured at the provider-level to avoid non-empty plans
--// after resource READ operations as resource and provider-level tags
--// will be indistinguishable when returned from an AWS API.
+@@ -22,6 +22,11 @@ import (
+ // after resource READ operations as resource and provider-level tags
+ // will be indistinguishable when returned from an AWS API.
func SetTagsDiff(ctx context.Context, diff *schema.ResourceDiff, meta interface{}) error {
-- defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig(ctx)
-- ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig
--
-- resourceTags := tftags.New(ctx, diff.Get("tags").(map[string]interface{}))
--
-- allTags := defaultTagsConfig.MergeTags(resourceTags).IgnoreConfig(ignoreTagsConfig)
-- // To ensure "tags_all" is correctly computed, we explicitly set the attribute diff
-- // when the merger of resource-level tags onto provider-level tags results in n > 0 tags,
-- // otherwise we mark the attribute as "Computed" only when there is a known diff (excluding an empty map)
-- // or a change for "tags_all".
-- // Reference: https://github.com/hashicorp/terraform-provider-aws/issues/18366
-- // Reference: https://github.com/hashicorp/terraform-provider-aws/issues/19005
--
-- if !diff.GetRawPlan().GetAttr("tags").IsWhollyKnown() {
-- if err := diff.SetNewComputed("tags_all"); err != nil {
-- return fmt.Errorf("setting tags_all to computed: %w", err)
-- }
-- return nil
-- }
--
-- if diff.HasChange("tags") {
-- _, n := diff.GetChange("tags")
-- newTags := tftags.New(ctx, n.(map[string]interface{}))
--
-- if newTags.HasZeroValue() {
-- if err := diff.SetNewComputed("tags_all"); err != nil {
-- return fmt.Errorf("setting tags_all to computed: %w", err)
-- }
-- }
--
-- if len(allTags) > 0 && (!newTags.HasZeroValue() || !allTags.HasZeroValue()) {
-- if err := diff.SetNew("tags_all", allTags.Map()); err != nil {
-- return fmt.Errorf("setting new tags_all diff: %w", err)
-- }
-- }
--
-- if len(allTags) == 0 {
-- if err := diff.SetNew("tags_all", allTags.Map()); err != nil {
-- return fmt.Errorf("setting new tags_all diff: %w", err)
-- }
-- }
-- } else if !diff.HasChange("tags") {
-- if len(allTags) > 0 && !allTags.HasZeroValue() {
-- if err := diff.SetNew("tags_all", allTags.Map()); err != nil {
-- return fmt.Errorf("setting new tags_all diff: %w", err)
-- }
-- return nil
-- }
--
-- var ta tftags.KeyValueTags
-- if tagsAll, ok := diff.Get("tags_all").(map[string]interface{}); ok {
-- ta = tftags.New(ctx, tagsAll)
-- }
-- if len(allTags) > 0 && !ta.DeepEqual(allTags) && allTags.HasZeroValue() {
-- if err := diff.SetNewComputed("tags_all"); err != nil {
-- return fmt.Errorf("setting tags_all to computed: %w", err)
-- }
-- return nil
-- }
-- } else if tagsAll, ok := diff.Get("tags_all").(map[string]interface{}); ok {
-- ta := tftags.New(ctx, tagsAll)
-- if !ta.DeepEqual(allTags) {
-- if allTags.HasZeroValue() {
-- if err := diff.SetNewComputed("tags_all"); err != nil {
-- return fmt.Errorf("setting tags_all to computed: %w", err)
-- }
-- }
-- }
-- } else if len(diff.Get("tags_all").(map[string]interface{})) > 0 {
-- if err := diff.SetNewComputed("tags_all"); err != nil {
-- return fmt.Errorf("setting tags_all to computed: %w", err)
-- }
-- } else if diff.HasChange("tags_all") {
-- if err := diff.SetNewComputed("tags_all"); err != nil {
-- return fmt.Errorf("setting tags_all to computed: %w", err)
-- }
-- }
--
- return nil
- }
++ // Pulumi handles tags differently for Plugin Framework.
++ if 1+2 == 3 {
++ return nil
++ }
++
+ defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig(ctx)
+ ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx)
diff --git a/shim/shim.go b/shim/shim.go
index 2af7c06925..ce64074bfd 100644
diff --git a/patches/0030-Optimize-startup-performance.patch b/patches/0030-Optimize-startup-performance.patch
index 2fbcda4165d..6dfc9baa96d 100644
--- a/patches/0030-Optimize-startup-performance.patch
+++ b/patches/0030-Optimize-startup-performance.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Optimize startup performance
diff --git a/internal/provider/provider.go b/internal/provider/provider.go
-index 3b939a83f3..026e936537 100644
+index 30ebfcf0f3..4c83f4bb1c 100644
--- a/internal/provider/provider.go
+++ b/internal/provider/provider.go
@@ -317,7 +317,7 @@ func New(ctx context.Context) (*schema.Provider, error) {
diff --git a/patches/0031-DisableTagSchemaCheck-for-PF-provider.patch b/patches/0031-DisableTagSchemaCheck-for-PF-provider.patch
index 5e6a91f2e4c..b0d033e58f2 100644
--- a/patches/0031-DisableTagSchemaCheck-for-PF-provider.patch
+++ b/patches/0031-DisableTagSchemaCheck-for-PF-provider.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] DisableTagSchemaCheck for PF provider
diff --git a/internal/provider/fwprovider/provider.go b/internal/provider/fwprovider/provider.go
-index 5ed49e758f..20d54caf1f 100644
+index 3eebe2feb9..fe269c207c 100644
--- a/internal/provider/fwprovider/provider.go
+++ b/internal/provider/fwprovider/provider.go
@@ -417,8 +417,7 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource {
diff --git a/patches/0033-Fail-fast-when-PF-resources-are-dropped.patch b/patches/0033-Fail-fast-when-PF-resources-are-dropped.patch
index 490b9ff54b9..d8bc8051666 100644
--- a/patches/0033-Fail-fast-when-PF-resources-are-dropped.patch
+++ b/patches/0033-Fail-fast-when-PF-resources-are-dropped.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fail fast when PF resources are dropped
diff --git a/internal/provider/fwprovider/provider.go b/internal/provider/fwprovider/provider.go
-index 20d54caf1f..910fccafa9 100644
+index fe269c207c..5eb34590fd 100644
--- a/internal/provider/fwprovider/provider.go
+++ b/internal/provider/fwprovider/provider.go
@@ -448,9 +448,8 @@ func (p *fwprovider) Resources(ctx context.Context) []func() resource.Resource {
diff --git a/patches/0034-Fix-tags_all-Computed-for-PF-resources.patch b/patches/0034-Fix-tags_all-Computed-for-PF-resources.patch
index 4925245d4a4..aaed9f9abc9 100644
--- a/patches/0034-Fix-tags_all-Computed-for-PF-resources.patch
+++ b/patches/0034-Fix-tags_all-Computed-for-PF-resources.patch
@@ -44,10 +44,10 @@ index 6e8d8de302..af48127242 100644
Blocks: map[string]schema.Block{
"agent_orchestration_config": schema.ListNestedBlock{
diff --git a/internal/service/elasticache/serverless_cache.go b/internal/service/elasticache/serverless_cache.go
-index 48cfd92777..e98b584a59 100644
+index bb7f36bf1e..fe8ed6366b 100644
--- a/internal/service/elasticache/serverless_cache.go
+++ b/internal/service/elasticache/serverless_cache.go
-@@ -176,7 +176,7 @@ func (r *serverlessCacheResource) Schema(ctx context.Context, request resource.S
+@@ -181,7 +181,7 @@ func (r *serverlessCacheResource) Schema(ctx context.Context, request resource.S
},
},
names.AttrTags: tftags.TagsAttribute(),
diff --git a/patches/0035-Disable-retry-for-KMS-access-denied-in-lambda.patch b/patches/0035-Disable-retry-for-KMS-access-denied-in-lambda.patch
index cb0981c7ccf..99832a19610 100644
--- a/patches/0035-Disable-retry-for-KMS-access-denied-in-lambda.patch
+++ b/patches/0035-Disable-retry-for-KMS-access-denied-in-lambda.patch
@@ -6,21 +6,19 @@ Subject: [PATCH] Disable retry for KMS access denied in lambda
diff --git a/internal/service/lambda/service_package_extra.go b/internal/service/lambda/service_package_extra.go
new file mode 100644
-index 0000000000..ffd7fa9728
+index 0000000000..79867519db
--- /dev/null
+++ b/internal/service/lambda/service_package_extra.go
-@@ -0,0 +1,41 @@
+@@ -0,0 +1,34 @@
+package lambda
+
+import (
-+ "context"
-+
++ "github.com/aws/aws-sdk-go-v2/aws"
+ aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws"
+ retry_sdkv2 "github.com/aws/aws-sdk-go-v2/aws/retry"
-+ lambda_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lambda"
++ "github.com/aws/aws-sdk-go-v2/service/lambda"
+ tfawserr_sdkv2 "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr"
+ "github.com/hashicorp/terraform-provider-aws/internal/conns"
-+ "github.com/hashicorp/terraform-provider-aws/names"
+)
+
+// Customize lambda retries.
@@ -29,8 +27,7 @@ index 0000000000..ffd7fa9728
+//
+// https://github.com/hashicorp/terraform-provider-aws/blob/main/docs/retries-and-waiters.md
+// https://github.com/pulumi/pulumi-aws/issues/3196
-+func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*lambda_sdkv2.Client, error) {
-+ cfg := *(config["aws_sdkv2_config"].(*aws_sdkv2.Config))
++func (p *servicePackage) pulumiCustomizeLambdaRetries(cfg aws.Config) func(*lambda.Options) {
+ retry := retry_sdkv2.IsErrorRetryableFunc(func(err error) aws_sdkv2.Ternary {
+ if tfawserr_sdkv2.ErrMessageContains(
+ err,
@@ -43,41 +40,19 @@ index 0000000000..ffd7fa9728
+ return aws_sdkv2.UnknownTernary // Delegate
+ })
+
-+ return lambda_sdkv2.NewFromConfig(cfg,
-+ lambda_sdkv2.WithEndpointResolverV2(newEndpointResolverSDKv2()),
-+ withBaseEndpoint(config[names.AttrEndpoint].(string)),
-+ func(o *lambda_sdkv2.Options) {
-+ o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws_sdkv2.RetryerV2), retry)
-+ },
-+ ), nil
++ return func(o *lambda.Options) {
++ o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws_sdkv2.RetryerV2), retry)
++ }
+}
diff --git a/internal/service/lambda/service_package_gen.go b/internal/service/lambda/service_package_gen.go
-index c70ed5f1f4..5b33cca471 100644
+index b787967d5a..c9a8c815a7 100644
--- a/internal/service/lambda/service_package_gen.go
+++ b/internal/service/lambda/service_package_gen.go
-@@ -5,8 +5,6 @@ package lambda
- import (
- "context"
-
-- aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws"
-- lambda_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lambda"
- "github.com/hashicorp/terraform-provider-aws/internal/conns"
- "github.com/hashicorp/terraform-provider-aws/internal/types"
- "github.com/hashicorp/terraform-provider-aws/names"
-@@ -144,16 +142,6 @@ func (p *servicePackage) ServicePackageName() string {
- return names.Lambda
+@@ -151,6 +151,7 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
+ return lambda.NewFromConfig(cfg,
+ lambda.WithEndpointResolverV2(newEndpointResolverV2()),
+ withBaseEndpoint(config[names.AttrEndpoint].(string)),
++ p.pulumiCustomizeLambdaRetries(cfg),
+ ), nil
}
--// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API.
--func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*lambda_sdkv2.Client, error) {
-- cfg := *(config["aws_sdkv2_config"].(*aws_sdkv2.Config))
--
-- return lambda_sdkv2.NewFromConfig(cfg,
-- lambda_sdkv2.WithEndpointResolverV2(newEndpointResolverSDKv2()),
-- withBaseEndpoint(config[names.AttrEndpoint].(string)),
-- ), nil
--}
--
- func ServicePackage(ctx context.Context) conns.ServicePackage {
- return &servicePackage{}
- }
diff --git a/patches/0036-Patch-ACM-retry-to-not-retry-after-LimitExceededExce.patch b/patches/0036-Patch-ACM-retry-to-not-retry-after-LimitExceededExce.patch
index ee9f94f4f90..64dd90c24a0 100644
--- a/patches/0036-Patch-ACM-retry-to-not-retry-after-LimitExceededExce.patch
+++ b/patches/0036-Patch-ACM-retry-to-not-retry-after-LimitExceededExce.patch
@@ -1,37 +1,46 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Anton Tayanovskyy
-Date: Fri, 19 Jan 2024 18:08:51 -0500
+Date: Fri, 25 Oct 2024 17:14:36 -0400
Subject: [PATCH] Patch ACM retry to not retry after LimitExceededException
(#3290)
+diff --git a/internal/service/acm/service_package_extra.go b/internal/service/acm/service_package_extra.go
+new file mode 100644
+index 0000000000..b432bed386
+--- /dev/null
++++ b/internal/service/acm/service_package_extra.go
+@@ -0,0 +1,21 @@
++package acm
++
++import (
++ "github.com/aws/aws-sdk-go-v2/aws"
++ retry_sdkv2 "github.com/aws/aws-sdk-go-v2/aws/retry"
++ "github.com/aws/aws-sdk-go-v2/service/acm"
++ tfawserr_sdkv2 "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr"
++ "github.com/hashicorp/terraform-provider-aws/internal/conns"
++)
++
++func (p *servicePackage) pulumiCustomizeRetries(cfg aws.Config) func(*acm.Options) {
++ return func(o *acm.Options) {
++ o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws.RetryerV2), retry_sdkv2.IsErrorRetryableFunc(func(err error) aws.Ternary {
++ if tfawserr_sdkv2.ErrMessageContains(err, "LimitExceededException", "the maximum number of") &&
++ tfawserr_sdkv2.ErrMessageContains(err, "LimitExceededException", "certificates in the last year") {
++ return aws.FalseTernary
++ }
++ return aws.UnknownTernary // Delegate to configured Retryer.
++ }))
++ }
++}
diff --git a/internal/service/acm/service_package_gen.go b/internal/service/acm/service_package_gen.go
-index d76d553329..7f9a9ca461 100644
+index 90c139864a..da16c6a6b5 100644
--- a/internal/service/acm/service_package_gen.go
+++ b/internal/service/acm/service_package_gen.go
-@@ -6,7 +6,9 @@ import (
- "context"
-
- aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws"
-+ retry_sdkv2 "github.com/aws/aws-sdk-go-v2/aws/retry"
- acm_sdkv2 "github.com/aws/aws-sdk-go-v2/service/acm"
-+ tfawserr_sdkv2 "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr"
- "github.com/hashicorp/terraform-provider-aws/internal/conns"
- "github.com/hashicorp/terraform-provider-aws/internal/types"
- "github.com/hashicorp/terraform-provider-aws/names"
-@@ -63,6 +65,15 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
- return acm_sdkv2.NewFromConfig(cfg,
- acm_sdkv2.WithEndpointResolverV2(newEndpointResolverSDKv2()),
+@@ -63,6 +63,7 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
+ return acm.NewFromConfig(cfg,
+ acm.WithEndpointResolverV2(newEndpointResolverV2()),
withBaseEndpoint(config[names.AttrEndpoint].(string)),
-+ func(o *acm_sdkv2.Options) {
-+ o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws_sdkv2.RetryerV2), retry_sdkv2.IsErrorRetryableFunc(func(err error) aws_sdkv2.Ternary {
-+ if tfawserr_sdkv2.ErrMessageContains(err, "LimitExceededException", "the maximum number of") &&
-+ tfawserr_sdkv2.ErrMessageContains(err, "LimitExceededException", "certificates in the last year") {
-+ return aws_sdkv2.FalseTernary
-+ }
-+ return aws_sdkv2.UnknownTernary // Delegate to configured Retryer.
-+ }))
-+ },
++ p.pulumiCustomizeRetries(cfg),
), nil
}
diff --git a/patches/0037-Restore-legacy-bucket.patch b/patches/0037-Restore-legacy-bucket.patch
index c9308380e58..dcb23330287 100644
--- a/patches/0037-Restore-legacy-bucket.patch
+++ b/patches/0037-Restore-legacy-bucket.patch
@@ -4,23 +4,8 @@ Date: Wed, 29 May 2024 09:07:38 -0400
Subject: [PATCH] Restore legacy bucket
-diff --git a/internal/conns/awsclient.go b/internal/conns/awsclient.go
-index dde69d462d..6391a4988c 100644
---- a/internal/conns/awsclient.go
-+++ b/internal/conns/awsclient.go
-@@ -105,6 +105,10 @@ func (c *AWSClient) S3UsePathStyle(context.Context) bool {
- return c.s3UsePathStyle
- }
-
-+func (c *AWSClient) S3Conn(ctx context.Context) *s3_sdkv1.S3 {
-+ return errs.Must(conn[*s3_sdkv1.S3](ctx, c, names.S3, make(map[string]any)))
-+}
-+
- func (client *AWSClient) S3ConnURICleaningDisabled(ctx context.Context) *s3_sdkv1.S3 {
- config := client.S3Conn(ctx).Config
- config.DisableRestProtocolURICleaning = aws_sdkv2.Bool(true)
diff --git a/internal/provider/provider.go b/internal/provider/provider.go
-index 026e936537..664f55488d 100644
+index 4c83f4bb1c..2ec4c986be 100644
--- a/internal/provider/provider.go
+++ b/internal/provider/provider.go
@@ -17,7 +17,6 @@ import (
diff --git a/patches/0044-restore-ECRConn.patch b/patches/0044-restore-ECRConn.patch
index 40c770df622..b1db0353348 100644
--- a/patches/0044-restore-ECRConn.patch
+++ b/patches/0044-restore-ECRConn.patch
@@ -4,26 +4,26 @@ Date: Wed, 10 Apr 2024 08:49:35 -0400
Subject: [PATCH] restore ECRConn
-diff --git a/internal/conns/awsclient_gen.go b/internal/conns/awsclient_gen.go
-index cfbc51180e..2a8249e7d4 100644
---- a/internal/conns/awsclient_gen.go
-+++ b/internal/conns/awsclient_gen.go
-@@ -246,6 +246,7 @@ import (
- workspaces_sdkv2 "github.com/aws/aws-sdk-go-v2/service/workspaces"
- workspacesweb_sdkv2 "github.com/aws/aws-sdk-go-v2/service/workspacesweb"
- xray_sdkv2 "github.com/aws/aws-sdk-go-v2/service/xray"
+diff --git a/internal/conns/awsclient_extra.go b/internal/conns/awsclient_extra.go
+index 96c809fc47..57bf4c7c94 100644
+--- a/internal/conns/awsclient_extra.go
++++ b/internal/conns/awsclient_extra.go
+@@ -6,7 +6,10 @@ package conns
+ import (
+ "context"
+
+ ecr_sdkv1 "github.com/aws/aws-sdk-go/service/ecr"
- imagebuilder_sdkv1 "github.com/aws/aws-sdk-go/service/imagebuilder"
- simpledb_sdkv1 "github.com/aws/aws-sdk-go/service/simpledb"
- "github.com/hashicorp/terraform-provider-aws/internal/errs"
-@@ -588,6 +589,10 @@ func (c *AWSClient) EC2Client(ctx context.Context) *ec2_sdkv2.Client {
- return errs.Must(client[*ec2_sdkv2.Client](ctx, c, names.EC2, make(map[string]any)))
- }
+ s3_sdkv1 "github.com/aws/aws-sdk-go/service/s3"
++ "github.com/hashicorp/terraform-provider-aws/internal/errs"
++ "github.com/hashicorp/terraform-provider-aws/names"
+ )
+ func (c *AWSClient) S3Conn(ctx context.Context) *s3_sdkv1.S3 {
+@@ -20,3 +23,7 @@ func (client *AWSClient) S3ConnURICleaningDisabled(ctx context.Context) *s3_sdkv
+
+ return s3_sdkv1.New(client.session.Copy(&config))
+ }
++
+func (c *AWSClient) ECRConn(ctx context.Context) *ecr_sdkv1.ECR {
+ return errs.Must(conn[*ecr_sdkv1.ECR](ctx, c, names.ECR, make(map[string]any)))
+}
-+
- func (c *AWSClient) ECRClient(ctx context.Context) *ecr_sdkv2.Client {
- return errs.Must(client[*ecr_sdkv2.Client](ctx, c, names.ECR, make(map[string]any)))
- }
diff --git a/patches/0046-restore-ecr-NewConn.patch b/patches/0046-restore-ecr-NewConn.patch
index f8c06e2b5ac..53ba8fbe6ce 100644
--- a/patches/0046-restore-ecr-NewConn.patch
+++ b/patches/0046-restore-ecr-NewConn.patch
@@ -4,31 +4,25 @@ Date: Wed, 10 Apr 2024 13:43:56 -0400
Subject: [PATCH] restore ecr NewConn
-diff --git a/internal/service/ecr/service_package_gen.go b/internal/service/ecr/service_package_gen.go
-index 9a1f8e3ee2..4cf24b81e4 100644
---- a/internal/service/ecr/service_package_gen.go
-+++ b/internal/service/ecr/service_package_gen.go
-@@ -7,6 +7,9 @@ import (
-
- aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws"
- ecr_sdkv2 "github.com/aws/aws-sdk-go-v2/service/ecr"
+diff --git a/internal/service/ecr/service_package_extra.go b/internal/service/ecr/service_package_extra.go
+new file mode 100644
+index 0000000000..7175d0cb71
+--- /dev/null
++++ b/internal/service/ecr/service_package_extra.go
+@@ -0,0 +1,16 @@
++package ecr
++
++import (
++ "context"
++
+ aws_sdkv1 "github.com/aws/aws-sdk-go/aws"
+ session_sdkv1 "github.com/aws/aws-sdk-go/aws/session"
+ ecr_sdkv1 "github.com/aws/aws-sdk-go/service/ecr"
- "github.com/hashicorp/terraform-provider-aws/internal/conns"
- "github.com/hashicorp/terraform-provider-aws/internal/types"
- "github.com/hashicorp/terraform-provider-aws/names"
-@@ -116,6 +119,13 @@ func (p *servicePackage) ServicePackageName() string {
- return names.ECR
- }
-
++)
++
+// NewConn returns a new AWS SDK for Go v1 client for this service package's AWS API.
+func (p *servicePackage) NewConn(ctx context.Context, config map[string]any) (*ecr_sdkv1.ECR, error) {
+ sess := config["session"].(*session_sdkv1.Session)
+
+ return ecr_sdkv1.New(sess.Copy(&aws_sdkv1.Config{Endpoint: aws_sdkv1.String(config["endpoint"].(string))})), nil
+}
-+
- // NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API.
- func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*ecr_sdkv2.Client, error) {
- cfg := *(config["aws_sdkv2_config"].(*aws_sdkv2.Config))
diff --git a/patches/0047-update-apn-info.patch b/patches/0047-update-apn-info.patch
index 7c8c74aefcb..192646fa66f 100644
--- a/patches/0047-update-apn-info.patch
+++ b/patches/0047-update-apn-info.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] update apn info
diff --git a/internal/conns/config.go b/internal/conns/config.go
-index 9b450148b9..c3346c08f7 100644
+index 3c1521b6f4..3e02bd18e9 100644
--- a/internal/conns/config.go
+++ b/internal/conns/config.go
@@ -23,7 +23,6 @@ import (
diff --git a/patches/0055-Create-Logging-Middleware-for-Lambda-service-that-do.patch b/patches/0055-Create-Logging-Middleware-for-Lambda-service-that-do.patch
index 423ca615785..5e742fbdb28 100644
--- a/patches/0055-Create-Logging-Middleware-for-Lambda-service-that-do.patch
+++ b/patches/0055-Create-Logging-Middleware-for-Lambda-service-that-do.patch
@@ -127,23 +127,22 @@ index 0000000000..737faef4a7
+ return out, metadata, err
+}
diff --git a/internal/service/lambda/service_package_extra.go b/internal/service/lambda/service_package_extra.go
-index ffd7fa9728..b958a21bff 100644
+index 79867519db..f58db8ce42 100644
--- a/internal/service/lambda/service_package_extra.go
+++ b/internal/service/lambda/service_package_extra.go
-@@ -6,6 +6,7 @@ import (
+@@ -5,6 +5,7 @@ import (
aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws"
retry_sdkv2 "github.com/aws/aws-sdk-go-v2/aws/retry"
- lambda_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lambda"
+ "github.com/aws/aws-sdk-go-v2/service/lambda"
+ "github.com/aws/smithy-go/middleware"
tfawserr_sdkv2 "github.com/hashicorp/aws-sdk-go-base/v2/tfawserr"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
- "github.com/hashicorp/terraform-provider-aws/names"
-@@ -35,7 +36,20 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
- lambda_sdkv2.WithEndpointResolverV2(newEndpointResolverSDKv2()),
- withBaseEndpoint(config[names.AttrEndpoint].(string)),
- func(o *lambda_sdkv2.Options) {
-- o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws_sdkv2.RetryerV2), retry)
-+
+ )
+@@ -30,5 +31,18 @@ func (p *servicePackage) pulumiCustomizeLambdaRetries(cfg aws.Config) func(*lamb
+
+ return func(o *lambda.Options) {
+ o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws_sdkv2.RetryerV2), retry)
++
+ // Switch out the terraform http logging middleware with a custom logging middleware that does not log the
+ // lambda code. Logging the lambda code leads to memory bloating because it allocates a lot of copies of the
+ // body
@@ -156,7 +155,5 @@ index ffd7fa9728..b958a21bff 100644
+ err = stack.Deserialize.Add(NewWrappedRequestResponseLogger(loggingMiddleware), middleware.After)
+ return err
+ })
-+ o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws_sdkv2.RetryerV2), retry)
- },
- ), nil
+ }
}
diff --git a/patches/0064-Adapt-gamelift-matchmaking-resources.patch b/patches/0064-Adapt-gamelift-matchmaking-resources.patch
index 9ba60d7236a..c1335fb1676 100644
--- a/patches/0064-Adapt-gamelift-matchmaking-resources.patch
+++ b/patches/0064-Adapt-gamelift-matchmaking-resources.patch
@@ -619,10 +619,10 @@ index 4295987ae6..377b46816e 100644
return nil
}
diff --git a/names/data/names_data.hcl b/names/data/names_data.hcl
-index e4ba54d340..d89f5e9878 100644
+index 16f5a38e8f..95f154aecd 100644
--- a/names/data/names_data.hcl
+++ b/names/data/names_data.hcl
-@@ -3884,7 +3884,8 @@ service "fsx" {
+@@ -3883,7 +3883,8 @@ service "fsx" {
service "gamelift" {
sdk {
diff --git a/patches/0067-Add-pluralized-lifecycle_policies-to-EFS-file-system.patch b/patches/0067-Add-pluralized-lifecycle_policies-to-EFS-file-system.patch
index 6165d9c5639..a7680db7c2b 100644
--- a/patches/0067-Add-pluralized-lifecycle_policies-to-EFS-file-system.patch
+++ b/patches/0067-Add-pluralized-lifecycle_policies-to-EFS-file-system.patch
@@ -12,7 +12,7 @@ version to only return at most one element we're able to fix this
panic without introducing breaking changes.
diff --git a/internal/service/efs/file_system_data_source.go b/internal/service/efs/file_system_data_source.go
-index f045aa36a4..a7b710fe9b 100644
+index 680f0fb3cc..a4ed1a053a 100644
--- a/internal/service/efs/file_system_data_source.go
+++ b/internal/service/efs/file_system_data_source.go
@@ -63,6 +63,28 @@ func dataSourceFileSystem() *schema.Resource {
diff --git a/patches/0068-Fix-tags_all-Computed-for-aws_backup_logically_air_g.patch b/patches/0068-Fix-tags_all-Computed-for-aws_backup_logically_air_g.patch
index 98e6857bc3d..a6e523f15bc 100644
--- a/patches/0068-Fix-tags_all-Computed-for-aws_backup_logically_air_g.patch
+++ b/patches/0068-Fix-tags_all-Computed-for-aws_backup_logically_air_g.patch
@@ -6,10 +6,10 @@ Subject: [PATCH] Fix tags_all Computed for
diff --git a/internal/service/backup/logically_air_gapped_vault.go b/internal/service/backup/logically_air_gapped_vault.go
-index dc37ee2449..ba1e94c6d6 100644
+index 6363263403..820d6a6c59 100644
--- a/internal/service/backup/logically_air_gapped_vault.go
+++ b/internal/service/backup/logically_air_gapped_vault.go
-@@ -87,7 +87,7 @@ func (r *logicallyAirGappedVaultResource) Schema(ctx context.Context, request re
+@@ -88,7 +88,7 @@ func (r *logicallyAirGappedVaultResource) Schema(ctx context.Context, request re
},
},
names.AttrTags: tftags.TagsAttribute(),
diff --git a/patches/0069-Patch-ComputedOnly-for-route53profiles-and-more.patch b/patches/0069-Patch-ComputedOnly-for-route53profiles-and-more.patch
index aae9caa82d2..93249ad0a71 100644
--- a/patches/0069-Patch-ComputedOnly-for-route53profiles-and-more.patch
+++ b/patches/0069-Patch-ComputedOnly-for-route53profiles-and-more.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Patch ComputedOnly for route53profiles and more
diff --git a/internal/service/backup/restore_testing_plan.go b/internal/service/backup/restore_testing_plan.go
-index b324c80f36..b5e2bf8337 100644
+index 7d9155b5f0..c93f05adc5 100644
--- a/internal/service/backup/restore_testing_plan.go
+++ b/internal/service/backup/restore_testing_plan.go
-@@ -88,7 +88,7 @@ func (r *restoreTestingPlanResource) Schema(ctx context.Context, request resourc
+@@ -89,7 +89,7 @@ func (r *restoreTestingPlanResource) Schema(ctx context.Context, request resourc
},
},
names.AttrTags: tftags.TagsAttribute(),
@@ -31,10 +31,10 @@ index b4bd9f9d39..61334ec528 100644
}
}
diff --git a/internal/service/route53profiles/association.go b/internal/service/route53profiles/association.go
-index bb460f3268..9dc39c6e3f 100644
+index 7511a8a554..3a72dd67f3 100644
--- a/internal/service/route53profiles/association.go
+++ b/internal/service/route53profiles/association.go
-@@ -102,7 +102,7 @@ func (r *resourceAssociation) Schema(ctx context.Context, req resource.SchemaReq
+@@ -114,7 +114,7 @@ func (r *resourceAssociation) Schema(ctx context.Context, req resource.SchemaReq
},
},
names.AttrTags: tftags.TagsAttribute(),
diff --git a/patches/0070-Temporarily-remove-iam_role-managed_policy_arn-depre.patch b/patches/0070-Temporarily-remove-iam_role-managed_policy_arn-depre.patch
index 2893b5d2ede..6528a09f107 100644
--- a/patches/0070-Temporarily-remove-iam_role-managed_policy_arn-depre.patch
+++ b/patches/0070-Temporarily-remove-iam_role-managed_policy_arn-depre.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Temporarily remove iam_role managed_policy_arn deprecation
diff --git a/internal/service/iam/role.go b/internal/service/iam/role.go
-index 83f02cec19..478eb1012e 100644
+index 3a3d22bb6e..ce856f148f 100644
--- a/internal/service/iam/role.go
+++ b/internal/service/iam/role.go
@@ -131,8 +131,6 @@ func resourceRole() *schema.Resource {
diff --git a/patches/0071-Adjust-matchmaking_configuration-resource-IgnoreTags.patch b/patches/0071-Adjust-matchmaking_configuration-resource-IgnoreTags.patch
new file mode 100644
index 00000000000..12b9336a661
--- /dev/null
+++ b/patches/0071-Adjust-matchmaking_configuration-resource-IgnoreTags.patch
@@ -0,0 +1,19 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Anton Tayanovskyy
+Date: Mon, 28 Oct 2024 14:28:28 -0400
+Subject: [PATCH] Adjust matchmaking_configuration resource IgnoreTagsConfig
+
+
+diff --git a/internal/service/gamelift/matchmaking_configuration.go b/internal/service/gamelift/matchmaking_configuration.go
+index 5811f1f884..3af285382c 100644
+--- a/internal/service/gamelift/matchmaking_configuration.go
++++ b/internal/service/gamelift/matchmaking_configuration.go
+@@ -206,7 +206,7 @@ func resourceMatchmakingConfigurationCreate(ctx context.Context, d *schema.Resou
+ func resourceMatchmakingConfigurationRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
+ conn := meta.(*conns.AWSClient).GameLiftClient(ctx)
+ defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig(ctx)
+- ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig
++ ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx)
+
+ log.Printf("[INFO] Describing GameLift Matchmaking Configuration: %s", d.Id())
+ out, err := conn.DescribeMatchmakingConfigurations(ctx, &gamelift.DescribeMatchmakingConfigurationsInput{
diff --git a/patches/0072-Restore-conns-factory-for-SDKv1-Go-clients-used-by-p.patch b/patches/0072-Restore-conns-factory-for-SDKv1-Go-clients-used-by-p.patch
new file mode 100644
index 00000000000..6925f503fe4
--- /dev/null
+++ b/patches/0072-Restore-conns-factory-for-SDKv1-Go-clients-used-by-p.patch
@@ -0,0 +1,89 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Anton Tayanovskyy
+Date: Mon, 28 Oct 2024 14:28:43 -0400
+Subject: [PATCH] Restore conns factory for SDKv1 Go clients used by patches
+
+
+diff --git a/internal/conns/awsclient_extra.go b/internal/conns/awsclient_extra.go
+index 57bf4c7c94..09b4279db3 100644
+--- a/internal/conns/awsclient_extra.go
++++ b/internal/conns/awsclient_extra.go
+@@ -5,9 +5,12 @@ package conns
+
+ import (
+ "context"
++ "fmt"
++ "maps"
+
+ ecr_sdkv1 "github.com/aws/aws-sdk-go/service/ecr"
+ s3_sdkv1 "github.com/aws/aws-sdk-go/service/s3"
++ "github.com/hashicorp/terraform-plugin-log/tflog"
+ "github.com/hashicorp/terraform-provider-aws/internal/errs"
+ "github.com/hashicorp/terraform-provider-aws/names"
+ )
+@@ -27,3 +30,65 @@ func (client *AWSClient) S3ConnURICleaningDisabled(ctx context.Context) *s3_sdkv
+ func (c *AWSClient) ECRConn(ctx context.Context) *ecr_sdkv1.ECR {
+ return errs.Must(conn[*ecr_sdkv1.ECR](ctx, c, names.ECR, make(map[string]any)))
+ }
++
++// conn returns the AWS SDK for Go v1 API client for the specified service.
++// The default service client (`extra` is empty) is cached. In this case the AWSClient lock is held.
++// This function is not a method on `AWSClient` as methods can't be parameterized (https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md#no-parameterized-methods).
++func conn[T any](ctx context.Context, c *AWSClient, servicePackageName string, extra map[string]any) (T, error) {
++ ctx = tflog.SetField(ctx, "tf_aws.service_package", servicePackageName)
++
++ isDefault := len(extra) == 0
++ // Default service client is cached.
++ if isDefault {
++ c.lock.Lock()
++ defer c.lock.Unlock() // Runs at function exit, NOT block.
++
++ if raw, ok := c.conns[servicePackageName]; ok {
++ if conn, ok := raw.(T); ok {
++ return conn, nil
++ } else {
++ var zero T
++ return zero, fmt.Errorf("AWS SDK v1 API client (%s): %T, want %T", servicePackageName, raw, zero)
++ }
++ }
++ }
++
++ sp, ok := c.ServicePackages[servicePackageName]
++ if !ok {
++ var zero T
++ return zero, fmt.Errorf("unknown service package: %s", servicePackageName)
++ }
++
++ v, ok := sp.(interface {
++ NewConn(context.Context, map[string]any) (T, error)
++ })
++ if !ok {
++ var zero T
++ return zero, fmt.Errorf("no AWS SDK v1 API client factory: %s", servicePackageName)
++ }
++
++ config := c.apiClientConfig(ctx, servicePackageName)
++ maps.Copy(config, extra) // Extras overwrite per-service defaults.
++ conn, err := v.NewConn(ctx, config)
++ if err != nil {
++ var zero T
++ return zero, err
++ }
++
++ if v, ok := sp.(interface {
++ CustomizeConn(context.Context, T) (T, error)
++ }); ok {
++ conn, err = v.CustomizeConn(ctx, conn)
++ if err != nil {
++ var zero T
++ return zero, err
++ }
++ }
++
++ // Default service client is cached.
++ if isDefault {
++ c.conns[servicePackageName] = conn
++ }
++
++ return conn, nil
++}
diff --git a/patches/0073-Patch-imagebuilder-and-resiliencehub-tagging.patch b/patches/0073-Patch-imagebuilder-and-resiliencehub-tagging.patch
new file mode 100644
index 00000000000..8ce09b7d874
--- /dev/null
+++ b/patches/0073-Patch-imagebuilder-and-resiliencehub-tagging.patch
@@ -0,0 +1,32 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Anton Tayanovskyy
+Date: Mon, 28 Oct 2024 14:29:42 -0400
+Subject: [PATCH] Patch imagebuilder and resiliencehub tagging
+
+
+diff --git a/internal/service/imagebuilder/lifecycle_policy.go b/internal/service/imagebuilder/lifecycle_policy.go
+index de77993cb4..aba05a03c0 100644
+--- a/internal/service/imagebuilder/lifecycle_policy.go
++++ b/internal/service/imagebuilder/lifecycle_policy.go
+@@ -89,7 +89,7 @@ func (r *lifecyclePolicyResource) Schema(ctx context.Context, request resource.S
+ },
+ },
+ names.AttrTags: tftags.TagsAttribute(),
+- names.AttrTagsAll: tftags.TagsAttributeComputedOnly(),
++ names.AttrTagsAll: tftags.TagsAttribute(),
+ },
+ Blocks: map[string]schema.Block{
+ "policy_detail": schema.SetNestedBlock{
+diff --git a/internal/service/resiliencehub/resiliency_policy.go b/internal/service/resiliencehub/resiliency_policy.go
+index 9f349c81ff..4feca02f5e 100644
+--- a/internal/service/resiliencehub/resiliency_policy.go
++++ b/internal/service/resiliencehub/resiliency_policy.go
+@@ -130,7 +130,7 @@ func (r *resourceResiliencyPolicy) Schema(ctx context.Context, req resource.Sche
+ Computed: true,
+ },
+ names.AttrTags: tftags.TagsAttribute(),
+- names.AttrTagsAll: tftags.TagsAttributeComputedOnly(),
++ names.AttrTagsAll: tftags.TagsAttribute(),
+ },
+ Blocks: map[string]schema.Block{
+ names.AttrPolicy: schema.SingleNestedBlock{
diff --git a/patches/0074-Restore-AWS-Go-SDK-v1-session.patch b/patches/0074-Restore-AWS-Go-SDK-v1-session.patch
new file mode 100644
index 00000000000..9927f61087f
--- /dev/null
+++ b/patches/0074-Restore-AWS-Go-SDK-v1-session.patch
@@ -0,0 +1,18 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Anton Tayanovskyy
+Date: Mon, 28 Oct 2024 17:49:18 -0400
+Subject: [PATCH] Restore AWS Go SDK v1 session
+
+
+diff --git a/internal/conns/awsclient.go b/internal/conns/awsclient.go
+index ddfe9d8849..6e2fc6ff46 100644
+--- a/internal/conns/awsclient.go
++++ b/internal/conns/awsclient.go
+@@ -253,6 +253,7 @@ func (c *AWSClient) apiClientConfig(_ context.Context, servicePackageName string
+ "aws_sdkv2_config": c.awsConfig,
+ "endpoint": c.endpoints[servicePackageName],
+ "partition": c.Partition,
++ "session": c.session,
+ }
+ switch servicePackageName {
+ case names.S3:
diff --git a/provider/cmd/pulumi-resource-aws/bridge-metadata.json b/provider/cmd/pulumi-resource-aws/bridge-metadata.json
index 1f6118fc44b..a4ae565f935 100644
--- a/provider/cmd/pulumi-resource-aws/bridge-metadata.json
+++ b/provider/cmd/pulumi-resource-aws/bridge-metadata.json
@@ -7143,6 +7143,16 @@
}
}
}
+ },
+ "zonal_config": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "minimum_healthy_hosts_per_zone": {
+ "maxItemsOne": true
+ }
+ }
+ }
}
}
},
@@ -14435,6 +14445,65 @@
}
}
},
+ "aws_imagebuilder_lifecycle_policy": {
+ "current": "aws:imagebuilder/lifecyclePolicy:LifecyclePolicy",
+ "majorVersion": 6,
+ "fields": {
+ "policy_detail": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "action": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "include_resources": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
+ "exclusion_rules": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "amis": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "last_launched": {
+ "maxItemsOne": true
+ },
+ "regions": {
+ "maxItemsOne": false
+ },
+ "shared_accounts": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "filter": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
+ "resource_selection": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "recipe": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ },
"aws_imagebuilder_workflow": {
"current": "aws:imagebuilder/workflow:Workflow",
"majorVersion": 6
@@ -15716,6 +15785,53 @@
}
}
},
+ "iceberg_configuration": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "cloudwatch_logging_options": {
+ "maxItemsOne": true
+ },
+ "destination_table_configuration": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "unique_keys": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "processing_configuration": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "processors": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "parameters": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "s3_configuration": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "cloudwatch_logging_options": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"kinesis_source_configuration": {
"maxItemsOne": true
},
@@ -155255,6 +155371,10 @@
}
}
},
+ "aws_resiliencehub_resiliency_policy": {
+ "current": "aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy",
+ "majorVersion": 6
+ },
"aws_resourceexplorer2_index": {
"current": "aws:resourceexplorer/index:Index",
"majorVersion": 6
@@ -156968,6 +157088,16 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "app_lifecycle_management": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "idle_settings": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
"code_repository": {
"maxItemsOne": false
},
@@ -156977,6 +157107,19 @@
"default_resource_spec": {
"maxItemsOne": true
},
+ "emr_settings": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "assumable_role_arns": {
+ "maxItemsOne": false
+ },
+ "execution_role_arns": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
"lifecycle_config_arns": {
"maxItemsOne": false
}
@@ -157042,6 +157185,9 @@
"direct_deploy_settings": {
"maxItemsOne": true
},
+ "emr_serverless_settings": {
+ "maxItemsOne": true
+ },
"generative_ai_settings": {
"maxItemsOne": true
},
@@ -157067,6 +157213,16 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "app_lifecycle_management": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "idle_settings": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
"custom_image": {
"maxItemsOne": false
},
@@ -157096,6 +157252,16 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "app_lifecycle_management": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "idle_settings": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
"code_repository": {
"maxItemsOne": false
},
@@ -157105,6 +157271,19 @@
"default_resource_spec": {
"maxItemsOne": true
},
+ "emr_settings": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "assumable_role_arns": {
+ "maxItemsOne": false
+ },
+ "execution_role_arns": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
"lifecycle_config_arns": {
"maxItemsOne": false
}
@@ -157182,6 +157361,9 @@
"hidden_app_types": {
"maxItemsOne": false
},
+ "hidden_instance_types": {
+ "maxItemsOne": false
+ },
"hidden_ml_tools": {
"maxItemsOne": false
}
@@ -157394,7 +157576,21 @@
"majorVersion": 6,
"fields": {
"feature_definition": {
- "maxItemsOne": false
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "collection_config": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "vector_config": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ }
+ }
+ }
},
"offline_store_config": {
"maxItemsOne": true,
@@ -157421,6 +157617,9 @@
}
}
}
+ },
+ "throughput_config": {
+ "maxItemsOne": true
}
}
},
@@ -157466,6 +157665,18 @@
}
}
},
+ "aws_sagemaker_hub": {
+ "current": "aws:sagemaker/hub:Hub",
+ "majorVersion": 6,
+ "fields": {
+ "hub_search_keywords": {
+ "maxItemsOne": false
+ },
+ "s3_storage_config": {
+ "maxItemsOne": true
+ }
+ }
+ },
"aws_sagemaker_human_task_ui": {
"current": "aws:sagemaker/humanTaskUI:HumanTaskUI",
"majorVersion": 6,
@@ -157483,6 +157694,10 @@
"current": "aws:sagemaker/imageVersion:ImageVersion",
"majorVersion": 6
},
+ "aws_sagemaker_mlflow_tracking_server": {
+ "current": "aws:sagemaker/mlflowTrackingServer:MlflowTrackingServer",
+ "majorVersion": 6
+ },
"aws_sagemaker_model": {
"current": "aws:sagemaker/model:Model",
"majorVersion": 6,
@@ -157672,6 +157887,16 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "app_lifecycle_management": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "idle_settings": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
"default_resource_spec": {
"maxItemsOne": true
}
@@ -157692,6 +157917,16 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "app_lifecycle_management": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "idle_settings": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
"code_repository": {
"maxItemsOne": false
},
@@ -157770,6 +158005,9 @@
"direct_deploy_settings": {
"maxItemsOne": true
},
+ "emr_serverless_settings": {
+ "maxItemsOne": true
+ },
"generative_ai_settings": {
"maxItemsOne": true
},
@@ -157795,6 +158033,16 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "app_lifecycle_management": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "idle_settings": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
"custom_image": {
"maxItemsOne": false
},
@@ -157824,6 +158072,16 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "app_lifecycle_management": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "idle_settings": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
"code_repository": {
"maxItemsOne": false
},
@@ -157833,6 +158091,19 @@
"default_resource_spec": {
"maxItemsOne": true
},
+ "emr_settings": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "assumable_role_arns": {
+ "maxItemsOne": false
+ },
+ "execution_role_arns": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
"lifecycle_config_arns": {
"maxItemsOne": false
}
@@ -157910,6 +158181,9 @@
"hidden_app_types": {
"maxItemsOne": false
},
+ "hidden_instance_types": {
+ "maxItemsOne": false
+ },
"hidden_ml_tools": {
"maxItemsOne": false
}
@@ -274389,6 +274663,25 @@
}
}
},
+ "aws_ssm_patch_baselines": {
+ "current": "aws:ssm/getPatchBaselines:getPatchBaselines",
+ "majorVersion": 6,
+ "fields": {
+ "baseline_identities": {
+ "maxItemsOne": false
+ },
+ "filter": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "values": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ },
"aws_ssmcontacts_contact": {
"current": "aws:ssmcontacts/getContact:getContact",
"majorVersion": 6
@@ -276072,6 +276365,7 @@
"aws:imagebuilder/imagePipeline:ImagePipeline": 0,
"aws:imagebuilder/imageRecipe:ImageRecipe": 0,
"aws:imagebuilder/infrastructureConfiguration:InfrastructureConfiguration": 0,
+ "aws:imagebuilder/lifecyclePolicy:LifecyclePolicy": 1,
"aws:imagebuilder/workflow:Workflow": 0,
"aws:inspector/assessmentTarget:AssessmentTarget": 0,
"aws:inspector/assessmentTemplate:AssessmentTemplate": 0,
@@ -276419,6 +276713,7 @@
"aws:rekognition/collection:Collection": 1,
"aws:rekognition/project:Project": 1,
"aws:rekognition/streamProcessor:StreamProcessor": 1,
+ "aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy": 1,
"aws:resourceexplorer/index:Index": 1,
"aws:resourceexplorer/view:View": 1,
"aws:resourcegroups/group:Group": 0,
@@ -276517,9 +276812,11 @@
"aws:sagemaker/endpointConfiguration:EndpointConfiguration": 0,
"aws:sagemaker/featureGroup:FeatureGroup": 0,
"aws:sagemaker/flowDefinition:FlowDefinition": 0,
+ "aws:sagemaker/hub:Hub": 0,
"aws:sagemaker/humanTaskUI:HumanTaskUI": 0,
"aws:sagemaker/image:Image": 0,
"aws:sagemaker/imageVersion:ImageVersion": 0,
+ "aws:sagemaker/mlflowTrackingServer:MlflowTrackingServer": 0,
"aws:sagemaker/model:Model": 0,
"aws:sagemaker/modelPackageGroup:ModelPackageGroup": 0,
"aws:sagemaker/modelPackageGroupPolicy:ModelPackageGroupPolicy": 0,
@@ -277314,6 +277611,7 @@
"aws:ssm/getParameter:getParameter": 0,
"aws:ssm/getParametersByPath:getParametersByPath": 0,
"aws:ssm/getPatchBaseline:getPatchBaseline": 0,
+ "aws:ssm/getPatchBaselines:getPatchBaselines": 1,
"aws:ssmcontacts/getContact:getContact": 0,
"aws:ssmcontacts/getContactChannel:getContactChannel": 0,
"aws:ssmcontacts/getPlan:getPlan": 0,
diff --git a/provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json b/provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json
index 83732368ebe..11c46f9ef85 100644
--- a/provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json
+++ b/provider/cmd/pulumi-resource-aws/runtime-bridge-metadata.json
@@ -1 +1 @@
-{"auto-settings":{"resources":{"aws_eks_cluster":{"maxItemsOneOverrides":{"certificate_authority":true}},"aws_lexv2models_slot":{"maxItemsOneOverrides":{"value_elicitation_setting.$.prompt_specification.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.prompt_specification.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.continue_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.continue_response.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.still_waiting_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.still_waiting_response.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.waiting_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.waiting_response.$.message_group.$.variation.$.custom_payload":false}},"aws_lexv2models_slot_type":{"maxItemsOneOverrides":{"composite_slot_type_setting":true,"external_source_setting":true,"external_source_setting.$.grammar_slot_type_setting":true,"external_source_setting.$.grammar_slot_type_setting.$.source":true,"slot_type_values":true}},"aws_sagemaker_app_image_config":{"maxItemsOneOverrides":{"kernel_gateway_image_config.$.kernel_spec":true}},"aws_securitylake_subscriber":{"maxItemsOneOverrides":{"source":true}},"aws_wafv2_web_acl":{"maxItemsOneOverrides":{"association_config.$.request_body.$.api_gateway":false,"association_config.$.request_body.$.app_runner_service":false,"association_config.$.request_body.$.cloudfront":false,"association_config.$.request_body.$.cognito_user_pool":false,"association_config.$.request_body.$.verified_access_instance":false}}},"datasources":{"aws_efs_file_system":{"maxItemsOneOverrides":{"lifecycle_policy":true}},"aws_quicksight_analysis":{"renames":["aws:quicksight/getAnalysis:getAnalysis"]},"aws_vpc_ipam_pool":{"renames":["aws:ec2/getVpcIamPool:getVpcIamPool"]},"aws_vpc_ipam_pool_cidrs":{"renames":["aws:ec2/getVpcIamPoolCidrs:getVpcIamPoolCidrs"]},"aws_vpc_ipam_pools":{"renames":["aws:ec2/getVpcIamPools:getVpcIamPools"]}}},"mux":{"resources":{"aws:accessanalyzer/analyzer:Analyzer":0,"aws:accessanalyzer/archiveRule:ArchiveRule":0,"aws:account/alternativeContact:AlternativeContact":0,"aws:account/primaryContact:PrimaryContact":0,"aws:account/region:Region":0,"aws:acm/certificate:Certificate":0,"aws:acm/certificateValidation:CertificateValidation":0,"aws:acmpca/certificate:Certificate":0,"aws:acmpca/certificateAuthority:CertificateAuthority":0,"aws:acmpca/certificateAuthorityCertificate:CertificateAuthorityCertificate":0,"aws:acmpca/permission:Permission":0,"aws:acmpca/policy:Policy":0,"aws:alb/listener:Listener":0,"aws:alb/listenerCertificate:ListenerCertificate":0,"aws:alb/listenerRule:ListenerRule":0,"aws:alb/loadBalancer:LoadBalancer":0,"aws:alb/targetGroup:TargetGroup":0,"aws:alb/targetGroupAttachment:TargetGroupAttachment":0,"aws:amp/alertManagerDefinition:AlertManagerDefinition":0,"aws:amp/ruleGroupNamespace:RuleGroupNamespace":0,"aws:amp/scraper:Scraper":1,"aws:amp/workspace:Workspace":0,"aws:amplify/app:App":0,"aws:amplify/backendEnvironment:BackendEnvironment":0,"aws:amplify/branch:Branch":0,"aws:amplify/domainAssociation:DomainAssociation":0,"aws:amplify/webhook:Webhook":0,"aws:apigateway/account:Account":0,"aws:apigateway/apiKey:ApiKey":0,"aws:apigateway/authorizer:Authorizer":0,"aws:apigateway/basePathMapping:BasePathMapping":0,"aws:apigateway/clientCertificate:ClientCertificate":0,"aws:apigateway/deployment:Deployment":0,"aws:apigateway/documentationPart:DocumentationPart":0,"aws:apigateway/documentationVersion:DocumentationVersion":0,"aws:apigateway/domainName:DomainName":0,"aws:apigateway/integration:Integration":0,"aws:apigateway/integrationResponse:IntegrationResponse":0,"aws:apigateway/method:Method":0,"aws:apigateway/methodResponse:MethodResponse":0,"aws:apigateway/methodSettings:MethodSettings":0,"aws:apigateway/model:Model":0,"aws:apigateway/requestValidator:RequestValidator":0,"aws:apigateway/resource:Resource":0,"aws:apigateway/response:Response":0,"aws:apigateway/restApi:RestApi":0,"aws:apigateway/restApiPolicy:RestApiPolicy":0,"aws:apigateway/stage:Stage":0,"aws:apigateway/usagePlan:UsagePlan":0,"aws:apigateway/usagePlanKey:UsagePlanKey":0,"aws:apigateway/vpcLink:VpcLink":0,"aws:apigatewayv2/api:Api":0,"aws:apigatewayv2/apiMapping:ApiMapping":0,"aws:apigatewayv2/authorizer:Authorizer":0,"aws:apigatewayv2/deployment:Deployment":0,"aws:apigatewayv2/domainName:DomainName":0,"aws:apigatewayv2/integration:Integration":0,"aws:apigatewayv2/integrationResponse:IntegrationResponse":0,"aws:apigatewayv2/model:Model":0,"aws:apigatewayv2/route:Route":0,"aws:apigatewayv2/routeResponse:RouteResponse":0,"aws:apigatewayv2/stage:Stage":0,"aws:apigatewayv2/vpcLink:VpcLink":0,"aws:appautoscaling/policy:Policy":0,"aws:appautoscaling/scheduledAction:ScheduledAction":0,"aws:appautoscaling/target:Target":0,"aws:appconfig/application:Application":0,"aws:appconfig/configurationProfile:ConfigurationProfile":0,"aws:appconfig/deployment:Deployment":0,"aws:appconfig/deploymentStrategy:DeploymentStrategy":0,"aws:appconfig/environment:Environment":1,"aws:appconfig/eventIntegration:EventIntegration":0,"aws:appconfig/extension:Extension":0,"aws:appconfig/extensionAssociation:ExtensionAssociation":0,"aws:appconfig/hostedConfigurationVersion:HostedConfigurationVersion":0,"aws:appfabric/appAuthorization:AppAuthorization":1,"aws:appfabric/appAuthorizationConnection:AppAuthorizationConnection":1,"aws:appfabric/appBundle:AppBundle":1,"aws:appfabric/ingestion:Ingestion":1,"aws:appfabric/ingestionDestination:IngestionDestination":1,"aws:appflow/connectorProfile:ConnectorProfile":0,"aws:appflow/flow:Flow":0,"aws:appintegrations/dataIntegration:DataIntegration":0,"aws:applicationinsights/application:Application":0,"aws:appmesh/gatewayRoute:GatewayRoute":0,"aws:appmesh/mesh:Mesh":0,"aws:appmesh/route:Route":0,"aws:appmesh/virtualGateway:VirtualGateway":0,"aws:appmesh/virtualNode:VirtualNode":0,"aws:appmesh/virtualRouter:VirtualRouter":0,"aws:appmesh/virtualService:VirtualService":0,"aws:apprunner/autoScalingConfigurationVersion:AutoScalingConfigurationVersion":0,"aws:apprunner/connection:Connection":0,"aws:apprunner/customDomainAssociation:CustomDomainAssociation":0,"aws:apprunner/defaultAutoScalingConfigurationVersion:DefaultAutoScalingConfigurationVersion":1,"aws:apprunner/deployment:Deployment":1,"aws:apprunner/observabilityConfiguration:ObservabilityConfiguration":0,"aws:apprunner/service:Service":0,"aws:apprunner/vpcConnector:VpcConnector":0,"aws:apprunner/vpcIngressConnection:VpcIngressConnection":0,"aws:appstream/directoryConfig:DirectoryConfig":0,"aws:appstream/fleet:Fleet":0,"aws:appstream/fleetStackAssociation:FleetStackAssociation":0,"aws:appstream/imageBuilder:ImageBuilder":0,"aws:appstream/stack:Stack":0,"aws:appstream/user:User":0,"aws:appstream/userStackAssociation:UserStackAssociation":0,"aws:appsync/apiCache:ApiCache":0,"aws:appsync/apiKey:ApiKey":0,"aws:appsync/dataSource:DataSource":0,"aws:appsync/domainName:DomainName":0,"aws:appsync/domainNameApiAssociation:DomainNameApiAssociation":0,"aws:appsync/function:Function":0,"aws:appsync/graphQLApi:GraphQLApi":0,"aws:appsync/resolver:Resolver":0,"aws:appsync/sourceApiAssociation:SourceApiAssociation":1,"aws:appsync/type:Type":0,"aws:athena/dataCatalog:DataCatalog":0,"aws:athena/database:Database":0,"aws:athena/namedQuery:NamedQuery":0,"aws:athena/preparedStatement:PreparedStatement":0,"aws:athena/workgroup:Workgroup":0,"aws:auditmanager/accountRegistration:AccountRegistration":1,"aws:auditmanager/assessment:Assessment":1,"aws:auditmanager/assessmentDelegation:AssessmentDelegation":1,"aws:auditmanager/assessmentReport:AssessmentReport":1,"aws:auditmanager/control:Control":1,"aws:auditmanager/framework:Framework":1,"aws:auditmanager/frameworkShare:FrameworkShare":1,"aws:auditmanager/organizationAdminAccountRegistration:OrganizationAdminAccountRegistration":1,"aws:autoscaling/attachment:Attachment":0,"aws:autoscaling/group:Group":0,"aws:autoscaling/lifecycleHook:LifecycleHook":0,"aws:autoscaling/notification:Notification":0,"aws:autoscaling/policy:Policy":0,"aws:autoscaling/schedule:Schedule":0,"aws:autoscaling/tag:Tag":0,"aws:autoscaling/trafficSourceAttachment:TrafficSourceAttachment":0,"aws:autoscalingplans/scalingPlan:ScalingPlan":0,"aws:backup/framework:Framework":0,"aws:backup/globalSettings:GlobalSettings":0,"aws:backup/logicallyAirGappedVault:LogicallyAirGappedVault":1,"aws:backup/plan:Plan":0,"aws:backup/regionSettings:RegionSettings":0,"aws:backup/reportPlan:ReportPlan":0,"aws:backup/restoreTestingPlan:RestoreTestingPlan":1,"aws:backup/restoreTestingSelection:RestoreTestingSelection":1,"aws:backup/selection:Selection":0,"aws:backup/vault:Vault":0,"aws:backup/vaultLockConfiguration:VaultLockConfiguration":0,"aws:backup/vaultNotifications:VaultNotifications":0,"aws:backup/vaultPolicy:VaultPolicy":0,"aws:batch/computeEnvironment:ComputeEnvironment":0,"aws:batch/jobDefinition:JobDefinition":0,"aws:batch/jobQueue:JobQueue":1,"aws:batch/schedulingPolicy:SchedulingPolicy":0,"aws:bcmdata/export:Export":1,"aws:bedrock/agentAgent:AgentAgent":1,"aws:bedrock/agentAgentActionGroup:AgentAgentActionGroup":1,"aws:bedrock/agentAgentAlias:AgentAgentAlias":1,"aws:bedrock/agentAgentKnowledgeBaseAssociation:AgentAgentKnowledgeBaseAssociation":1,"aws:bedrock/agentDataSource:AgentDataSource":1,"aws:bedrock/agentKnowledgeBase:AgentKnowledgeBase":1,"aws:bedrock/customModel:CustomModel":1,"aws:bedrock/guardrail:Guardrail":1,"aws:bedrock/guardrailVersion:GuardrailVersion":1,"aws:bedrock/provisionedModelThroughput:ProvisionedModelThroughput":1,"aws:bedrockmodel/invocationLoggingConfiguration:InvocationLoggingConfiguration":1,"aws:budgets/budget:Budget":0,"aws:budgets/budgetAction:BudgetAction":0,"aws:cfg/aggregateAuthorization:AggregateAuthorization":0,"aws:cfg/configurationAggregator:ConfigurationAggregator":0,"aws:cfg/conformancePack:ConformancePack":0,"aws:cfg/deliveryChannel:DeliveryChannel":0,"aws:cfg/organizationConformancePack:OrganizationConformancePack":0,"aws:cfg/organizationCustomPolicyRule:OrganizationCustomPolicyRule":0,"aws:cfg/organizationCustomRule:OrganizationCustomRule":0,"aws:cfg/organizationManagedRule:OrganizationManagedRule":0,"aws:cfg/recorder:Recorder":0,"aws:cfg/recorderStatus:RecorderStatus":0,"aws:cfg/remediationConfiguration:RemediationConfiguration":0,"aws:cfg/retentionConfiguration:RetentionConfiguration":1,"aws:cfg/rule:Rule":0,"aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration":1,"aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration":1,"aws:chime/sdkvoiceGlobalSettings:SdkvoiceGlobalSettings":0,"aws:chime/sdkvoiceSipMediaApplication:SdkvoiceSipMediaApplication":0,"aws:chime/sdkvoiceSipRule:SdkvoiceSipRule":0,"aws:chime/sdkvoiceVoiceProfileDomain:SdkvoiceVoiceProfileDomain":0,"aws:chime/voiceConnector:VoiceConnector":0,"aws:chime/voiceConnectorGroup:VoiceConnectorGroup":0,"aws:chime/voiceConnectorLogging:VoiceConnectorLogging":0,"aws:chime/voiceConnectorOrganization:VoiceConnectorOrganization":0,"aws:chime/voiceConnectorStreaming:VoiceConnectorStreaming":0,"aws:chime/voiceConnectorTermination:VoiceConnectorTermination":0,"aws:chime/voiceConnectorTerminationCredentials:VoiceConnectorTerminationCredentials":0,"aws:chimesdkmediapipelines/mediaInsightsPipelineConfiguration:MediaInsightsPipelineConfiguration":0,"aws:cleanrooms/collaboration:Collaboration":0,"aws:cleanrooms/configuredTable:ConfiguredTable":0,"aws:cloud9/environmentEC2:EnvironmentEC2":0,"aws:cloud9/environmentMembership:EnvironmentMembership":0,"aws:cloudcontrol/resource:Resource":0,"aws:cloudformation/cloudFormationType:CloudFormationType":0,"aws:cloudformation/stack:Stack":0,"aws:cloudformation/stackInstances:StackInstances":0,"aws:cloudformation/stackSet:StackSet":0,"aws:cloudformation/stackSetInstance:StackSetInstance":0,"aws:cloudfront/cachePolicy:CachePolicy":0,"aws:cloudfront/continuousDeploymentPolicy:ContinuousDeploymentPolicy":1,"aws:cloudfront/distribution:Distribution":0,"aws:cloudfront/fieldLevelEncryptionConfig:FieldLevelEncryptionConfig":0,"aws:cloudfront/fieldLevelEncryptionProfile:FieldLevelEncryptionProfile":0,"aws:cloudfront/function:Function":0,"aws:cloudfront/keyGroup:KeyGroup":0,"aws:cloudfront/keyValueStore:KeyValueStore":1,"aws:cloudfront/keyvaluestoreKey:KeyvaluestoreKey":1,"aws:cloudfront/monitoringSubscription:MonitoringSubscription":0,"aws:cloudfront/originAccessControl:OriginAccessControl":0,"aws:cloudfront/originAccessIdentity:OriginAccessIdentity":0,"aws:cloudfront/originRequestPolicy:OriginRequestPolicy":0,"aws:cloudfront/publicKey:PublicKey":0,"aws:cloudfront/realtimeLogConfig:RealtimeLogConfig":0,"aws:cloudfront/responseHeadersPolicy:ResponseHeadersPolicy":0,"aws:cloudhsmv2/cluster:Cluster":0,"aws:cloudhsmv2/hsm:Hsm":0,"aws:cloudsearch/domain:Domain":0,"aws:cloudsearch/domainServiceAccessPolicy:DomainServiceAccessPolicy":0,"aws:cloudtrail/eventDataStore:EventDataStore":0,"aws:cloudtrail/organizationDelegatedAdminAccount:OrganizationDelegatedAdminAccount":1,"aws:cloudtrail/trail:Trail":0,"aws:cloudwatch/compositeAlarm:CompositeAlarm":0,"aws:cloudwatch/dashboard:Dashboard":0,"aws:cloudwatch/eventApiDestination:EventApiDestination":0,"aws:cloudwatch/eventArchive:EventArchive":0,"aws:cloudwatch/eventBus:EventBus":0,"aws:cloudwatch/eventBusPolicy:EventBusPolicy":0,"aws:cloudwatch/eventConnection:EventConnection":0,"aws:cloudwatch/eventEndpoint:EventEndpoint":0,"aws:cloudwatch/eventPermission:EventPermission":0,"aws:cloudwatch/eventRule:EventRule":0,"aws:cloudwatch/eventTarget:EventTarget":0,"aws:cloudwatch/internetMonitor:InternetMonitor":0,"aws:cloudwatch/logAccountPolicy:LogAccountPolicy":0,"aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy":0,"aws:cloudwatch/logDestination:LogDestination":0,"aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy":0,"aws:cloudwatch/logGroup:LogGroup":0,"aws:cloudwatch/logMetricFilter:LogMetricFilter":0,"aws:cloudwatch/logResourcePolicy:LogResourcePolicy":0,"aws:cloudwatch/logStream:LogStream":0,"aws:cloudwatch/logSubscriptionFilter:LogSubscriptionFilter":0,"aws:cloudwatch/metricAlarm:MetricAlarm":0,"aws:cloudwatch/metricStream:MetricStream":0,"aws:cloudwatch/queryDefinition:QueryDefinition":0,"aws:codeartifact/domain:Domain":0,"aws:codeartifact/domainPermissions:DomainPermissions":0,"aws:codeartifact/repository:Repository":0,"aws:codeartifact/repositoryPermissionsPolicy:RepositoryPermissionsPolicy":0,"aws:codebuild/fleet:Fleet":0,"aws:codebuild/project:Project":0,"aws:codebuild/reportGroup:ReportGroup":0,"aws:codebuild/resourcePolicy:ResourcePolicy":0,"aws:codebuild/sourceCredential:SourceCredential":0,"aws:codebuild/webhook:Webhook":0,"aws:codecatalyst/devEnvironment:DevEnvironment":0,"aws:codecatalyst/project:Project":0,"aws:codecatalyst/sourceRepository:SourceRepository":0,"aws:codecommit/approvalRuleTemplate:ApprovalRuleTemplate":0,"aws:codecommit/approvalRuleTemplateAssociation:ApprovalRuleTemplateAssociation":0,"aws:codecommit/repository:Repository":0,"aws:codecommit/trigger:Trigger":0,"aws:codedeploy/application:Application":0,"aws:codedeploy/deploymentConfig:DeploymentConfig":0,"aws:codedeploy/deploymentGroup:DeploymentGroup":0,"aws:codeguruprofiler/profilingGroup:ProfilingGroup":1,"aws:codegurureviewer/repositoryAssociation:RepositoryAssociation":0,"aws:codepipeline/customActionType:CustomActionType":0,"aws:codepipeline/pipeline:Pipeline":0,"aws:codepipeline/webhook:Webhook":0,"aws:codestarconnections/connection:Connection":0,"aws:codestarconnections/host:Host":0,"aws:codestarnotifications/notificationRule:NotificationRule":0,"aws:cognito/identityPool:IdentityPool":0,"aws:cognito/identityPoolProviderPrincipalTag:IdentityPoolProviderPrincipalTag":0,"aws:cognito/identityPoolRoleAttachment:IdentityPoolRoleAttachment":0,"aws:cognito/identityProvider:IdentityProvider":0,"aws:cognito/managedUserPoolClient:ManagedUserPoolClient":1,"aws:cognito/resourceServer:ResourceServer":0,"aws:cognito/riskConfiguration:RiskConfiguration":0,"aws:cognito/user:User":0,"aws:cognito/userGroup:UserGroup":0,"aws:cognito/userInGroup:UserInGroup":0,"aws:cognito/userPool:UserPool":0,"aws:cognito/userPoolClient:UserPoolClient":1,"aws:cognito/userPoolDomain:UserPoolDomain":0,"aws:cognito/userPoolUICustomization:UserPoolUICustomization":0,"aws:comprehend/documentClassifier:DocumentClassifier":0,"aws:comprehend/entityRecognizer:EntityRecognizer":0,"aws:computeoptimizer/enrollmentStatus:EnrollmentStatus":1,"aws:computeoptimizer/recommendationPreferences:RecommendationPreferences":1,"aws:connect/botAssociation:BotAssociation":0,"aws:connect/contactFlow:ContactFlow":0,"aws:connect/contactFlowModule:ContactFlowModule":0,"aws:connect/hoursOfOperation:HoursOfOperation":0,"aws:connect/instance:Instance":0,"aws:connect/instanceStorageConfig:InstanceStorageConfig":0,"aws:connect/lambdaFunctionAssociation:LambdaFunctionAssociation":0,"aws:connect/phoneNumber:PhoneNumber":0,"aws:connect/queue:Queue":0,"aws:connect/quickConnect:QuickConnect":0,"aws:connect/routingProfile:RoutingProfile":0,"aws:connect/securityProfile:SecurityProfile":0,"aws:connect/user:User":0,"aws:connect/userHierarchyGroup:UserHierarchyGroup":0,"aws:connect/userHierarchyStructure:UserHierarchyStructure":0,"aws:connect/vocabulary:Vocabulary":0,"aws:controltower/controlTowerControl:ControlTowerControl":0,"aws:controltower/landingZone:LandingZone":0,"aws:costexplorer/anomalyMonitor:AnomalyMonitor":0,"aws:costexplorer/anomalySubscription:AnomalySubscription":0,"aws:costexplorer/costAllocationTag:CostAllocationTag":0,"aws:costexplorer/costCategory:CostCategory":0,"aws:costoptimizationhub/enrollmentStatus:EnrollmentStatus":1,"aws:costoptimizationhub/preferences:Preferences":1,"aws:cur/reportDefinition:ReportDefinition":0,"aws:customerprofiles/domain:Domain":0,"aws:customerprofiles/profile:Profile":0,"aws:dataexchange/dataSet:DataSet":0,"aws:dataexchange/revision:Revision":0,"aws:datapipeline/pipeline:Pipeline":0,"aws:datapipeline/pipelineDefinition:PipelineDefinition":0,"aws:datasync/agent:Agent":0,"aws:datasync/efsLocation:EfsLocation":0,"aws:datasync/fsxOpenZfsFileSystem:FsxOpenZfsFileSystem":0,"aws:datasync/locationAzureBlob:LocationAzureBlob":0,"aws:datasync/locationFsxLustre:LocationFsxLustre":0,"aws:datasync/locationFsxOntapFileSystem:LocationFsxOntapFileSystem":0,"aws:datasync/locationFsxWindows:LocationFsxWindows":0,"aws:datasync/locationHdfs:LocationHdfs":0,"aws:datasync/locationObjectStorage:LocationObjectStorage":0,"aws:datasync/locationSmb:LocationSmb":0,"aws:datasync/nfsLocation:NfsLocation":0,"aws:datasync/s3Location:S3Location":0,"aws:datasync/task:Task":0,"aws:datazone/assetType:AssetType":1,"aws:datazone/domain:Domain":1,"aws:datazone/environment:Environment":1,"aws:datazone/environmentBlueprintConfiguration:EnvironmentBlueprintConfiguration":1,"aws:datazone/environmentProfile:EnvironmentProfile":1,"aws:datazone/formType:FormType":1,"aws:datazone/glossary:Glossary":1,"aws:datazone/glossaryTerm:GlossaryTerm":1,"aws:datazone/project:Project":1,"aws:datazone/userProfile:UserProfile":1,"aws:dax/cluster:Cluster":0,"aws:dax/parameterGroup:ParameterGroup":0,"aws:dax/subnetGroup:SubnetGroup":0,"aws:detective/graph:Graph":0,"aws:detective/invitationAccepter:InvitationAccepter":0,"aws:detective/member:Member":0,"aws:detective/organizationAdminAccount:OrganizationAdminAccount":0,"aws:detective/organizationConfiguration:OrganizationConfiguration":0,"aws:devicefarm/devicePool:DevicePool":0,"aws:devicefarm/instanceProfile:InstanceProfile":0,"aws:devicefarm/networkProfile:NetworkProfile":0,"aws:devicefarm/project:Project":0,"aws:devicefarm/testGridProject:TestGridProject":0,"aws:devicefarm/upload:Upload":0,"aws:devopsguru/eventSourcesConfig:EventSourcesConfig":1,"aws:devopsguru/notificationChannel:NotificationChannel":1,"aws:devopsguru/resourceCollection:ResourceCollection":1,"aws:devopsguru/serviceIntegration:ServiceIntegration":1,"aws:directconnect/bgpPeer:BgpPeer":0,"aws:directconnect/connection:Connection":0,"aws:directconnect/connectionAssociation:ConnectionAssociation":0,"aws:directconnect/connectionConfirmation:ConnectionConfirmation":0,"aws:directconnect/gateway:Gateway":0,"aws:directconnect/gatewayAssociation:GatewayAssociation":0,"aws:directconnect/gatewayAssociationProposal:GatewayAssociationProposal":0,"aws:directconnect/hostedConnection:HostedConnection":0,"aws:directconnect/hostedPrivateVirtualInterface:HostedPrivateVirtualInterface":0,"aws:directconnect/hostedPrivateVirtualInterfaceAccepter:HostedPrivateVirtualInterfaceAccepter":0,"aws:directconnect/hostedPublicVirtualInterface:HostedPublicVirtualInterface":0,"aws:directconnect/hostedPublicVirtualInterfaceAccepter:HostedPublicVirtualInterfaceAccepter":0,"aws:directconnect/hostedTransitVirtualInterface:HostedTransitVirtualInterface":0,"aws:directconnect/hostedTransitVirtualInterfaceAcceptor:HostedTransitVirtualInterfaceAcceptor":0,"aws:directconnect/linkAggregationGroup:LinkAggregationGroup":0,"aws:directconnect/macsecKeyAssociation:MacsecKeyAssociation":0,"aws:directconnect/privateVirtualInterface:PrivateVirtualInterface":0,"aws:directconnect/publicVirtualInterface:PublicVirtualInterface":0,"aws:directconnect/transitVirtualInterface:TransitVirtualInterface":0,"aws:directoryservice/conditionalForwader:ConditionalForwader":0,"aws:directoryservice/directory:Directory":0,"aws:directoryservice/logService:LogService":0,"aws:directoryservice/radiusSettings:RadiusSettings":0,"aws:directoryservice/serviceRegion:ServiceRegion":0,"aws:directoryservice/sharedDirectory:SharedDirectory":0,"aws:directoryservice/sharedDirectoryAccepter:SharedDirectoryAccepter":0,"aws:directoryservice/trust:Trust":1,"aws:dlm/lifecyclePolicy:LifecyclePolicy":0,"aws:dms/certificate:Certificate":0,"aws:dms/endpoint:Endpoint":0,"aws:dms/eventSubscription:EventSubscription":0,"aws:dms/replicationConfig:ReplicationConfig":0,"aws:dms/replicationInstance:ReplicationInstance":0,"aws:dms/replicationSubnetGroup:ReplicationSubnetGroup":0,"aws:dms/replicationTask:ReplicationTask":0,"aws:dms/s3Endpoint:S3Endpoint":0,"aws:docdb/cluster:Cluster":0,"aws:docdb/clusterInstance:ClusterInstance":0,"aws:docdb/clusterParameterGroup:ClusterParameterGroup":0,"aws:docdb/clusterSnapshot:ClusterSnapshot":0,"aws:docdb/elasticCluster:ElasticCluster":1,"aws:docdb/eventSubscription:EventSubscription":0,"aws:docdb/globalCluster:GlobalCluster":0,"aws:docdb/subnetGroup:SubnetGroup":0,"aws:drs/replicationConfigurationTemplate:ReplicationConfigurationTemplate":1,"aws:dynamodb/contributorInsights:ContributorInsights":0,"aws:dynamodb/globalTable:GlobalTable":0,"aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination":0,"aws:dynamodb/resourcePolicy:ResourcePolicy":1,"aws:dynamodb/table:Table":0,"aws:dynamodb/tableExport:TableExport":0,"aws:dynamodb/tableItem:TableItem":0,"aws:dynamodb/tableReplica:TableReplica":0,"aws:dynamodb/tag:Tag":0,"aws:ebs/defaultKmsKey:DefaultKmsKey":0,"aws:ebs/encryptionByDefault:EncryptionByDefault":0,"aws:ebs/fastSnapshotRestore:FastSnapshotRestore":1,"aws:ebs/snapshot:Snapshot":0,"aws:ebs/snapshotBlockPublicAccess:SnapshotBlockPublicAccess":0,"aws:ebs/snapshotCopy:SnapshotCopy":0,"aws:ebs/snapshotImport:SnapshotImport":0,"aws:ebs/volume:Volume":0,"aws:ec2/ami:Ami":0,"aws:ec2/amiCopy:AmiCopy":0,"aws:ec2/amiFromInstance:AmiFromInstance":0,"aws:ec2/amiLaunchPermission:AmiLaunchPermission":0,"aws:ec2/availabilityZoneGroup:AvailabilityZoneGroup":0,"aws:ec2/capacityBlockReservation:CapacityBlockReservation":1,"aws:ec2/capacityReservation:CapacityReservation":0,"aws:ec2/carrierGateway:CarrierGateway":0,"aws:ec2/customerGateway:CustomerGateway":0,"aws:ec2/dedicatedHost:DedicatedHost":0,"aws:ec2/defaultNetworkAcl:DefaultNetworkAcl":0,"aws:ec2/defaultRouteTable:DefaultRouteTable":0,"aws:ec2/defaultSecurityGroup:DefaultSecurityGroup":0,"aws:ec2/defaultSubnet:DefaultSubnet":0,"aws:ec2/defaultVpc:DefaultVpc":0,"aws:ec2/defaultVpcDhcpOptions:DefaultVpcDhcpOptions":0,"aws:ec2/egressOnlyInternetGateway:EgressOnlyInternetGateway":0,"aws:ec2/eip:Eip":0,"aws:ec2/eipAssociation:EipAssociation":0,"aws:ec2/eipDomainName:EipDomainName":1,"aws:ec2/fleet:Fleet":0,"aws:ec2/flowLog:FlowLog":0,"aws:ec2/imageBlockPublicAccess:ImageBlockPublicAccess":0,"aws:ec2/instance:Instance":0,"aws:ec2/instanceMetadataDefaults:InstanceMetadataDefaults":1,"aws:ec2/internetGateway:InternetGateway":0,"aws:ec2/internetGatewayAttachment:InternetGatewayAttachment":0,"aws:ec2/keyPair:KeyPair":0,"aws:ec2/launchConfiguration:LaunchConfiguration":0,"aws:ec2/launchTemplate:LaunchTemplate":0,"aws:ec2/localGatewayRoute:LocalGatewayRoute":0,"aws:ec2/localGatewayRouteTableVpcAssociation:LocalGatewayRouteTableVpcAssociation":0,"aws:ec2/mainRouteTableAssociation:MainRouteTableAssociation":0,"aws:ec2/managedPrefixList:ManagedPrefixList":0,"aws:ec2/managedPrefixListEntry:ManagedPrefixListEntry":0,"aws:ec2/natGateway:NatGateway":0,"aws:ec2/networkAcl:NetworkAcl":0,"aws:ec2/networkAclAssociation:NetworkAclAssociation":0,"aws:ec2/networkAclRule:NetworkAclRule":0,"aws:ec2/networkInsightsAnalysis:NetworkInsightsAnalysis":0,"aws:ec2/networkInsightsPath:NetworkInsightsPath":0,"aws:ec2/networkInterface:NetworkInterface":0,"aws:ec2/networkInterfaceAttachment:NetworkInterfaceAttachment":0,"aws:ec2/networkInterfaceSecurityGroupAttachment:NetworkInterfaceSecurityGroupAttachment":0,"aws:ec2/peeringConnectionOptions:PeeringConnectionOptions":0,"aws:ec2/placementGroup:PlacementGroup":0,"aws:ec2/proxyProtocolPolicy:ProxyProtocolPolicy":0,"aws:ec2/route:Route":0,"aws:ec2/routeTable:RouteTable":0,"aws:ec2/routeTableAssociation:RouteTableAssociation":0,"aws:ec2/securityGroup:SecurityGroup":0,"aws:ec2/securityGroupAssociation:SecurityGroupAssociation":0,"aws:ec2/securityGroupRule:SecurityGroupRule":0,"aws:ec2/serialConsoleAccess:SerialConsoleAccess":0,"aws:ec2/snapshotCreateVolumePermission:SnapshotCreateVolumePermission":0,"aws:ec2/spotDatafeedSubscription:SpotDatafeedSubscription":0,"aws:ec2/spotFleetRequest:SpotFleetRequest":0,"aws:ec2/spotInstanceRequest:SpotInstanceRequest":0,"aws:ec2/subnet:Subnet":0,"aws:ec2/subnetCidrReservation:SubnetCidrReservation":0,"aws:ec2/tag:Tag":0,"aws:ec2/trafficMirrorFilter:TrafficMirrorFilter":0,"aws:ec2/trafficMirrorFilterRule:TrafficMirrorFilterRule":0,"aws:ec2/trafficMirrorSession:TrafficMirrorSession":0,"aws:ec2/trafficMirrorTarget:TrafficMirrorTarget":0,"aws:ec2/volumeAttachment:VolumeAttachment":0,"aws:ec2/vpc:Vpc":0,"aws:ec2/vpcDhcpOptions:VpcDhcpOptions":0,"aws:ec2/vpcDhcpOptionsAssociation:VpcDhcpOptionsAssociation":0,"aws:ec2/vpcEndpoint:VpcEndpoint":0,"aws:ec2/vpcEndpointConnectionAccepter:VpcEndpointConnectionAccepter":0,"aws:ec2/vpcEndpointConnectionNotification:VpcEndpointConnectionNotification":0,"aws:ec2/vpcEndpointPolicy:VpcEndpointPolicy":0,"aws:ec2/vpcEndpointRouteTableAssociation:VpcEndpointRouteTableAssociation":0,"aws:ec2/vpcEndpointService:VpcEndpointService":0,"aws:ec2/vpcEndpointServiceAllowedPrinciple:VpcEndpointServiceAllowedPrinciple":0,"aws:ec2/vpcEndpointSubnetAssociation:VpcEndpointSubnetAssociation":0,"aws:ec2/vpcIpam:VpcIpam":0,"aws:ec2/vpcIpamOrganizationAdminAccount:VpcIpamOrganizationAdminAccount":0,"aws:ec2/vpcIpamPool:VpcIpamPool":0,"aws:ec2/vpcIpamPoolCidr:VpcIpamPoolCidr":0,"aws:ec2/vpcIpamPoolCidrAllocation:VpcIpamPoolCidrAllocation":0,"aws:ec2/vpcIpamPreviewNextCidr:VpcIpamPreviewNextCidr":0,"aws:ec2/vpcIpamResourceDiscovery:VpcIpamResourceDiscovery":0,"aws:ec2/vpcIpamResourceDiscoveryAssociation:VpcIpamResourceDiscoveryAssociation":0,"aws:ec2/vpcIpamScope:VpcIpamScope":0,"aws:ec2/vpcIpv4CidrBlockAssociation:VpcIpv4CidrBlockAssociation":0,"aws:ec2/vpcIpv6CidrBlockAssociation:VpcIpv6CidrBlockAssociation":0,"aws:ec2/vpcNetworkPerformanceMetricSubscription:VpcNetworkPerformanceMetricSubscription":0,"aws:ec2/vpcPeeringConnection:VpcPeeringConnection":0,"aws:ec2/vpcPeeringConnectionAccepter:VpcPeeringConnectionAccepter":0,"aws:ec2/vpnConnection:VpnConnection":0,"aws:ec2/vpnConnectionRoute:VpnConnectionRoute":0,"aws:ec2/vpnGateway:VpnGateway":0,"aws:ec2/vpnGatewayAttachment:VpnGatewayAttachment":0,"aws:ec2/vpnGatewayRoutePropagation:VpnGatewayRoutePropagation":0,"aws:ec2clientvpn/authorizationRule:AuthorizationRule":0,"aws:ec2clientvpn/endpoint:Endpoint":0,"aws:ec2clientvpn/networkAssociation:NetworkAssociation":0,"aws:ec2clientvpn/route:Route":0,"aws:ec2transitgateway/connect:Connect":0,"aws:ec2transitgateway/connectPeer:ConnectPeer":0,"aws:ec2transitgateway/defaultRouteTableAssociation:DefaultRouteTableAssociation":1,"aws:ec2transitgateway/defaultRouteTablePropagation:DefaultRouteTablePropagation":1,"aws:ec2transitgateway/instanceConnectEndpoint:InstanceConnectEndpoint":1,"aws:ec2transitgateway/instanceState:InstanceState":0,"aws:ec2transitgateway/multicastDomain:MulticastDomain":0,"aws:ec2transitgateway/multicastDomainAssociation:MulticastDomainAssociation":0,"aws:ec2transitgateway/multicastGroupMember:MulticastGroupMember":0,"aws:ec2transitgateway/multicastGroupSource:MulticastGroupSource":0,"aws:ec2transitgateway/peeringAttachment:PeeringAttachment":0,"aws:ec2transitgateway/peeringAttachmentAccepter:PeeringAttachmentAccepter":0,"aws:ec2transitgateway/policyTable:PolicyTable":0,"aws:ec2transitgateway/policyTableAssociation:PolicyTableAssociation":0,"aws:ec2transitgateway/prefixListReference:PrefixListReference":0,"aws:ec2transitgateway/route:Route":0,"aws:ec2transitgateway/routeTable:RouteTable":0,"aws:ec2transitgateway/routeTableAssociation:RouteTableAssociation":0,"aws:ec2transitgateway/routeTablePropagation:RouteTablePropagation":0,"aws:ec2transitgateway/transitGateway:TransitGateway":0,"aws:ec2transitgateway/vpcAttachment:VpcAttachment":0,"aws:ec2transitgateway/vpcAttachmentAccepter:VpcAttachmentAccepter":0,"aws:ecr/lifecyclePolicy:LifecyclePolicy":0,"aws:ecr/pullThroughCacheRule:PullThroughCacheRule":0,"aws:ecr/registryPolicy:RegistryPolicy":0,"aws:ecr/registryScanningConfiguration:RegistryScanningConfiguration":0,"aws:ecr/replicationConfiguration:ReplicationConfiguration":0,"aws:ecr/repository:Repository":0,"aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate":0,"aws:ecr/repositoryPolicy:RepositoryPolicy":0,"aws:ecrpublic/repository:Repository":0,"aws:ecrpublic/repositoryPolicy:RepositoryPolicy":0,"aws:ecs/accountSettingDefault:AccountSettingDefault":0,"aws:ecs/capacityProvider:CapacityProvider":0,"aws:ecs/cluster:Cluster":0,"aws:ecs/clusterCapacityProviders:ClusterCapacityProviders":0,"aws:ecs/service:Service":0,"aws:ecs/tag:Tag":0,"aws:ecs/taskDefinition:TaskDefinition":0,"aws:ecs/taskSet:TaskSet":0,"aws:efs/accessPoint:AccessPoint":0,"aws:efs/backupPolicy:BackupPolicy":0,"aws:efs/fileSystem:FileSystem":0,"aws:efs/fileSystemPolicy:FileSystemPolicy":0,"aws:efs/mountTarget:MountTarget":0,"aws:efs/replicationConfiguration:ReplicationConfiguration":0,"aws:eks/accessEntry:AccessEntry":0,"aws:eks/accessPolicyAssociation:AccessPolicyAssociation":0,"aws:eks/addon:Addon":0,"aws:eks/cluster:Cluster":0,"aws:eks/fargateProfile:FargateProfile":0,"aws:eks/identityProviderConfig:IdentityProviderConfig":0,"aws:eks/nodeGroup:NodeGroup":0,"aws:eks/podIdentityAssociation:PodIdentityAssociation":1,"aws:elasticache/cluster:Cluster":0,"aws:elasticache/globalReplicationGroup:GlobalReplicationGroup":0,"aws:elasticache/parameterGroup:ParameterGroup":0,"aws:elasticache/replicationGroup:ReplicationGroup":0,"aws:elasticache/reservedCacheNode:ReservedCacheNode":1,"aws:elasticache/serverlessCache:ServerlessCache":1,"aws:elasticache/subnetGroup:SubnetGroup":0,"aws:elasticache/user:User":0,"aws:elasticache/userGroup:UserGroup":0,"aws:elasticache/userGroupAssociation:UserGroupAssociation":0,"aws:elasticbeanstalk/application:Application":0,"aws:elasticbeanstalk/applicationVersion:ApplicationVersion":0,"aws:elasticbeanstalk/configurationTemplate:ConfigurationTemplate":0,"aws:elasticbeanstalk/environment:Environment":0,"aws:elasticsearch/domain:Domain":0,"aws:elasticsearch/domainPolicy:DomainPolicy":0,"aws:elasticsearch/domainSamlOptions:DomainSamlOptions":0,"aws:elasticsearch/vpcEndpoint:VpcEndpoint":0,"aws:elastictranscoder/pipeline:Pipeline":0,"aws:elastictranscoder/preset:Preset":0,"aws:elb/appCookieStickinessPolicy:AppCookieStickinessPolicy":0,"aws:elb/attachment:Attachment":0,"aws:elb/listenerPolicy:ListenerPolicy":0,"aws:elb/loadBalancer:LoadBalancer":0,"aws:elb/loadBalancerBackendServerPolicy:LoadBalancerBackendServerPolicy":0,"aws:elb/loadBalancerCookieStickinessPolicy:LoadBalancerCookieStickinessPolicy":0,"aws:elb/loadBalancerPolicy:LoadBalancerPolicy":0,"aws:elb/sslNegotiationPolicy:SslNegotiationPolicy":0,"aws:emr/blockPublicAccessConfiguration:BlockPublicAccessConfiguration":0,"aws:emr/cluster:Cluster":0,"aws:emr/instanceFleet:InstanceFleet":0,"aws:emr/instanceGroup:InstanceGroup":0,"aws:emr/managedScalingPolicy:ManagedScalingPolicy":0,"aws:emr/securityConfiguration:SecurityConfiguration":0,"aws:emr/studio:Studio":0,"aws:emr/studioSessionMapping:StudioSessionMapping":0,"aws:emrcontainers/jobTemplate:JobTemplate":0,"aws:emrcontainers/virtualCluster:VirtualCluster":0,"aws:emrserverless/application:Application":0,"aws:evidently/feature:Feature":0,"aws:evidently/launch:Launch":0,"aws:evidently/project:Project":0,"aws:evidently/segment:Segment":0,"aws:finspace/kxCluster:KxCluster":0,"aws:finspace/kxDatabase:KxDatabase":0,"aws:finspace/kxDataview:KxDataview":0,"aws:finspace/kxEnvironment:KxEnvironment":0,"aws:finspace/kxScalingGroup:KxScalingGroup":0,"aws:finspace/kxUser:KxUser":0,"aws:finspace/kxVolume:KxVolume":0,"aws:fis/experimentTemplate:ExperimentTemplate":0,"aws:fms/adminAccount:AdminAccount":0,"aws:fms/policy:Policy":0,"aws:fms/resourceSet:ResourceSet":1,"aws:fsx/backup:Backup":0,"aws:fsx/dataRepositoryAssociation:DataRepositoryAssociation":0,"aws:fsx/fileCache:FileCache":0,"aws:fsx/lustreFileSystem:LustreFileSystem":0,"aws:fsx/ontapFileSystem:OntapFileSystem":0,"aws:fsx/ontapStorageVirtualMachine:OntapStorageVirtualMachine":0,"aws:fsx/ontapVolume:OntapVolume":0,"aws:fsx/openZfsFileSystem:OpenZfsFileSystem":0,"aws:fsx/openZfsSnapshot:OpenZfsSnapshot":0,"aws:fsx/openZfsVolume:OpenZfsVolume":0,"aws:fsx/windowsFileSystem:WindowsFileSystem":0,"aws:gamelift/alias:Alias":0,"aws:gamelift/build:Build":0,"aws:gamelift/fleet:Fleet":0,"aws:gamelift/gameServerGroup:GameServerGroup":0,"aws:gamelift/gameSessionQueue:GameSessionQueue":0,"aws:gamelift/matchmakingConfiguration:MatchmakingConfiguration":0,"aws:gamelift/matchmakingRuleSet:MatchmakingRuleSet":0,"aws:gamelift/script:Script":0,"aws:glacier/vault:Vault":0,"aws:glacier/vaultLock:VaultLock":0,"aws:globalaccelerator/accelerator:Accelerator":0,"aws:globalaccelerator/crossAccountAttachment:CrossAccountAttachment":1,"aws:globalaccelerator/customRoutingAccelerator:CustomRoutingAccelerator":0,"aws:globalaccelerator/customRoutingEndpointGroup:CustomRoutingEndpointGroup":0,"aws:globalaccelerator/customRoutingListener:CustomRoutingListener":0,"aws:globalaccelerator/endpointGroup:EndpointGroup":0,"aws:globalaccelerator/listener:Listener":0,"aws:glue/catalogDatabase:CatalogDatabase":0,"aws:glue/catalogTable:CatalogTable":0,"aws:glue/catalogTableOptimizer:CatalogTableOptimizer":1,"aws:glue/classifier:Classifier":0,"aws:glue/connection:Connection":0,"aws:glue/crawler:Crawler":0,"aws:glue/dataCatalogEncryptionSettings:DataCatalogEncryptionSettings":0,"aws:glue/dataQualityRuleset:DataQualityRuleset":0,"aws:glue/devEndpoint:DevEndpoint":0,"aws:glue/job:Job":0,"aws:glue/mLTransform:MLTransform":0,"aws:glue/partition:Partition":0,"aws:glue/partitionIndex:PartitionIndex":0,"aws:glue/registry:Registry":0,"aws:glue/resourcePolicy:ResourcePolicy":0,"aws:glue/schema:Schema":0,"aws:glue/securityConfiguration:SecurityConfiguration":0,"aws:glue/trigger:Trigger":0,"aws:glue/userDefinedFunction:UserDefinedFunction":0,"aws:glue/workflow:Workflow":0,"aws:grafana/licenseAssociation:LicenseAssociation":0,"aws:grafana/roleAssociation:RoleAssociation":0,"aws:grafana/workspace:Workspace":0,"aws:grafana/workspaceApiKey:WorkspaceApiKey":0,"aws:grafana/workspaceSamlConfiguration:WorkspaceSamlConfiguration":0,"aws:grafana/workspaceServiceAccount:WorkspaceServiceAccount":1,"aws:grafana/workspaceServiceAccountToken:WorkspaceServiceAccountToken":1,"aws:guardduty/detector:Detector":0,"aws:guardduty/detectorFeature:DetectorFeature":0,"aws:guardduty/filter:Filter":0,"aws:guardduty/iPSet:IPSet":0,"aws:guardduty/inviteAccepter:InviteAccepter":0,"aws:guardduty/malwareProtectionPlan:MalwareProtectionPlan":1,"aws:guardduty/member:Member":0,"aws:guardduty/organizationAdminAccount:OrganizationAdminAccount":0,"aws:guardduty/organizationConfiguration:OrganizationConfiguration":0,"aws:guardduty/organizationConfigurationFeature:OrganizationConfigurationFeature":0,"aws:guardduty/publishingDestination:PublishingDestination":0,"aws:guardduty/threatIntelSet:ThreatIntelSet":0,"aws:iam/accessKey:AccessKey":0,"aws:iam/accountAlias:AccountAlias":0,"aws:iam/accountPasswordPolicy:AccountPasswordPolicy":0,"aws:iam/group:Group":0,"aws:iam/groupMembership:GroupMembership":0,"aws:iam/groupPoliciesExclusive:GroupPoliciesExclusive":1,"aws:iam/groupPolicy:GroupPolicy":0,"aws:iam/groupPolicyAttachment:GroupPolicyAttachment":0,"aws:iam/groupPolicyAttachmentsExclusive:GroupPolicyAttachmentsExclusive":1,"aws:iam/instanceProfile:InstanceProfile":0,"aws:iam/openIdConnectProvider:OpenIdConnectProvider":0,"aws:iam/policy:Policy":0,"aws:iam/policyAttachment:PolicyAttachment":0,"aws:iam/role:Role":0,"aws:iam/rolePoliciesExclusive:RolePoliciesExclusive":1,"aws:iam/rolePolicy:RolePolicy":0,"aws:iam/rolePolicyAttachment:RolePolicyAttachment":0,"aws:iam/rolePolicyAttachmentsExclusive:RolePolicyAttachmentsExclusive":1,"aws:iam/samlProvider:SamlProvider":0,"aws:iam/securityTokenServicePreferences:SecurityTokenServicePreferences":0,"aws:iam/serverCertificate:ServerCertificate":0,"aws:iam/serviceLinkedRole:ServiceLinkedRole":0,"aws:iam/serviceSpecificCredential:ServiceSpecificCredential":0,"aws:iam/signingCertificate:SigningCertificate":0,"aws:iam/sshKey:SshKey":0,"aws:iam/user:User":0,"aws:iam/userGroupMembership:UserGroupMembership":0,"aws:iam/userLoginProfile:UserLoginProfile":0,"aws:iam/userPoliciesExclusive:UserPoliciesExclusive":1,"aws:iam/userPolicy:UserPolicy":0,"aws:iam/userPolicyAttachment:UserPolicyAttachment":0,"aws:iam/userPolicyAttachmentsExclusive:UserPolicyAttachmentsExclusive":1,"aws:iam/virtualMfaDevice:VirtualMfaDevice":0,"aws:identitystore/group:Group":0,"aws:identitystore/groupMembership:GroupMembership":0,"aws:identitystore/user:User":0,"aws:imagebuilder/component:Component":0,"aws:imagebuilder/containerRecipe:ContainerRecipe":0,"aws:imagebuilder/distributionConfiguration:DistributionConfiguration":0,"aws:imagebuilder/image:Image":0,"aws:imagebuilder/imagePipeline:ImagePipeline":0,"aws:imagebuilder/imageRecipe:ImageRecipe":0,"aws:imagebuilder/infrastructureConfiguration:InfrastructureConfiguration":0,"aws:imagebuilder/workflow:Workflow":0,"aws:inspector/assessmentTarget:AssessmentTarget":0,"aws:inspector/assessmentTemplate:AssessmentTemplate":0,"aws:inspector/resourceGroup:ResourceGroup":0,"aws:inspector2/delegatedAdminAccount:DelegatedAdminAccount":0,"aws:inspector2/enabler:Enabler":0,"aws:inspector2/memberAssociation:MemberAssociation":0,"aws:inspector2/organizationConfiguration:OrganizationConfiguration":0,"aws:iot/authorizer:Authorizer":0,"aws:iot/billingGroup:BillingGroup":0,"aws:iot/caCertificate:CaCertificate":0,"aws:iot/certificate:Certificate":0,"aws:iot/domainConfiguration:DomainConfiguration":0,"aws:iot/eventConfigurations:EventConfigurations":0,"aws:iot/indexingConfiguration:IndexingConfiguration":0,"aws:iot/loggingOptions:LoggingOptions":0,"aws:iot/policy:Policy":0,"aws:iot/policyAttachment:PolicyAttachment":0,"aws:iot/provisioningTemplate:ProvisioningTemplate":0,"aws:iot/roleAlias:RoleAlias":0,"aws:iot/thing:Thing":0,"aws:iot/thingGroup:ThingGroup":0,"aws:iot/thingGroupMembership:ThingGroupMembership":0,"aws:iot/thingPrincipalAttachment:ThingPrincipalAttachment":0,"aws:iot/thingType:ThingType":0,"aws:iot/topicRule:TopicRule":0,"aws:iot/topicRuleDestination:TopicRuleDestination":0,"aws:ivs/channel:Channel":0,"aws:ivs/playbackKeyPair:PlaybackKeyPair":0,"aws:ivs/recordingConfiguration:RecordingConfiguration":0,"aws:ivschat/loggingConfiguration:LoggingConfiguration":0,"aws:ivschat/room:Room":0,"aws:kendra/dataSource:DataSource":0,"aws:kendra/experience:Experience":0,"aws:kendra/faq:Faq":0,"aws:kendra/index:Index":0,"aws:kendra/querySuggestionsBlockList:QuerySuggestionsBlockList":0,"aws:kendra/thesaurus:Thesaurus":0,"aws:keyspaces/keyspace:Keyspace":0,"aws:keyspaces/table:Table":0,"aws:kinesis/analyticsApplication:AnalyticsApplication":0,"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream":0,"aws:kinesis/resourcePolicy:ResourcePolicy":1,"aws:kinesis/stream:Stream":0,"aws:kinesis/streamConsumer:StreamConsumer":0,"aws:kinesis/videoStream:VideoStream":0,"aws:kinesisanalyticsv2/application:Application":0,"aws:kinesisanalyticsv2/applicationSnapshot:ApplicationSnapshot":0,"aws:kms/alias:Alias":0,"aws:kms/ciphertext:Ciphertext":0,"aws:kms/customKeyStore:CustomKeyStore":0,"aws:kms/externalKey:ExternalKey":0,"aws:kms/grant:Grant":0,"aws:kms/key:Key":0,"aws:kms/keyPolicy:KeyPolicy":0,"aws:kms/replicaExternalKey:ReplicaExternalKey":0,"aws:kms/replicaKey:ReplicaKey":0,"aws:lakeformation/dataCellsFilter:DataCellsFilter":1,"aws:lakeformation/dataLakeSettings:DataLakeSettings":0,"aws:lakeformation/lfTag:LfTag":0,"aws:lakeformation/permissions:Permissions":0,"aws:lakeformation/resource:Resource":0,"aws:lakeformation/resourceLfTag:ResourceLfTag":1,"aws:lakeformation/resourceLfTags:ResourceLfTags":0,"aws:lambda/alias:Alias":0,"aws:lambda/codeSigningConfig:CodeSigningConfig":0,"aws:lambda/eventSourceMapping:EventSourceMapping":0,"aws:lambda/function:Function":0,"aws:lambda/functionEventInvokeConfig:FunctionEventInvokeConfig":0,"aws:lambda/functionRecursionConfig:FunctionRecursionConfig":1,"aws:lambda/functionUrl:FunctionUrl":0,"aws:lambda/invocation:Invocation":0,"aws:lambda/layerVersion:LayerVersion":0,"aws:lambda/layerVersionPermission:LayerVersionPermission":0,"aws:lambda/permission:Permission":0,"aws:lambda/provisionedConcurrencyConfig:ProvisionedConcurrencyConfig":0,"aws:lambda/runtimeManagementConfig:RuntimeManagementConfig":1,"aws:lb/listener:Listener":0,"aws:lb/listenerCertificate:ListenerCertificate":0,"aws:lb/listenerRule:ListenerRule":0,"aws:lb/loadBalancer:LoadBalancer":0,"aws:lb/targetGroup:TargetGroup":0,"aws:lb/targetGroupAttachment:TargetGroupAttachment":0,"aws:lb/trustStore:TrustStore":0,"aws:lb/trustStoreRevocation:TrustStoreRevocation":0,"aws:lex/bot:Bot":0,"aws:lex/botAlias:BotAlias":0,"aws:lex/intent:Intent":0,"aws:lex/slotType:SlotType":0,"aws:lex/v2modelsBot:V2modelsBot":1,"aws:lex/v2modelsBotLocale:V2modelsBotLocale":1,"aws:lex/v2modelsBotVersion:V2modelsBotVersion":1,"aws:lex/v2modelsIntent:V2modelsIntent":1,"aws:lex/v2modelsSlot:V2modelsSlot":1,"aws:lex/v2modelsSlotType:V2modelsSlotType":1,"aws:licensemanager/association:Association":0,"aws:licensemanager/licenseConfiguration:LicenseConfiguration":0,"aws:licensemanager/licenseGrant:LicenseGrant":0,"aws:licensemanager/licenseGrantAccepter:LicenseGrantAccepter":0,"aws:lightsail/bucket:Bucket":0,"aws:lightsail/bucketAccessKey:BucketAccessKey":0,"aws:lightsail/bucketResourceAccess:BucketResourceAccess":0,"aws:lightsail/certificate:Certificate":0,"aws:lightsail/containerService:ContainerService":0,"aws:lightsail/containerServiceDeploymentVersion:ContainerServiceDeploymentVersion":0,"aws:lightsail/database:Database":0,"aws:lightsail/disk:Disk":0,"aws:lightsail/disk_attachment:Disk_attachment":0,"aws:lightsail/distribution:Distribution":0,"aws:lightsail/domain:Domain":0,"aws:lightsail/domainEntry:DomainEntry":0,"aws:lightsail/instance:Instance":0,"aws:lightsail/instancePublicPorts:InstancePublicPorts":0,"aws:lightsail/keyPair:KeyPair":0,"aws:lightsail/lb:Lb":0,"aws:lightsail/lbAttachment:LbAttachment":0,"aws:lightsail/lbCertificate:LbCertificate":0,"aws:lightsail/lbCertificateAttachment:LbCertificateAttachment":0,"aws:lightsail/lbHttpsRedirectionPolicy:LbHttpsRedirectionPolicy":0,"aws:lightsail/lbStickinessPolicy:LbStickinessPolicy":0,"aws:lightsail/staticIp:StaticIp":0,"aws:lightsail/staticIpAttachment:StaticIpAttachment":0,"aws:location/geofenceCollection:GeofenceCollection":0,"aws:location/map:Map":0,"aws:location/placeIndex:PlaceIndex":0,"aws:location/routeCalculation:RouteCalculation":0,"aws:location/tracker:Tracker":0,"aws:location/trackerAssociation:TrackerAssociation":0,"aws:m2/application:Application":1,"aws:m2/deployment:Deployment":1,"aws:m2/environment:Environment":1,"aws:macie/customDataIdentifier:CustomDataIdentifier":0,"aws:macie/findingsFilter:FindingsFilter":0,"aws:macie2/account:Account":0,"aws:macie2/classificationExportConfiguration:ClassificationExportConfiguration":0,"aws:macie2/classificationJob:ClassificationJob":0,"aws:macie2/invitationAccepter:InvitationAccepter":0,"aws:macie2/member:Member":0,"aws:macie2/organizationAdminAccount:OrganizationAdminAccount":0,"aws:mediaconvert/queue:Queue":0,"aws:medialive/channel:Channel":0,"aws:medialive/input:Input":0,"aws:medialive/inputSecurityGroup:InputSecurityGroup":0,"aws:medialive/multiplex:Multiplex":0,"aws:medialive/multiplexProgram:MultiplexProgram":1,"aws:mediapackage/channel:Channel":0,"aws:mediastore/container:Container":0,"aws:mediastore/containerPolicy:ContainerPolicy":0,"aws:memorydb/acl:Acl":0,"aws:memorydb/cluster:Cluster":0,"aws:memorydb/parameterGroup:ParameterGroup":0,"aws:memorydb/snapshot:Snapshot":0,"aws:memorydb/subnetGroup:SubnetGroup":0,"aws:memorydb/user:User":0,"aws:mq/broker:Broker":0,"aws:mq/configuration:Configuration":0,"aws:msk/cluster:Cluster":0,"aws:msk/clusterPolicy:ClusterPolicy":0,"aws:msk/configuration:Configuration":0,"aws:msk/replicator:Replicator":0,"aws:msk/scramSecretAssociation:ScramSecretAssociation":0,"aws:msk/serverlessCluster:ServerlessCluster":0,"aws:msk/vpcConnection:VpcConnection":0,"aws:mskconnect/connector:Connector":0,"aws:mskconnect/customPlugin:CustomPlugin":0,"aws:mskconnect/workerConfiguration:WorkerConfiguration":0,"aws:mwaa/environment:Environment":0,"aws:neptune/cluster:Cluster":0,"aws:neptune/clusterEndpoint:ClusterEndpoint":0,"aws:neptune/clusterInstance:ClusterInstance":0,"aws:neptune/clusterParameterGroup:ClusterParameterGroup":0,"aws:neptune/clusterSnapshot:ClusterSnapshot":0,"aws:neptune/eventSubscription:EventSubscription":0,"aws:neptune/globalCluster:GlobalCluster":0,"aws:neptune/parameterGroup:ParameterGroup":0,"aws:neptune/subnetGroup:SubnetGroup":0,"aws:networkfirewall/firewall:Firewall":0,"aws:networkfirewall/firewallPolicy:FirewallPolicy":0,"aws:networkfirewall/loggingConfiguration:LoggingConfiguration":0,"aws:networkfirewall/resourcePolicy:ResourcePolicy":0,"aws:networkfirewall/ruleGroup:RuleGroup":0,"aws:networkfirewall/tlsInspectionConfiguration:TlsInspectionConfiguration":1,"aws:networkmanager/attachmentAccepter:AttachmentAccepter":0,"aws:networkmanager/connectAttachment:ConnectAttachment":0,"aws:networkmanager/connectPeer:ConnectPeer":0,"aws:networkmanager/connection:Connection":0,"aws:networkmanager/coreNetwork:CoreNetwork":0,"aws:networkmanager/coreNetworkPolicyAttachment:CoreNetworkPolicyAttachment":0,"aws:networkmanager/customerGatewayAssociation:CustomerGatewayAssociation":0,"aws:networkmanager/device:Device":0,"aws:networkmanager/globalNetwork:GlobalNetwork":0,"aws:networkmanager/link:Link":0,"aws:networkmanager/linkAssociation:LinkAssociation":0,"aws:networkmanager/site:Site":0,"aws:networkmanager/siteToSiteVpnAttachment:SiteToSiteVpnAttachment":0,"aws:networkmanager/transitGatewayConnectPeerAssociation:TransitGatewayConnectPeerAssociation":0,"aws:networkmanager/transitGatewayPeering:TransitGatewayPeering":0,"aws:networkmanager/transitGatewayRegistration:TransitGatewayRegistration":0,"aws:networkmanager/transitGatewayRouteTableAttachment:TransitGatewayRouteTableAttachment":0,"aws:networkmanager/vpcAttachment:VpcAttachment":0,"aws:networkmonitor/monitor:Monitor":1,"aws:networkmonitor/probe:Probe":1,"aws:oam/link:Link":0,"aws:oam/sink:Sink":0,"aws:oam/sinkPolicy:SinkPolicy":0,"aws:opensearch/domain:Domain":0,"aws:opensearch/domainPolicy:DomainPolicy":0,"aws:opensearch/domainSamlOptions:DomainSamlOptions":0,"aws:opensearch/inboundConnectionAccepter:InboundConnectionAccepter":0,"aws:opensearch/outboundConnection:OutboundConnection":0,"aws:opensearch/package:Package":0,"aws:opensearch/packageAssociation:PackageAssociation":0,"aws:opensearch/serverlessAccessPolicy:ServerlessAccessPolicy":1,"aws:opensearch/serverlessCollection:ServerlessCollection":1,"aws:opensearch/serverlessLifecyclePolicy:ServerlessLifecyclePolicy":1,"aws:opensearch/serverlessSecurityConfig:ServerlessSecurityConfig":1,"aws:opensearch/serverlessSecurityPolicy:ServerlessSecurityPolicy":1,"aws:opensearch/serverlessVpcEndpoint:ServerlessVpcEndpoint":1,"aws:opensearch/vpcEndpoint:VpcEndpoint":0,"aws:opensearchingest/pipeline:Pipeline":1,"aws:opsworks/application:Application":0,"aws:opsworks/customLayer:CustomLayer":0,"aws:opsworks/ecsClusterLayer:EcsClusterLayer":0,"aws:opsworks/gangliaLayer:GangliaLayer":0,"aws:opsworks/haproxyLayer:HaproxyLayer":0,"aws:opsworks/instance:Instance":0,"aws:opsworks/javaAppLayer:JavaAppLayer":0,"aws:opsworks/memcachedLayer:MemcachedLayer":0,"aws:opsworks/mysqlLayer:MysqlLayer":0,"aws:opsworks/nodejsAppLayer:NodejsAppLayer":0,"aws:opsworks/permission:Permission":0,"aws:opsworks/phpAppLayer:PhpAppLayer":0,"aws:opsworks/railsAppLayer:RailsAppLayer":0,"aws:opsworks/rdsDbInstance:RdsDbInstance":0,"aws:opsworks/stack:Stack":0,"aws:opsworks/staticWebLayer:StaticWebLayer":0,"aws:opsworks/userProfile:UserProfile":0,"aws:organizations/account:Account":0,"aws:organizations/delegatedAdministrator:DelegatedAdministrator":0,"aws:organizations/organization:Organization":0,"aws:organizations/organizationalUnit:OrganizationalUnit":0,"aws:organizations/policy:Policy":0,"aws:organizations/policyAttachment:PolicyAttachment":0,"aws:organizations/resourcePolicy:ResourcePolicy":0,"aws:paymentcryptography/key:Key":1,"aws:paymentcryptography/keyAlias:KeyAlias":1,"aws:pinpoint/admChannel:AdmChannel":0,"aws:pinpoint/apnsChannel:ApnsChannel":0,"aws:pinpoint/apnsSandboxChannel:ApnsSandboxChannel":0,"aws:pinpoint/apnsVoipChannel:ApnsVoipChannel":0,"aws:pinpoint/apnsVoipSandboxChannel:ApnsVoipSandboxChannel":0,"aws:pinpoint/app:App":0,"aws:pinpoint/baiduChannel:BaiduChannel":0,"aws:pinpoint/emailChannel:EmailChannel":0,"aws:pinpoint/emailTemplate:EmailTemplate":1,"aws:pinpoint/eventStream:EventStream":0,"aws:pinpoint/gcmChannel:GcmChannel":0,"aws:pinpoint/smsChannel:SmsChannel":0,"aws:pinpoint/smsvoicev2ConfigurationSet:Smsvoicev2ConfigurationSet":1,"aws:pinpoint/smsvoicev2OptOutList:Smsvoicev2OptOutList":1,"aws:pinpoint/smsvoicev2PhoneNumber:Smsvoicev2PhoneNumber":1,"aws:pipes/pipe:Pipe":0,"aws:qldb/ledger:Ledger":0,"aws:qldb/stream:Stream":0,"aws:quicksight/accountSubscription:AccountSubscription":0,"aws:quicksight/analysis:Analysis":0,"aws:quicksight/dashboard:Dashboard":0,"aws:quicksight/dataSet:DataSet":0,"aws:quicksight/dataSource:DataSource":0,"aws:quicksight/folder:Folder":0,"aws:quicksight/folderMembership:FolderMembership":1,"aws:quicksight/group:Group":0,"aws:quicksight/groupMembership:GroupMembership":0,"aws:quicksight/iamPolicyAssignment:IamPolicyAssignment":1,"aws:quicksight/ingestion:Ingestion":1,"aws:quicksight/namespace:Namespace":1,"aws:quicksight/refreshSchedule:RefreshSchedule":1,"aws:quicksight/template:Template":0,"aws:quicksight/templateAlias:TemplateAlias":1,"aws:quicksight/theme:Theme":0,"aws:quicksight/user:User":0,"aws:quicksight/vpcConnection:VpcConnection":1,"aws:ram/principalAssociation:PrincipalAssociation":0,"aws:ram/resourceAssociation:ResourceAssociation":0,"aws:ram/resourceShare:ResourceShare":0,"aws:ram/resourceShareAccepter:ResourceShareAccepter":0,"aws:ram/sharingWithOrganization:SharingWithOrganization":0,"aws:rbin/rule:Rule":0,"aws:rds/certificate:Certificate":0,"aws:rds/cluster:Cluster":0,"aws:rds/clusterActivityStream:ClusterActivityStream":0,"aws:rds/clusterEndpoint:ClusterEndpoint":0,"aws:rds/clusterInstance:ClusterInstance":0,"aws:rds/clusterParameterGroup:ClusterParameterGroup":0,"aws:rds/clusterRoleAssociation:ClusterRoleAssociation":0,"aws:rds/clusterSnapshot:ClusterSnapshot":0,"aws:rds/customDbEngineVersion:CustomDbEngineVersion":0,"aws:rds/eventSubscription:EventSubscription":0,"aws:rds/exportTask:ExportTask":1,"aws:rds/globalCluster:GlobalCluster":0,"aws:rds/instance:Instance":0,"aws:rds/instanceAutomatedBackupsReplication:InstanceAutomatedBackupsReplication":0,"aws:rds/integration:Integration":1,"aws:rds/optionGroup:OptionGroup":0,"aws:rds/parameterGroup:ParameterGroup":0,"aws:rds/proxy:Proxy":0,"aws:rds/proxyDefaultTargetGroup:ProxyDefaultTargetGroup":0,"aws:rds/proxyEndpoint:ProxyEndpoint":0,"aws:rds/proxyTarget:ProxyTarget":0,"aws:rds/reservedInstance:ReservedInstance":0,"aws:rds/roleAssociation:RoleAssociation":0,"aws:rds/snapshot:Snapshot":0,"aws:rds/snapshotCopy:SnapshotCopy":0,"aws:rds/subnetGroup:SubnetGroup":0,"aws:redshift/authenticationProfile:AuthenticationProfile":0,"aws:redshift/cluster:Cluster":0,"aws:redshift/clusterIamRoles:ClusterIamRoles":0,"aws:redshift/clusterSnapshot:ClusterSnapshot":0,"aws:redshift/dataShareAuthorization:DataShareAuthorization":1,"aws:redshift/dataShareConsumerAssociation:DataShareConsumerAssociation":1,"aws:redshift/endpointAccess:EndpointAccess":0,"aws:redshift/endpointAuthorization:EndpointAuthorization":0,"aws:redshift/eventSubscription:EventSubscription":0,"aws:redshift/hsmClientCertificate:HsmClientCertificate":0,"aws:redshift/hsmConfiguration:HsmConfiguration":0,"aws:redshift/logging:Logging":1,"aws:redshift/parameterGroup:ParameterGroup":0,"aws:redshift/partner:Partner":0,"aws:redshift/resourcePolicy:ResourcePolicy":0,"aws:redshift/scheduledAction:ScheduledAction":0,"aws:redshift/snapshotCopy:SnapshotCopy":1,"aws:redshift/snapshotCopyGrant:SnapshotCopyGrant":0,"aws:redshift/snapshotSchedule:SnapshotSchedule":0,"aws:redshift/snapshotScheduleAssociation:SnapshotScheduleAssociation":0,"aws:redshift/subnetGroup:SubnetGroup":0,"aws:redshift/usageLimit:UsageLimit":0,"aws:redshiftdata/statement:Statement":0,"aws:redshiftserverless/customDomainAssociation:CustomDomainAssociation":1,"aws:redshiftserverless/endpointAccess:EndpointAccess":0,"aws:redshiftserverless/namespace:Namespace":0,"aws:redshiftserverless/resourcePolicy:ResourcePolicy":0,"aws:redshiftserverless/snapshot:Snapshot":0,"aws:redshiftserverless/usageLimit:UsageLimit":0,"aws:redshiftserverless/workgroup:Workgroup":0,"aws:rekognition/collection:Collection":1,"aws:rekognition/project:Project":1,"aws:rekognition/streamProcessor:StreamProcessor":1,"aws:resourceexplorer/index:Index":1,"aws:resourceexplorer/view:View":1,"aws:resourcegroups/group:Group":0,"aws:resourcegroups/resource:Resource":0,"aws:rolesanywhere/profile:Profile":0,"aws:rolesanywhere/trustAnchor:TrustAnchor":0,"aws:route53/cidrCollection:CidrCollection":1,"aws:route53/cidrLocation:CidrLocation":1,"aws:route53/delegationSet:DelegationSet":0,"aws:route53/healthCheck:HealthCheck":0,"aws:route53/hostedZoneDnsSec:HostedZoneDnsSec":0,"aws:route53/keySigningKey:KeySigningKey":0,"aws:route53/profilesAssociation:ProfilesAssociation":1,"aws:route53/profilesProfile:ProfilesProfile":1,"aws:route53/profilesResourceAssociation:ProfilesResourceAssociation":1,"aws:route53/queryLog:QueryLog":0,"aws:route53/record:Record":0,"aws:route53/resolverConfig:ResolverConfig":0,"aws:route53/resolverDnsSecConfig:ResolverDnsSecConfig":0,"aws:route53/resolverEndpoint:ResolverEndpoint":0,"aws:route53/resolverFirewallConfig:ResolverFirewallConfig":0,"aws:route53/resolverFirewallDomainList:ResolverFirewallDomainList":0,"aws:route53/resolverFirewallRule:ResolverFirewallRule":0,"aws:route53/resolverFirewallRuleGroup:ResolverFirewallRuleGroup":0,"aws:route53/resolverFirewallRuleGroupAssociation:ResolverFirewallRuleGroupAssociation":0,"aws:route53/resolverQueryLogConfig:ResolverQueryLogConfig":0,"aws:route53/resolverQueryLogConfigAssociation:ResolverQueryLogConfigAssociation":0,"aws:route53/resolverRule:ResolverRule":0,"aws:route53/resolverRuleAssociation:ResolverRuleAssociation":0,"aws:route53/trafficPolicy:TrafficPolicy":0,"aws:route53/trafficPolicyInstance:TrafficPolicyInstance":0,"aws:route53/vpcAssociationAuthorization:VpcAssociationAuthorization":0,"aws:route53/zone:Zone":0,"aws:route53/zoneAssociation:ZoneAssociation":0,"aws:route53domains/delegationSignerRecord:DelegationSignerRecord":1,"aws:route53domains/registeredDomain:RegisteredDomain":0,"aws:route53recoverycontrol/cluster:Cluster":0,"aws:route53recoverycontrol/controlPanel:ControlPanel":0,"aws:route53recoverycontrol/routingControl:RoutingControl":0,"aws:route53recoverycontrol/safetyRule:SafetyRule":0,"aws:route53recoveryreadiness/cell:Cell":0,"aws:route53recoveryreadiness/readinessCheck:ReadinessCheck":0,"aws:route53recoveryreadiness/recoveryGroup:RecoveryGroup":0,"aws:route53recoveryreadiness/resourceSet:ResourceSet":0,"aws:rum/appMonitor:AppMonitor":0,"aws:rum/metricsDestination:MetricsDestination":0,"aws:s3/accessPoint:AccessPoint":0,"aws:s3/accountPublicAccessBlock:AccountPublicAccessBlock":0,"aws:s3/analyticsConfiguration:AnalyticsConfiguration":0,"aws:s3/bucket:Bucket":0,"aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2":0,"aws:s3/bucketAclV2:BucketAclV2":0,"aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2":0,"aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration":0,"aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2":0,"aws:s3/bucketLoggingV2:BucketLoggingV2":0,"aws:s3/bucketMetric:BucketMetric":0,"aws:s3/bucketNotification:BucketNotification":0,"aws:s3/bucketObject:BucketObject":0,"aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2":0,"aws:s3/bucketObjectv2:BucketObjectv2":0,"aws:s3/bucketOwnershipControls:BucketOwnershipControls":0,"aws:s3/bucketPolicy:BucketPolicy":0,"aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock":0,"aws:s3/bucketReplicationConfig:BucketReplicationConfig":0,"aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2":0,"aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2":0,"aws:s3/bucketV2:BucketV2":0,"aws:s3/bucketVersioningV2:BucketVersioningV2":0,"aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2":0,"aws:s3/directoryBucket:DirectoryBucket":1,"aws:s3/inventory:Inventory":0,"aws:s3/objectCopy:ObjectCopy":0,"aws:s3control/accessGrant:AccessGrant":1,"aws:s3control/accessGrantsInstance:AccessGrantsInstance":1,"aws:s3control/accessGrantsInstanceResourcePolicy:AccessGrantsInstanceResourcePolicy":1,"aws:s3control/accessGrantsLocation:AccessGrantsLocation":1,"aws:s3control/accessPointPolicy:AccessPointPolicy":0,"aws:s3control/bucket:Bucket":0,"aws:s3control/bucketLifecycleConfiguration:BucketLifecycleConfiguration":0,"aws:s3control/bucketPolicy:BucketPolicy":0,"aws:s3control/multiRegionAccessPoint:MultiRegionAccessPoint":0,"aws:s3control/multiRegionAccessPointPolicy:MultiRegionAccessPointPolicy":0,"aws:s3control/objectLambdaAccessPoint:ObjectLambdaAccessPoint":0,"aws:s3control/objectLambdaAccessPointPolicy:ObjectLambdaAccessPointPolicy":0,"aws:s3control/storageLensConfiguration:StorageLensConfiguration":0,"aws:s3outposts/endpoint:Endpoint":0,"aws:sagemaker/app:App":0,"aws:sagemaker/appImageConfig:AppImageConfig":0,"aws:sagemaker/codeRepository:CodeRepository":0,"aws:sagemaker/dataQualityJobDefinition:DataQualityJobDefinition":0,"aws:sagemaker/device:Device":0,"aws:sagemaker/deviceFleet:DeviceFleet":0,"aws:sagemaker/domain:Domain":0,"aws:sagemaker/endpoint:Endpoint":0,"aws:sagemaker/endpointConfiguration:EndpointConfiguration":0,"aws:sagemaker/featureGroup:FeatureGroup":0,"aws:sagemaker/flowDefinition:FlowDefinition":0,"aws:sagemaker/humanTaskUI:HumanTaskUI":0,"aws:sagemaker/image:Image":0,"aws:sagemaker/imageVersion:ImageVersion":0,"aws:sagemaker/model:Model":0,"aws:sagemaker/modelPackageGroup:ModelPackageGroup":0,"aws:sagemaker/modelPackageGroupPolicy:ModelPackageGroupPolicy":0,"aws:sagemaker/monitoringSchedule:MonitoringSchedule":0,"aws:sagemaker/notebookInstance:NotebookInstance":0,"aws:sagemaker/notebookInstanceLifecycleConfiguration:NotebookInstanceLifecycleConfiguration":0,"aws:sagemaker/pipeline:Pipeline":0,"aws:sagemaker/project:Project":0,"aws:sagemaker/servicecatalogPortfolioStatus:ServicecatalogPortfolioStatus":0,"aws:sagemaker/space:Space":0,"aws:sagemaker/studioLifecycleConfig:StudioLifecycleConfig":0,"aws:sagemaker/userProfile:UserProfile":0,"aws:sagemaker/workforce:Workforce":0,"aws:sagemaker/workteam:Workteam":0,"aws:scheduler/schedule:Schedule":0,"aws:scheduler/scheduleGroup:ScheduleGroup":0,"aws:schemas/discoverer:Discoverer":0,"aws:schemas/registry:Registry":0,"aws:schemas/registryPolicy:RegistryPolicy":0,"aws:schemas/schema:Schema":0,"aws:secretsmanager/secret:Secret":0,"aws:secretsmanager/secretPolicy:SecretPolicy":0,"aws:secretsmanager/secretRotation:SecretRotation":0,"aws:secretsmanager/secretVersion:SecretVersion":0,"aws:securityhub/account:Account":0,"aws:securityhub/actionTarget:ActionTarget":0,"aws:securityhub/automationRule:AutomationRule":1,"aws:securityhub/configurationPolicy:ConfigurationPolicy":0,"aws:securityhub/configurationPolicyAssociation:ConfigurationPolicyAssociation":0,"aws:securityhub/findingAggregator:FindingAggregator":0,"aws:securityhub/insight:Insight":0,"aws:securityhub/inviteAccepter:InviteAccepter":0,"aws:securityhub/member:Member":0,"aws:securityhub/organizationAdminAccount:OrganizationAdminAccount":0,"aws:securityhub/organizationConfiguration:OrganizationConfiguration":0,"aws:securityhub/productSubscription:ProductSubscription":0,"aws:securityhub/standardsControl:StandardsControl":0,"aws:securityhub/standardsControlAssociation:StandardsControlAssociation":1,"aws:securityhub/standardsSubscription:StandardsSubscription":0,"aws:securitylake/awsLogSource:AwsLogSource":1,"aws:securitylake/customLogSource:CustomLogSource":1,"aws:securitylake/dataLake:DataLake":1,"aws:securitylake/subscriber:Subscriber":1,"aws:securitylake/subscriberNotification:SubscriberNotification":1,"aws:serverlessrepository/cloudFormationStack:CloudFormationStack":0,"aws:servicecatalog/appregistryApplication:AppregistryApplication":1,"aws:servicecatalog/budgetResourceAssociation:BudgetResourceAssociation":0,"aws:servicecatalog/constraint:Constraint":0,"aws:servicecatalog/organizationsAccess:OrganizationsAccess":0,"aws:servicecatalog/portfolio:Portfolio":0,"aws:servicecatalog/portfolioShare:PortfolioShare":0,"aws:servicecatalog/principalPortfolioAssociation:PrincipalPortfolioAssociation":0,"aws:servicecatalog/product:Product":0,"aws:servicecatalog/productPortfolioAssociation:ProductPortfolioAssociation":0,"aws:servicecatalog/provisionedProduct:ProvisionedProduct":0,"aws:servicecatalog/provisioningArtifact:ProvisioningArtifact":0,"aws:servicecatalog/serviceAction:ServiceAction":0,"aws:servicecatalog/tagOption:TagOption":0,"aws:servicecatalog/tagOptionResourceAssociation:TagOptionResourceAssociation":0,"aws:servicediscovery/httpNamespace:HttpNamespace":0,"aws:servicediscovery/instance:Instance":0,"aws:servicediscovery/privateDnsNamespace:PrivateDnsNamespace":0,"aws:servicediscovery/publicDnsNamespace:PublicDnsNamespace":0,"aws:servicediscovery/service:Service":0,"aws:servicequotas/serviceQuota:ServiceQuota":0,"aws:servicequotas/template:Template":1,"aws:servicequotas/templateAssociation:TemplateAssociation":1,"aws:ses/activeReceiptRuleSet:ActiveReceiptRuleSet":0,"aws:ses/configurationSet:ConfigurationSet":0,"aws:ses/domainDkim:DomainDkim":0,"aws:ses/domainIdentity:DomainIdentity":0,"aws:ses/domainIdentityVerification:DomainIdentityVerification":0,"aws:ses/emailIdentity:EmailIdentity":0,"aws:ses/eventDestination:EventDestination":0,"aws:ses/identityNotificationTopic:IdentityNotificationTopic":0,"aws:ses/identityPolicy:IdentityPolicy":0,"aws:ses/mailFrom:MailFrom":0,"aws:ses/receiptFilter:ReceiptFilter":0,"aws:ses/receiptRule:ReceiptRule":0,"aws:ses/receiptRuleSet:ReceiptRuleSet":0,"aws:ses/template:Template":0,"aws:sesv2/accountSuppressionAttributes:AccountSuppressionAttributes":1,"aws:sesv2/accountVdmAttributes:AccountVdmAttributes":0,"aws:sesv2/configurationSet:ConfigurationSet":0,"aws:sesv2/configurationSetEventDestination:ConfigurationSetEventDestination":0,"aws:sesv2/contactList:ContactList":0,"aws:sesv2/dedicatedIpAssignment:DedicatedIpAssignment":0,"aws:sesv2/dedicatedIpPool:DedicatedIpPool":0,"aws:sesv2/emailIdentity:EmailIdentity":0,"aws:sesv2/emailIdentityFeedbackAttributes:EmailIdentityFeedbackAttributes":0,"aws:sesv2/emailIdentityMailFromAttributes:EmailIdentityMailFromAttributes":0,"aws:sesv2/emailIdentityPolicy:EmailIdentityPolicy":0,"aws:sfn/activity:Activity":0,"aws:sfn/alias:Alias":0,"aws:sfn/stateMachine:StateMachine":0,"aws:shield/applicationLayerAutomaticResponse:ApplicationLayerAutomaticResponse":1,"aws:shield/drtAccessLogBucketAssociation:DrtAccessLogBucketAssociation":1,"aws:shield/drtAccessRoleArnAssociation:DrtAccessRoleArnAssociation":1,"aws:shield/proactiveEngagement:ProactiveEngagement":1,"aws:shield/protection:Protection":0,"aws:shield/protectionGroup:ProtectionGroup":0,"aws:shield/protectionHealthCheckAssociation:ProtectionHealthCheckAssociation":0,"aws:shield/subscription:Subscription":1,"aws:signer/signingJob:SigningJob":0,"aws:signer/signingProfile:SigningProfile":0,"aws:signer/signingProfilePermission:SigningProfilePermission":0,"aws:simpledb/domain:Domain":1,"aws:sns/dataProtectionPolicy:DataProtectionPolicy":0,"aws:sns/platformApplication:PlatformApplication":0,"aws:sns/smsPreferences:SmsPreferences":0,"aws:sns/topic:Topic":0,"aws:sns/topicPolicy:TopicPolicy":0,"aws:sns/topicSubscription:TopicSubscription":0,"aws:sqs/queue:Queue":0,"aws:sqs/queuePolicy:QueuePolicy":0,"aws:sqs/redriveAllowPolicy:RedriveAllowPolicy":0,"aws:sqs/redrivePolicy:RedrivePolicy":0,"aws:ssm/activation:Activation":0,"aws:ssm/association:Association":0,"aws:ssm/contactsRotation:ContactsRotation":1,"aws:ssm/defaultPatchBaseline:DefaultPatchBaseline":0,"aws:ssm/document:Document":0,"aws:ssm/maintenanceWindow:MaintenanceWindow":0,"aws:ssm/maintenanceWindowTarget:MaintenanceWindowTarget":0,"aws:ssm/maintenanceWindowTask:MaintenanceWindowTask":0,"aws:ssm/parameter:Parameter":0,"aws:ssm/patchBaseline:PatchBaseline":0,"aws:ssm/patchGroup:PatchGroup":0,"aws:ssm/resourceDataSync:ResourceDataSync":0,"aws:ssm/serviceSetting:ServiceSetting":0,"aws:ssmcontacts/contact:Contact":0,"aws:ssmcontacts/contactChannel:ContactChannel":0,"aws:ssmcontacts/plan:Plan":0,"aws:ssmincidents/replicationSet:ReplicationSet":0,"aws:ssmincidents/responsePlan:ResponsePlan":0,"aws:ssoadmin/accountAssignment:AccountAssignment":0,"aws:ssoadmin/application:Application":1,"aws:ssoadmin/applicationAccessScope:ApplicationAccessScope":1,"aws:ssoadmin/applicationAssignment:ApplicationAssignment":1,"aws:ssoadmin/applicationAssignmentConfiguration:ApplicationAssignmentConfiguration":1,"aws:ssoadmin/customerManagedPolicyAttachment:CustomerManagedPolicyAttachment":0,"aws:ssoadmin/instanceAccessControlAttributes:InstanceAccessControlAttributes":0,"aws:ssoadmin/managedPolicyAttachment:ManagedPolicyAttachment":0,"aws:ssoadmin/permissionSet:PermissionSet":0,"aws:ssoadmin/permissionSetInlinePolicy:PermissionSetInlinePolicy":0,"aws:ssoadmin/permissionsBoundaryAttachment:PermissionsBoundaryAttachment":0,"aws:ssoadmin/trustedTokenIssuer:TrustedTokenIssuer":1,"aws:storagegateway/cache:Cache":0,"aws:storagegateway/cachesIscsiVolume:CachesIscsiVolume":0,"aws:storagegateway/fileSystemAssociation:FileSystemAssociation":0,"aws:storagegateway/gateway:Gateway":0,"aws:storagegateway/nfsFileShare:NfsFileShare":0,"aws:storagegateway/smbFileShare:SmbFileShare":0,"aws:storagegateway/storedIscsiVolume:StoredIscsiVolume":0,"aws:storagegateway/tapePool:TapePool":0,"aws:storagegateway/uploadBuffer:UploadBuffer":0,"aws:storagegateway/workingStorage:WorkingStorage":0,"aws:swf/domain:Domain":0,"aws:synthetics/canary:Canary":0,"aws:synthetics/group:Group":0,"aws:synthetics/groupAssociation:GroupAssociation":0,"aws:timestreaminfluxdb/dbInstance:DbInstance":1,"aws:timestreamwrite/database:Database":0,"aws:timestreamwrite/table:Table":0,"aws:transcribe/languageModel:LanguageModel":0,"aws:transcribe/medicalVocabulary:MedicalVocabulary":0,"aws:transcribe/vocabulary:Vocabulary":0,"aws:transcribe/vocabularyFilter:VocabularyFilter":0,"aws:transfer/access:Access":0,"aws:transfer/agreement:Agreement":0,"aws:transfer/certificate:Certificate":0,"aws:transfer/connector:Connector":0,"aws:transfer/profile:Profile":0,"aws:transfer/server:Server":0,"aws:transfer/sshKey:SshKey":0,"aws:transfer/tag:Tag":0,"aws:transfer/user:User":0,"aws:transfer/workflow:Workflow":0,"aws:verifiedaccess/endpoint:Endpoint":0,"aws:verifiedaccess/group:Group":0,"aws:verifiedaccess/instance:Instance":0,"aws:verifiedaccess/instanceLoggingConfiguration:InstanceLoggingConfiguration":0,"aws:verifiedaccess/instanceTrustProviderAttachment:InstanceTrustProviderAttachment":0,"aws:verifiedaccess/trustProvider:TrustProvider":0,"aws:verifiedpermissions/identitySource:IdentitySource":1,"aws:verifiedpermissions/policy:Policy":1,"aws:verifiedpermissions/policyStore:PolicyStore":1,"aws:verifiedpermissions/policyTemplate:PolicyTemplate":1,"aws:verifiedpermissions/schema:Schema":1,"aws:vpc/endpointPrivateDns:EndpointPrivateDns":1,"aws:vpc/endpointServicePrivateDnsVerification:EndpointServicePrivateDnsVerification":1,"aws:vpc/securityGroupEgressRule:SecurityGroupEgressRule":1,"aws:vpc/securityGroupIngressRule:SecurityGroupIngressRule":1,"aws:vpclattice/accessLogSubscription:AccessLogSubscription":0,"aws:vpclattice/authPolicy:AuthPolicy":0,"aws:vpclattice/listener:Listener":0,"aws:vpclattice/listenerRule:ListenerRule":0,"aws:vpclattice/resourcePolicy:ResourcePolicy":0,"aws:vpclattice/service:Service":0,"aws:vpclattice/serviceNetwork:ServiceNetwork":0,"aws:vpclattice/serviceNetworkServiceAssociation:ServiceNetworkServiceAssociation":0,"aws:vpclattice/serviceNetworkVpcAssociation:ServiceNetworkVpcAssociation":0,"aws:vpclattice/targetGroup:TargetGroup":0,"aws:vpclattice/targetGroupAttachment:TargetGroupAttachment":0,"aws:waf/byteMatchSet:ByteMatchSet":0,"aws:waf/geoMatchSet:GeoMatchSet":0,"aws:waf/ipSet:IpSet":0,"aws:waf/rateBasedRule:RateBasedRule":0,"aws:waf/regexMatchSet:RegexMatchSet":0,"aws:waf/regexPatternSet:RegexPatternSet":0,"aws:waf/rule:Rule":0,"aws:waf/ruleGroup:RuleGroup":0,"aws:waf/sizeConstraintSet:SizeConstraintSet":0,"aws:waf/sqlInjectionMatchSet:SqlInjectionMatchSet":0,"aws:waf/webAcl:WebAcl":0,"aws:waf/xssMatchSet:XssMatchSet":0,"aws:wafregional/byteMatchSet:ByteMatchSet":0,"aws:wafregional/geoMatchSet:GeoMatchSet":0,"aws:wafregional/ipSet:IpSet":0,"aws:wafregional/rateBasedRule:RateBasedRule":0,"aws:wafregional/regexMatchSet:RegexMatchSet":0,"aws:wafregional/regexPatternSet:RegexPatternSet":0,"aws:wafregional/rule:Rule":0,"aws:wafregional/ruleGroup:RuleGroup":0,"aws:wafregional/sizeConstraintSet:SizeConstraintSet":0,"aws:wafregional/sqlInjectionMatchSet:SqlInjectionMatchSet":0,"aws:wafregional/webAcl:WebAcl":0,"aws:wafregional/webAclAssociation:WebAclAssociation":0,"aws:wafregional/xssMatchSet:XssMatchSet":0,"aws:wafv2/ipSet:IpSet":0,"aws:wafv2/regexPatternSet:RegexPatternSet":0,"aws:wafv2/ruleGroup:RuleGroup":0,"aws:wafv2/webAcl:WebAcl":0,"aws:wafv2/webAclAssociation:WebAclAssociation":0,"aws:wafv2/webAclLoggingConfiguration:WebAclLoggingConfiguration":0,"aws:worklink/fleet:Fleet":0,"aws:worklink/websiteCertificateAuthorityAssociation:WebsiteCertificateAuthorityAssociation":0,"aws:workspaces/connectionAlias:ConnectionAlias":1,"aws:workspaces/directory:Directory":0,"aws:workspaces/ipGroup:IpGroup":0,"aws:workspaces/workspace:Workspace":0,"aws:xray/encryptionConfig:EncryptionConfig":0,"aws:xray/group:Group":0,"aws:xray/samplingRule:SamplingRule":0},"functions":{"aws:acm/getCertificate:getCertificate":0,"aws:acmpca/getCertificate:getCertificate":0,"aws:acmpca/getCertificateAuthority:getCertificateAuthority":0,"aws:alb/getListener:getListener":0,"aws:alb/getLoadBalancer:getLoadBalancer":0,"aws:alb/getTargetGroup:getTargetGroup":0,"aws:amp/getDefaultScraperConfiguration:getDefaultScraperConfiguration":1,"aws:amp/getWorkspace:getWorkspace":0,"aws:amp/getWorkspaces:getWorkspaces":0,"aws:apigateway/getAuthorizer:getAuthorizer":0,"aws:apigateway/getAuthorizers:getAuthorizers":0,"aws:apigateway/getDomainName:getDomainName":0,"aws:apigateway/getExport:getExport":0,"aws:apigateway/getKey:getKey":0,"aws:apigateway/getResource:getResource":0,"aws:apigateway/getRestApi:getRestApi":0,"aws:apigateway/getSdk:getSdk":0,"aws:apigateway/getVpcLink:getVpcLink":0,"aws:apigatewayv2/getApi:getApi":0,"aws:apigatewayv2/getApis:getApis":0,"aws:apigatewayv2/getExport:getExport":0,"aws:apigatewayv2/getVpcLink:getVpcLink":0,"aws:appconfig/getConfigurationProfile:getConfigurationProfile":0,"aws:appconfig/getConfigurationProfiles:getConfigurationProfiles":0,"aws:appconfig/getEnvironment:getEnvironment":0,"aws:appconfig/getEnvironments:getEnvironments":0,"aws:appintegrations/getEventIntegration:getEventIntegration":0,"aws:appmesh/getGatewayRoute:getGatewayRoute":0,"aws:appmesh/getMesh:getMesh":0,"aws:appmesh/getRoute:getRoute":0,"aws:appmesh/getVirtualGateway:getVirtualGateway":0,"aws:appmesh/getVirtualNode:getVirtualNode":0,"aws:appmesh/getVirtualRouter:getVirtualRouter":0,"aws:appmesh/getVirtualService:getVirtualService":0,"aws:apprunner/getHostedZoneId:getHostedZoneId":1,"aws:appstream/getImage:getImage":1,"aws:athena/getNamedQuery:getNamedQuery":0,"aws:auditmanager/getControl:getControl":1,"aws:auditmanager/getFramework:getFramework":1,"aws:autoscaling/getAmiIds:getAmiIds":0,"aws:autoscaling/getGroup:getGroup":0,"aws:backup/getFramework:getFramework":0,"aws:backup/getPlan:getPlan":0,"aws:backup/getReportPlan:getReportPlan":0,"aws:backup/getSelection:getSelection":0,"aws:backup/getVault:getVault":0,"aws:batch/getComputeEnvironment:getComputeEnvironment":0,"aws:batch/getJobDefinition:getJobDefinition":1,"aws:batch/getJobQueue:getJobQueue":0,"aws:batch/getSchedulingPolicy:getSchedulingPolicy":0,"aws:bedrock/getAgentAgentVersions:getAgentAgentVersions":1,"aws:bedrock/getCustomModel:getCustomModel":1,"aws:bedrock/getCustomModels:getCustomModels":1,"aws:bedrock/getInferenceProfile:getInferenceProfile":1,"aws:bedrock/getInferenceProfiles:getInferenceProfiles":1,"aws:bedrockfoundation/getModel:getModel":1,"aws:bedrockfoundation/getModels:getModels":1,"aws:budgets/getBudget:getBudget":0,"aws:chatbot/getSlackWorkspace:getSlackWorkspace":1,"aws:cloudcontrol/getResource:getResource":0,"aws:cloudformation/getCloudFormationType:getCloudFormationType":0,"aws:cloudformation/getExport:getExport":0,"aws:cloudformation/getStack:getStack":0,"aws:cloudfront/getCachePolicy:getCachePolicy":0,"aws:cloudfront/getDistribution:getDistribution":0,"aws:cloudfront/getFunction:getFunction":0,"aws:cloudfront/getLogDeliveryCanonicalUserId:getLogDeliveryCanonicalUserId":0,"aws:cloudfront/getOriginAccessControl:getOriginAccessControl":1,"aws:cloudfront/getOriginAccessIdentities:getOriginAccessIdentities":0,"aws:cloudfront/getOriginAccessIdentity:getOriginAccessIdentity":0,"aws:cloudfront/getOriginRequestPolicy:getOriginRequestPolicy":0,"aws:cloudfront/getRealtimeLogConfig:getRealtimeLogConfig":0,"aws:cloudfront/getResponseHeadersPolicy:getResponseHeadersPolicy":0,"aws:cloudhsmv2/getCluster:getCluster":0,"aws:cloudtrail/getServiceAccount:getServiceAccount":0,"aws:cloudwatch/getEventBus:getEventBus":0,"aws:cloudwatch/getEventConnection:getEventConnection":0,"aws:cloudwatch/getEventSource:getEventSource":0,"aws:cloudwatch/getLogDataProtectionPolicyDocument:getLogDataProtectionPolicyDocument":0,"aws:cloudwatch/getLogGroup:getLogGroup":0,"aws:cloudwatch/getLogGroups:getLogGroups":0,"aws:codeartifact/getAuthorizationToken:getAuthorizationToken":0,"aws:codeartifact/getRepositoryEndpoint:getRepositoryEndpoint":0,"aws:codebuild/getFleet:getFleet":0,"aws:codecatalyst/getDevEnvironment:getDevEnvironment":0,"aws:codecommit/getApprovalRuleTemplate:getApprovalRuleTemplate":0,"aws:codecommit/getRepository:getRepository":0,"aws:codeguruprofiler/getProfilingGroup:getProfilingGroup":1,"aws:codestarconnections/getConnection:getConnection":0,"aws:cognito/getIdentityPool:getIdentityPool":0,"aws:cognito/getUserGroup:getUserGroup":1,"aws:cognito/getUserGroups:getUserGroups":1,"aws:cognito/getUserPool:getUserPool":1,"aws:cognito/getUserPoolClient:getUserPoolClient":0,"aws:cognito/getUserPoolClients:getUserPoolClients":0,"aws:cognito/getUserPoolSigningCertificate:getUserPoolSigningCertificate":0,"aws:cognito/getUserPools:getUserPools":0,"aws:connect/getBotAssociation:getBotAssociation":0,"aws:connect/getContactFlow:getContactFlow":0,"aws:connect/getContactFlowModule:getContactFlowModule":0,"aws:connect/getHoursOfOperation:getHoursOfOperation":0,"aws:connect/getInstance:getInstance":0,"aws:connect/getInstanceStorageConfig:getInstanceStorageConfig":0,"aws:connect/getLambdaFunctionAssociation:getLambdaFunctionAssociation":0,"aws:connect/getPrompt:getPrompt":0,"aws:connect/getQueue:getQueue":0,"aws:connect/getQuickConnect:getQuickConnect":0,"aws:connect/getRoutingProfile:getRoutingProfile":0,"aws:connect/getSecurityProfile:getSecurityProfile":0,"aws:connect/getUser:getUser":0,"aws:connect/getUserHierarchyGroup:getUserHierarchyGroup":0,"aws:connect/getUserHierarchyStructure:getUserHierarchyStructure":0,"aws:connect/getVocabulary:getVocabulary":0,"aws:controltower/getControls:getControls":0,"aws:costexplorer/getCostCategory:getCostCategory":0,"aws:costexplorer/getTags:getTags":0,"aws:cur/getReportDefinition:getReportDefinition":0,"aws:datapipeline/getPipeline:getPipeline":0,"aws:datapipeline/getPipelineDefinition:getPipelineDefinition":0,"aws:datazone/getEnvironmentBlueprint:getEnvironmentBlueprint":1,"aws:devopsguru/getNotificationChannel:getNotificationChannel":1,"aws:devopsguru/getResourceCollection:getResourceCollection":1,"aws:directconnect/getConnection:getConnection":0,"aws:directconnect/getGateway:getGateway":0,"aws:directconnect/getLocation:getLocation":0,"aws:directconnect/getLocations:getLocations":0,"aws:directconnect/getRouterConfiguration:getRouterConfiguration":0,"aws:directoryservice/getDirectory:getDirectory":0,"aws:dms/getCertificate:getCertificate":0,"aws:dms/getEndpoint:getEndpoint":0,"aws:dms/getReplicationInstance:getReplicationInstance":0,"aws:dms/getReplicationSubnetGroup:getReplicationSubnetGroup":0,"aws:dms/getReplicationTask:getReplicationTask":0,"aws:docdb/getEngineVersion:getEngineVersion":0,"aws:docdb/getOrderableDbInstance:getOrderableDbInstance":0,"aws:dynamodb/getTable:getTable":0,"aws:dynamodb/getTableItem:getTableItem":0,"aws:ebs/getDefaultKmsKey:getDefaultKmsKey":0,"aws:ebs/getEbsVolumes:getEbsVolumes":0,"aws:ebs/getEncryptionByDefault:getEncryptionByDefault":0,"aws:ebs/getSnapshot:getSnapshot":0,"aws:ebs/getSnapshotIds:getSnapshotIds":0,"aws:ebs/getVolume:getVolume":0,"aws:ec2/getAmi:getAmi":0,"aws:ec2/getAmiIds:getAmiIds":0,"aws:ec2/getCapacityBlockOffering:getCapacityBlockOffering":1,"aws:ec2/getCoipPool:getCoipPool":0,"aws:ec2/getCoipPools:getCoipPools":0,"aws:ec2/getCustomerGateway:getCustomerGateway":0,"aws:ec2/getDedicatedHost:getDedicatedHost":0,"aws:ec2/getEips:getEips":0,"aws:ec2/getElasticIp:getElasticIp":0,"aws:ec2/getInstance:getInstance":0,"aws:ec2/getInstanceType:getInstanceType":0,"aws:ec2/getInstanceTypeOffering:getInstanceTypeOffering":0,"aws:ec2/getInstanceTypeOfferings:getInstanceTypeOfferings":0,"aws:ec2/getInstanceTypes:getInstanceTypes":0,"aws:ec2/getInstances:getInstances":0,"aws:ec2/getInternetGateway:getInternetGateway":0,"aws:ec2/getIpamPreviewNextCidr:getIpamPreviewNextCidr":0,"aws:ec2/getKeyPair:getKeyPair":0,"aws:ec2/getLaunchConfiguration:getLaunchConfiguration":0,"aws:ec2/getLaunchTemplate:getLaunchTemplate":0,"aws:ec2/getLocalGateway:getLocalGateway":0,"aws:ec2/getLocalGatewayRouteTable:getLocalGatewayRouteTable":0,"aws:ec2/getLocalGatewayRouteTables:getLocalGatewayRouteTables":0,"aws:ec2/getLocalGatewayVirtualInterface:getLocalGatewayVirtualInterface":0,"aws:ec2/getLocalGatewayVirtualInterfaceGroup:getLocalGatewayVirtualInterfaceGroup":0,"aws:ec2/getLocalGatewayVirtualInterfaceGroups:getLocalGatewayVirtualInterfaceGroups":0,"aws:ec2/getLocalGateways:getLocalGateways":0,"aws:ec2/getManagedPrefixList:getManagedPrefixList":0,"aws:ec2/getManagedPrefixLists:getManagedPrefixLists":0,"aws:ec2/getNatGateway:getNatGateway":0,"aws:ec2/getNatGateways:getNatGateways":0,"aws:ec2/getNetworkAcls:getNetworkAcls":0,"aws:ec2/getNetworkInsightsAnalysis:getNetworkInsightsAnalysis":0,"aws:ec2/getNetworkInsightsPath:getNetworkInsightsPath":0,"aws:ec2/getNetworkInterface:getNetworkInterface":0,"aws:ec2/getNetworkInterfaces:getNetworkInterfaces":0,"aws:ec2/getPrefixList:getPrefixList":0,"aws:ec2/getPublicIpv4Pool:getPublicIpv4Pool":0,"aws:ec2/getPublicIpv4Pools:getPublicIpv4Pools":0,"aws:ec2/getRoute:getRoute":0,"aws:ec2/getRouteTable:getRouteTable":0,"aws:ec2/getRouteTables:getRouteTables":0,"aws:ec2/getSecurityGroup:getSecurityGroup":0,"aws:ec2/getSecurityGroups:getSecurityGroups":0,"aws:ec2/getSerialConsoleAccess:getSerialConsoleAccess":0,"aws:ec2/getSpotPrice:getSpotPrice":0,"aws:ec2/getSubnet:getSubnet":0,"aws:ec2/getSubnets:getSubnets":0,"aws:ec2/getTransitGatewayRouteTables:getTransitGatewayRouteTables":0,"aws:ec2/getVpc:getVpc":0,"aws:ec2/getVpcDhcpOptions:getVpcDhcpOptions":0,"aws:ec2/getVpcEndpoint:getVpcEndpoint":0,"aws:ec2/getVpcEndpointService:getVpcEndpointService":0,"aws:ec2/getVpcIamPool:getVpcIamPool":0,"aws:ec2/getVpcIamPoolCidrs:getVpcIamPoolCidrs":0,"aws:ec2/getVpcIamPools:getVpcIamPools":0,"aws:ec2/getVpcIpamPool:getVpcIpamPool":0,"aws:ec2/getVpcIpamPoolCidrs:getVpcIpamPoolCidrs":0,"aws:ec2/getVpcIpamPools:getVpcIpamPools":0,"aws:ec2/getVpcPeeringConnection:getVpcPeeringConnection":0,"aws:ec2/getVpcPeeringConnections:getVpcPeeringConnections":0,"aws:ec2/getVpcs:getVpcs":0,"aws:ec2/getVpnGateway:getVpnGateway":0,"aws:ec2clientvpn/getEndpoint:getEndpoint":0,"aws:ec2transitgateway/getAttachment:getAttachment":0,"aws:ec2transitgateway/getAttachments:getAttachments":0,"aws:ec2transitgateway/getConnect:getConnect":0,"aws:ec2transitgateway/getConnectPeer:getConnectPeer":0,"aws:ec2transitgateway/getDirectConnectGatewayAttachment:getDirectConnectGatewayAttachment":0,"aws:ec2transitgateway/getMulticastDomain:getMulticastDomain":0,"aws:ec2transitgateway/getPeeringAttachment:getPeeringAttachment":0,"aws:ec2transitgateway/getPeeringAttachments:getPeeringAttachments":0,"aws:ec2transitgateway/getRouteTable:getRouteTable":0,"aws:ec2transitgateway/getRouteTableAssociations:getRouteTableAssociations":0,"aws:ec2transitgateway/getRouteTablePropagations:getRouteTablePropagations":0,"aws:ec2transitgateway/getRouteTableRoutes:getRouteTableRoutes":0,"aws:ec2transitgateway/getTransitGateway:getTransitGateway":0,"aws:ec2transitgateway/getVpcAttachment:getVpcAttachment":0,"aws:ec2transitgateway/getVpcAttachments:getVpcAttachments":0,"aws:ec2transitgateway/getVpnAttachment:getVpnAttachment":0,"aws:ecr/getAuthorizationToken:getAuthorizationToken":0,"aws:ecr/getCredentials:getCredentials":0,"aws:ecr/getImage:getImage":0,"aws:ecr/getLifecyclePolicyDocument:getLifecyclePolicyDocument":1,"aws:ecr/getPullThroughCacheRule:getPullThroughCacheRule":0,"aws:ecr/getRepositories:getRepositories":1,"aws:ecr/getRepository:getRepository":0,"aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate":0,"aws:ecrpublic/getAuthorizationToken:getAuthorizationToken":0,"aws:ecs/getCluster:getCluster":0,"aws:ecs/getContainerDefinition:getContainerDefinition":0,"aws:ecs/getService:getService":0,"aws:ecs/getTaskDefinition:getTaskDefinition":0,"aws:ecs/getTaskExecution:getTaskExecution":0,"aws:efs/getAccessPoint:getAccessPoint":0,"aws:efs/getAccessPoints:getAccessPoints":0,"aws:efs/getFileSystem:getFileSystem":0,"aws:efs/getMountTarget:getMountTarget":0,"aws:eks/getAccessEntry:getAccessEntry":0,"aws:eks/getAddon:getAddon":0,"aws:eks/getAddonVersion:getAddonVersion":0,"aws:eks/getCluster:getCluster":0,"aws:eks/getClusterAuth:getClusterAuth":0,"aws:eks/getClusters:getClusters":0,"aws:eks/getNodeGroup:getNodeGroup":0,"aws:eks/getNodeGroups:getNodeGroups":0,"aws:elasticache/getCluster:getCluster":0,"aws:elasticache/getReplicationGroup:getReplicationGroup":0,"aws:elasticache/getReservedCacheNodeOffering:getReservedCacheNodeOffering":1,"aws:elasticache/getServerlessCache:getServerlessCache":1,"aws:elasticache/getSubnetGroup:getSubnetGroup":0,"aws:elasticache/getUser:getUser":0,"aws:elasticbeanstalk/getApplication:getApplication":0,"aws:elasticbeanstalk/getHostedZone:getHostedZone":0,"aws:elasticbeanstalk/getSolutionStack:getSolutionStack":0,"aws:elasticsearch/getDomain:getDomain":0,"aws:elb/getHostedZoneId:getHostedZoneId":0,"aws:elb/getLoadBalancer:getLoadBalancer":0,"aws:elb/getServiceAccount:getServiceAccount":0,"aws:emr/getReleaseLabels:getReleaseLabels":0,"aws:emr/getSupportedInstanceTypes:getSupportedInstanceTypes":1,"aws:emrcontainers/getVirtualCluster:getVirtualCluster":0,"aws:fsx/getOntapFileSystem:getOntapFileSystem":0,"aws:fsx/getOntapStorageVirtualMachine:getOntapStorageVirtualMachine":0,"aws:fsx/getOntapStorageVirtualMachines:getOntapStorageVirtualMachines":0,"aws:fsx/getOpenZfsSnapshot:getOpenZfsSnapshot":0,"aws:fsx/getWindowsFileSystem:getWindowsFileSystem":0,"aws:globalaccelerator/getAccelerator:getAccelerator":1,"aws:globalaccelerator/getCustomRoutingAccelerator:getCustomRoutingAccelerator":0,"aws:glue/getCatalogTable:getCatalogTable":0,"aws:glue/getConnection:getConnection":0,"aws:glue/getDataCatalogEncryptionSettings:getDataCatalogEncryptionSettings":0,"aws:glue/getRegistry:getRegistry":1,"aws:glue/getScript:getScript":0,"aws:grafana/getWorkspace:getWorkspace":0,"aws:guardduty/getDetector:getDetector":0,"aws:guardduty/getFindingIds:getFindingIds":1,"aws:iam/getAccessKeys:getAccessKeys":0,"aws:iam/getAccountAlias:getAccountAlias":0,"aws:iam/getGroup:getGroup":0,"aws:iam/getInstanceProfile:getInstanceProfile":0,"aws:iam/getInstanceProfiles:getInstanceProfiles":0,"aws:iam/getOpenIdConnectProvider:getOpenIdConnectProvider":0,"aws:iam/getPolicy:getPolicy":0,"aws:iam/getPolicyDocument:getPolicyDocument":0,"aws:iam/getPrincipalPolicySimulation:getPrincipalPolicySimulation":0,"aws:iam/getRole:getRole":0,"aws:iam/getRoles:getRoles":0,"aws:iam/getSamlProvider:getSamlProvider":0,"aws:iam/getServerCertificate:getServerCertificate":0,"aws:iam/getSessionContext:getSessionContext":0,"aws:iam/getUser:getUser":0,"aws:iam/getUserSshKey:getUserSshKey":0,"aws:iam/getUsers:getUsers":0,"aws:identitystore/getGroup:getGroup":0,"aws:identitystore/getGroups:getGroups":1,"aws:identitystore/getUser:getUser":0,"aws:imagebuilder/getComponent:getComponent":0,"aws:imagebuilder/getComponents:getComponents":0,"aws:imagebuilder/getContainerRecipe:getContainerRecipe":0,"aws:imagebuilder/getContainerRecipes:getContainerRecipes":0,"aws:imagebuilder/getDistributionConfiguration:getDistributionConfiguration":0,"aws:imagebuilder/getDistributionConfigurations:getDistributionConfigurations":0,"aws:imagebuilder/getImage:getImage":0,"aws:imagebuilder/getImagePipeline:getImagePipeline":0,"aws:imagebuilder/getImagePipelines:getImagePipelines":0,"aws:imagebuilder/getImageRecipe:getImageRecipe":0,"aws:imagebuilder/getImageRecipes:getImageRecipes":0,"aws:imagebuilder/getInfrastructureConfiguration:getInfrastructureConfiguration":0,"aws:imagebuilder/getInfrastructureConfigurations:getInfrastructureConfigurations":0,"aws:index/getArn:getArn":1,"aws:index/getAvailabilityZone:getAvailabilityZone":0,"aws:index/getAvailabilityZones:getAvailabilityZones":0,"aws:index/getBillingServiceAccount:getBillingServiceAccount":1,"aws:index/getCallerIdentity:getCallerIdentity":1,"aws:index/getDefaultTags:getDefaultTags":1,"aws:index/getIpRanges:getIpRanges":1,"aws:index/getPartition:getPartition":1,"aws:index/getRegion:getRegion":1,"aws:index/getRegions:getRegions":1,"aws:index/getService:getService":1,"aws:index/getServicePrincipal:getServicePrincipal":1,"aws:inspector/getRulesPackages:getRulesPackages":0,"aws:iot/getEndpoint:getEndpoint":0,"aws:iot/getRegistrationCode:getRegistrationCode":0,"aws:ivs/getStreamKey:getStreamKey":0,"aws:kendra/getExperience:getExperience":0,"aws:kendra/getFaq:getFaq":0,"aws:kendra/getIndex:getIndex":0,"aws:kendra/getQuerySuggestionsBlockList:getQuerySuggestionsBlockList":0,"aws:kendra/getThesaurus:getThesaurus":0,"aws:kinesis/getFirehoseDeliveryStream:getFirehoseDeliveryStream":0,"aws:kinesis/getStream:getStream":0,"aws:kinesis/getStreamConsumer:getStreamConsumer":0,"aws:kms/getAlias:getAlias":0,"aws:kms/getCipherText:getCipherText":0,"aws:kms/getCustomKeyStore:getCustomKeyStore":0,"aws:kms/getKey:getKey":0,"aws:kms/getPublicKey:getPublicKey":0,"aws:kms/getSecret:getSecret":0,"aws:kms/getSecrets:getSecrets":0,"aws:lakeformation/getDataLakeSettings:getDataLakeSettings":0,"aws:lakeformation/getPermissions:getPermissions":0,"aws:lakeformation/getResource:getResource":0,"aws:lambda/getAlias:getAlias":0,"aws:lambda/getCodeSigningConfig:getCodeSigningConfig":0,"aws:lambda/getFunction:getFunction":0,"aws:lambda/getFunctionUrl:getFunctionUrl":0,"aws:lambda/getFunctions:getFunctions":0,"aws:lambda/getInvocation:getInvocation":0,"aws:lambda/getLayerVersion:getLayerVersion":0,"aws:lb/getHostedZoneId:getHostedZoneId":0,"aws:lb/getLbs:getLbs":0,"aws:lb/getListener:getListener":0,"aws:lb/getLoadBalancer:getLoadBalancer":0,"aws:lb/getTargetGroup:getTargetGroup":0,"aws:lb/getTrustStore:getTrustStore":0,"aws:lex/getBot:getBot":0,"aws:lex/getBotAlias:getBotAlias":0,"aws:lex/getIntent:getIntent":0,"aws:lex/getSlotType:getSlotType":0,"aws:licensemanager/getLicenseGrants:getLicenseGrants":0,"aws:licensemanager/getReceivedLicense:getReceivedLicense":0,"aws:licensemanager/getReceivedLicenses:getReceivedLicenses":0,"aws:location/getGeofenceCollection:getGeofenceCollection":0,"aws:location/getMap:getMap":0,"aws:location/getPlaceIndex:getPlaceIndex":0,"aws:location/getRouteCalculator:getRouteCalculator":0,"aws:location/getTracker:getTracker":0,"aws:location/getTrackerAssociation:getTrackerAssociation":0,"aws:location/getTrackerAssociations:getTrackerAssociations":0,"aws:mediaconvert/getQueue:getQueue":0,"aws:medialive/getInput:getInput":1,"aws:memorydb/getAcl:getAcl":0,"aws:memorydb/getCluster:getCluster":0,"aws:memorydb/getParameterGroup:getParameterGroup":0,"aws:memorydb/getSnapshot:getSnapshot":0,"aws:memorydb/getSubnetGroup:getSubnetGroup":0,"aws:memorydb/getUser:getUser":0,"aws:mq/getBroker:getBroker":0,"aws:mq/getBrokerEngineTypes:getBrokerEngineTypes":0,"aws:mq/getInstanceTypeOfferings:getInstanceTypeOfferings":0,"aws:msk/getBootstrapBrokers:getBootstrapBrokers":0,"aws:msk/getBrokerNodes:getBrokerNodes":0,"aws:msk/getCluster:getCluster":0,"aws:msk/getConfiguration:getConfiguration":0,"aws:msk/getKafkaVersion:getKafkaVersion":0,"aws:msk/getVpcConnection:getVpcConnection":0,"aws:mskconnect/getConnector:getConnector":0,"aws:mskconnect/getCustomPlugin:getCustomPlugin":0,"aws:mskconnect/getWorkerConfiguration:getWorkerConfiguration":0,"aws:neptune/getEngineVersion:getEngineVersion":0,"aws:neptune/getOrderableDbInstance:getOrderableDbInstance":0,"aws:networkfirewall/getFirewall:getFirewall":0,"aws:networkfirewall/getFirewallPolicy:getFirewallPolicy":0,"aws:networkfirewall/getResourcePolicy:getResourcePolicy":0,"aws:networkmanager/getConnection:getConnection":0,"aws:networkmanager/getConnections:getConnections":0,"aws:networkmanager/getCoreNetworkPolicyDocument:getCoreNetworkPolicyDocument":0,"aws:networkmanager/getDevice:getDevice":0,"aws:networkmanager/getDevices:getDevices":0,"aws:networkmanager/getGlobalNetwork:getGlobalNetwork":0,"aws:networkmanager/getGlobalNetworks:getGlobalNetworks":0,"aws:networkmanager/getLink:getLink":0,"aws:networkmanager/getLinks:getLinks":0,"aws:networkmanager/getSite:getSite":0,"aws:networkmanager/getSites:getSites":0,"aws:oam/getLink:getLink":0,"aws:oam/getLinks:getLinks":0,"aws:oam/getSink:getSink":0,"aws:oam/getSinks:getSinks":0,"aws:opensearch/getDomain:getDomain":0,"aws:opensearch/getServerlessAccessPolicy:getServerlessAccessPolicy":1,"aws:opensearch/getServerlessCollection:getServerlessCollection":1,"aws:opensearch/getServerlessLifecyclePolicy:getServerlessLifecyclePolicy":1,"aws:opensearch/getServerlessSecurityConfig:getServerlessSecurityConfig":1,"aws:opensearch/getServerlessSecurityPolicy:getServerlessSecurityPolicy":0,"aws:opensearch/getServerlessVpcEndpoint:getServerlessVpcEndpoint":0,"aws:organizations/getDelegatedAdministrators:getDelegatedAdministrators":0,"aws:organizations/getDelegatedServices:getDelegatedServices":0,"aws:organizations/getOrganization:getOrganization":0,"aws:organizations/getOrganizationalUnit:getOrganizationalUnit":0,"aws:organizations/getOrganizationalUnitChildAccounts:getOrganizationalUnitChildAccounts":0,"aws:organizations/getOrganizationalUnitDescendantAccounts:getOrganizationalUnitDescendantAccounts":0,"aws:organizations/getOrganizationalUnitDescendantOrganizationalUnits:getOrganizationalUnitDescendantOrganizationalUnits":0,"aws:organizations/getOrganizationalUnits:getOrganizationalUnits":0,"aws:organizations/getPolicies:getPolicies":0,"aws:organizations/getPoliciesForTarget:getPoliciesForTarget":0,"aws:organizations/getPolicy:getPolicy":0,"aws:organizations/getResourceTags:getResourceTags":0,"aws:outposts/getAsset:getAsset":0,"aws:outposts/getAssets:getAssets":0,"aws:outposts/getOutpost:getOutpost":0,"aws:outposts/getOutpostInstanceType:getOutpostInstanceType":0,"aws:outposts/getOutpostInstanceTypes:getOutpostInstanceTypes":0,"aws:outposts/getOutposts:getOutposts":0,"aws:outposts/getSite:getSite":0,"aws:outposts/getSites:getSites":0,"aws:polly/getVoices:getVoices":1,"aws:pricing/getProduct:getProduct":0,"aws:qldb/getLedger:getLedger":0,"aws:quicksight/getAnalysis:getAnalysis":0,"aws:quicksight/getDataSet:getDataSet":0,"aws:quicksight/getQuicksightAnalysis:getQuicksightAnalysis":0,"aws:quicksight/getQuicksightGroup:getQuicksightGroup":0,"aws:quicksight/getQuicksightUser:getQuicksightUser":0,"aws:quicksight/getTheme:getTheme":0,"aws:ram/getResourceShare:getResourceShare":0,"aws:rds/getCertificate:getCertificate":0,"aws:rds/getCluster:getCluster":0,"aws:rds/getClusterParameterGroup:getClusterParameterGroup":1,"aws:rds/getClusterSnapshot:getClusterSnapshot":0,"aws:rds/getClusters:getClusters":0,"aws:rds/getEngineVersion:getEngineVersion":0,"aws:rds/getEventCategories:getEventCategories":0,"aws:rds/getInstance:getInstance":0,"aws:rds/getInstances:getInstances":0,"aws:rds/getOrderableDbInstance:getOrderableDbInstance":0,"aws:rds/getParameterGroup:getParameterGroup":0,"aws:rds/getProxy:getProxy":0,"aws:rds/getReservedInstanceOffering:getReservedInstanceOffering":0,"aws:rds/getSnapshot:getSnapshot":0,"aws:rds/getSubnetGroup:getSubnetGroup":0,"aws:redshift/getCluster:getCluster":0,"aws:redshift/getClusterCredentials:getClusterCredentials":0,"aws:redshift/getDataShares:getDataShares":1,"aws:redshift/getOrderableCluster:getOrderableCluster":0,"aws:redshift/getProducerDataShares:getProducerDataShares":1,"aws:redshift/getServiceAccount:getServiceAccount":0,"aws:redshift/getSubnetGroup:getSubnetGroup":0,"aws:redshiftserverless/getCredentials:getCredentials":0,"aws:redshiftserverless/getNamespace:getNamespace":0,"aws:redshiftserverless/getWorkgroup:getWorkgroup":0,"aws:resourceexplorer/search:Search":1,"aws:resourcegroupstaggingapi/getResources:getResources":0,"aws:route53/getDelegationSet:getDelegationSet":0,"aws:route53/getProfilesProfiles:getProfilesProfiles":1,"aws:route53/getQueryLogConfig:getQueryLogConfig":0,"aws:route53/getResolverEndpoint:getResolverEndpoint":0,"aws:route53/getResolverFirewallConfig:getResolverFirewallConfig":0,"aws:route53/getResolverFirewallDomainList:getResolverFirewallDomainList":0,"aws:route53/getResolverFirewallRuleGroup:getResolverFirewallRuleGroup":0,"aws:route53/getResolverFirewallRuleGroupAssociation:getResolverFirewallRuleGroupAssociation":0,"aws:route53/getResolverFirewallRules:getResolverFirewallRules":0,"aws:route53/getResolverRule:getResolverRule":0,"aws:route53/getResolverRules:getResolverRules":0,"aws:route53/getTrafficPolicyDocument:getTrafficPolicyDocument":0,"aws:route53/getZone:getZone":0,"aws:route53/getZones:getZones":1,"aws:s3/getAccountPublicAccessBlock:getAccountPublicAccessBlock":0,"aws:s3/getBucket:getBucket":0,"aws:s3/getBucketObject:getBucketObject":0,"aws:s3/getBucketObjects:getBucketObjects":0,"aws:s3/getBucketPolicy:getBucketPolicy":0,"aws:s3/getCanonicalUserId:getCanonicalUserId":0,"aws:s3/getDirectoryBuckets:getDirectoryBuckets":1,"aws:s3/getObject:getObject":0,"aws:s3/getObjects:getObjects":0,"aws:s3control/getMultiRegionAccessPoint:getMultiRegionAccessPoint":0,"aws:sagemaker/getPrebuiltEcrImage:getPrebuiltEcrImage":0,"aws:secretsmanager/getRandomPassword:getRandomPassword":0,"aws:secretsmanager/getSecret:getSecret":0,"aws:secretsmanager/getSecretRotation:getSecretRotation":0,"aws:secretsmanager/getSecretVersion:getSecretVersion":0,"aws:secretsmanager/getSecretVersions:getSecretVersions":1,"aws:secretsmanager/getSecrets:getSecrets":0,"aws:securityhub/getStandardsControlAssociations:getStandardsControlAssociations":1,"aws:serverlessrepository/getApplication:getApplication":0,"aws:servicecatalog/getAppregistryApplication:getAppregistryApplication":1,"aws:servicecatalog/getConstraint:getConstraint":0,"aws:servicecatalog/getLaunchPaths:getLaunchPaths":0,"aws:servicecatalog/getPortfolio:getPortfolio":0,"aws:servicecatalog/getPortfolioConstraints:getPortfolioConstraints":0,"aws:servicecatalog/getProduct:getProduct":0,"aws:servicecatalog/getProvisioningArtifacts:getProvisioningArtifacts":0,"aws:servicediscovery/getDnsNamespace:getDnsNamespace":0,"aws:servicediscovery/getHttpNamespace:getHttpNamespace":0,"aws:servicediscovery/getService:getService":0,"aws:servicequotas/getService:getService":0,"aws:servicequotas/getServiceQuota:getServiceQuota":0,"aws:servicequotas/getTemplates:getTemplates":1,"aws:ses/getActiveReceiptRuleSet:getActiveReceiptRuleSet":0,"aws:ses/getDomainIdentity:getDomainIdentity":0,"aws:ses/getEmailIdentity:getEmailIdentity":0,"aws:sesv2/getConfigurationSet:getConfigurationSet":0,"aws:sesv2/getDedicatedIpPool:getDedicatedIpPool":0,"aws:sesv2/getEmailIdentity:getEmailIdentity":0,"aws:sesv2/getEmailIdentityMailFromAttributes:getEmailIdentityMailFromAttributes":0,"aws:sfn/getActivity:getActivity":0,"aws:sfn/getAlias:getAlias":0,"aws:sfn/getStateMachine:getStateMachine":0,"aws:sfn/getStateMachineVersions:getStateMachineVersions":0,"aws:shield/getProtection:getProtection":1,"aws:signer/getSigningJob:getSigningJob":0,"aws:signer/getSigningProfile:getSigningProfile":0,"aws:sns/getTopic:getTopic":0,"aws:sqs/getQueue:getQueue":0,"aws:sqs/getQueues:getQueues":0,"aws:ssm/getContactsRotation:getContactsRotation":1,"aws:ssm/getDocument:getDocument":0,"aws:ssm/getInstances:getInstances":0,"aws:ssm/getMaintenanceWindows:getMaintenanceWindows":0,"aws:ssm/getParameter:getParameter":0,"aws:ssm/getParametersByPath:getParametersByPath":0,"aws:ssm/getPatchBaseline:getPatchBaseline":0,"aws:ssmcontacts/getContact:getContact":0,"aws:ssmcontacts/getContactChannel:getContactChannel":0,"aws:ssmcontacts/getPlan:getPlan":0,"aws:ssmincidents/getReplicationSet:getReplicationSet":0,"aws:ssmincidents/getResponsePlan:getResponsePlan":0,"aws:ssoadmin/getApplication:getApplication":1,"aws:ssoadmin/getApplicationAssignments:getApplicationAssignments":1,"aws:ssoadmin/getApplicationProviders:getApplicationProviders":1,"aws:ssoadmin/getInstances:getInstances":0,"aws:ssoadmin/getPermissionSet:getPermissionSet":0,"aws:ssoadmin/getPermissionSets:getPermissionSets":1,"aws:ssoadmin/getPrincipalApplicationAssignments:getPrincipalApplicationAssignments":1,"aws:storagegateway/getLocalDisk:getLocalDisk":0,"aws:synthetics/getRuntimeVersion:getRuntimeVersion":1,"aws:synthetics/getRuntimeVersions:getRuntimeVersions":1,"aws:timestreamwrite/getDatabase:getDatabase":1,"aws:timestreamwrite/getTable:getTable":1,"aws:transfer/getConnector:getConnector":1,"aws:transfer/getServer:getServer":0,"aws:verifiedpermissions/getPolicyStore:getPolicyStore":1,"aws:vpc/getSecurityGroupRule:getSecurityGroupRule":1,"aws:vpc/getSecurityGroupRules:getSecurityGroupRules":1,"aws:vpclattice/getAuthPolicy:getAuthPolicy":0,"aws:vpclattice/getListener:getListener":0,"aws:vpclattice/getResourcePolicy:getResourcePolicy":0,"aws:vpclattice/getService:getService":0,"aws:vpclattice/getServiceNetwork:getServiceNetwork":0,"aws:waf/getIpset:getIpset":0,"aws:waf/getRateBasedRule:getRateBasedRule":0,"aws:waf/getRule:getRule":0,"aws:waf/getSubscribedRuleGroup:getSubscribedRuleGroup":0,"aws:waf/getWebAcl:getWebAcl":0,"aws:wafregional/getIpset:getIpset":0,"aws:wafregional/getRateBasedMod:getRateBasedMod":0,"aws:wafregional/getRule:getRule":0,"aws:wafregional/getSubscribedRuleGroup:getSubscribedRuleGroup":0,"aws:wafregional/getWebAcl:getWebAcl":0,"aws:wafv2/getIpSet:getIpSet":0,"aws:wafv2/getRegexPatternSet:getRegexPatternSet":0,"aws:wafv2/getRuleGroup:getRuleGroup":0,"aws:wafv2/getWebAcl:getWebAcl":0,"aws:workspaces/getBundle:getBundle":0,"aws:workspaces/getDirectory:getDirectory":0,"aws:workspaces/getImage:getImage":0,"aws:workspaces/getWorkspace:getWorkspace":0}}}
\ No newline at end of file
+{"auto-settings":{"resources":{"aws_eks_cluster":{"maxItemsOneOverrides":{"certificate_authority":true}},"aws_lexv2models_slot":{"maxItemsOneOverrides":{"value_elicitation_setting.$.prompt_specification.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.prompt_specification.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.continue_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.continue_response.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.still_waiting_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.still_waiting_response.$.message_group.$.variation.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.waiting_response.$.message_group.$.message.$.custom_payload":false,"value_elicitation_setting.$.wait_and_continue_specification.$.waiting_response.$.message_group.$.variation.$.custom_payload":false}},"aws_lexv2models_slot_type":{"maxItemsOneOverrides":{"composite_slot_type_setting":true,"external_source_setting":true,"external_source_setting.$.grammar_slot_type_setting":true,"external_source_setting.$.grammar_slot_type_setting.$.source":true,"slot_type_values":true}},"aws_sagemaker_app_image_config":{"maxItemsOneOverrides":{"kernel_gateway_image_config.$.kernel_spec":true}},"aws_securitylake_subscriber":{"maxItemsOneOverrides":{"source":true}},"aws_wafv2_web_acl":{"maxItemsOneOverrides":{"association_config.$.request_body.$.api_gateway":false,"association_config.$.request_body.$.app_runner_service":false,"association_config.$.request_body.$.cloudfront":false,"association_config.$.request_body.$.cognito_user_pool":false,"association_config.$.request_body.$.verified_access_instance":false}}},"datasources":{"aws_efs_file_system":{"maxItemsOneOverrides":{"lifecycle_policy":true}},"aws_quicksight_analysis":{"renames":["aws:quicksight/getAnalysis:getAnalysis"]},"aws_vpc_ipam_pool":{"renames":["aws:ec2/getVpcIamPool:getVpcIamPool"]},"aws_vpc_ipam_pool_cidrs":{"renames":["aws:ec2/getVpcIamPoolCidrs:getVpcIamPoolCidrs"]},"aws_vpc_ipam_pools":{"renames":["aws:ec2/getVpcIamPools:getVpcIamPools"]}}},"mux":{"resources":{"aws:accessanalyzer/analyzer:Analyzer":0,"aws:accessanalyzer/archiveRule:ArchiveRule":0,"aws:account/alternativeContact:AlternativeContact":0,"aws:account/primaryContact:PrimaryContact":0,"aws:account/region:Region":0,"aws:acm/certificate:Certificate":0,"aws:acm/certificateValidation:CertificateValidation":0,"aws:acmpca/certificate:Certificate":0,"aws:acmpca/certificateAuthority:CertificateAuthority":0,"aws:acmpca/certificateAuthorityCertificate:CertificateAuthorityCertificate":0,"aws:acmpca/permission:Permission":0,"aws:acmpca/policy:Policy":0,"aws:alb/listener:Listener":0,"aws:alb/listenerCertificate:ListenerCertificate":0,"aws:alb/listenerRule:ListenerRule":0,"aws:alb/loadBalancer:LoadBalancer":0,"aws:alb/targetGroup:TargetGroup":0,"aws:alb/targetGroupAttachment:TargetGroupAttachment":0,"aws:amp/alertManagerDefinition:AlertManagerDefinition":0,"aws:amp/ruleGroupNamespace:RuleGroupNamespace":0,"aws:amp/scraper:Scraper":1,"aws:amp/workspace:Workspace":0,"aws:amplify/app:App":0,"aws:amplify/backendEnvironment:BackendEnvironment":0,"aws:amplify/branch:Branch":0,"aws:amplify/domainAssociation:DomainAssociation":0,"aws:amplify/webhook:Webhook":0,"aws:apigateway/account:Account":0,"aws:apigateway/apiKey:ApiKey":0,"aws:apigateway/authorizer:Authorizer":0,"aws:apigateway/basePathMapping:BasePathMapping":0,"aws:apigateway/clientCertificate:ClientCertificate":0,"aws:apigateway/deployment:Deployment":0,"aws:apigateway/documentationPart:DocumentationPart":0,"aws:apigateway/documentationVersion:DocumentationVersion":0,"aws:apigateway/domainName:DomainName":0,"aws:apigateway/integration:Integration":0,"aws:apigateway/integrationResponse:IntegrationResponse":0,"aws:apigateway/method:Method":0,"aws:apigateway/methodResponse:MethodResponse":0,"aws:apigateway/methodSettings:MethodSettings":0,"aws:apigateway/model:Model":0,"aws:apigateway/requestValidator:RequestValidator":0,"aws:apigateway/resource:Resource":0,"aws:apigateway/response:Response":0,"aws:apigateway/restApi:RestApi":0,"aws:apigateway/restApiPolicy:RestApiPolicy":0,"aws:apigateway/stage:Stage":0,"aws:apigateway/usagePlan:UsagePlan":0,"aws:apigateway/usagePlanKey:UsagePlanKey":0,"aws:apigateway/vpcLink:VpcLink":0,"aws:apigatewayv2/api:Api":0,"aws:apigatewayv2/apiMapping:ApiMapping":0,"aws:apigatewayv2/authorizer:Authorizer":0,"aws:apigatewayv2/deployment:Deployment":0,"aws:apigatewayv2/domainName:DomainName":0,"aws:apigatewayv2/integration:Integration":0,"aws:apigatewayv2/integrationResponse:IntegrationResponse":0,"aws:apigatewayv2/model:Model":0,"aws:apigatewayv2/route:Route":0,"aws:apigatewayv2/routeResponse:RouteResponse":0,"aws:apigatewayv2/stage:Stage":0,"aws:apigatewayv2/vpcLink:VpcLink":0,"aws:appautoscaling/policy:Policy":0,"aws:appautoscaling/scheduledAction:ScheduledAction":0,"aws:appautoscaling/target:Target":0,"aws:appconfig/application:Application":0,"aws:appconfig/configurationProfile:ConfigurationProfile":0,"aws:appconfig/deployment:Deployment":0,"aws:appconfig/deploymentStrategy:DeploymentStrategy":0,"aws:appconfig/environment:Environment":1,"aws:appconfig/eventIntegration:EventIntegration":0,"aws:appconfig/extension:Extension":0,"aws:appconfig/extensionAssociation:ExtensionAssociation":0,"aws:appconfig/hostedConfigurationVersion:HostedConfigurationVersion":0,"aws:appfabric/appAuthorization:AppAuthorization":1,"aws:appfabric/appAuthorizationConnection:AppAuthorizationConnection":1,"aws:appfabric/appBundle:AppBundle":1,"aws:appfabric/ingestion:Ingestion":1,"aws:appfabric/ingestionDestination:IngestionDestination":1,"aws:appflow/connectorProfile:ConnectorProfile":0,"aws:appflow/flow:Flow":0,"aws:appintegrations/dataIntegration:DataIntegration":0,"aws:applicationinsights/application:Application":0,"aws:appmesh/gatewayRoute:GatewayRoute":0,"aws:appmesh/mesh:Mesh":0,"aws:appmesh/route:Route":0,"aws:appmesh/virtualGateway:VirtualGateway":0,"aws:appmesh/virtualNode:VirtualNode":0,"aws:appmesh/virtualRouter:VirtualRouter":0,"aws:appmesh/virtualService:VirtualService":0,"aws:apprunner/autoScalingConfigurationVersion:AutoScalingConfigurationVersion":0,"aws:apprunner/connection:Connection":0,"aws:apprunner/customDomainAssociation:CustomDomainAssociation":0,"aws:apprunner/defaultAutoScalingConfigurationVersion:DefaultAutoScalingConfigurationVersion":1,"aws:apprunner/deployment:Deployment":1,"aws:apprunner/observabilityConfiguration:ObservabilityConfiguration":0,"aws:apprunner/service:Service":0,"aws:apprunner/vpcConnector:VpcConnector":0,"aws:apprunner/vpcIngressConnection:VpcIngressConnection":0,"aws:appstream/directoryConfig:DirectoryConfig":0,"aws:appstream/fleet:Fleet":0,"aws:appstream/fleetStackAssociation:FleetStackAssociation":0,"aws:appstream/imageBuilder:ImageBuilder":0,"aws:appstream/stack:Stack":0,"aws:appstream/user:User":0,"aws:appstream/userStackAssociation:UserStackAssociation":0,"aws:appsync/apiCache:ApiCache":0,"aws:appsync/apiKey:ApiKey":0,"aws:appsync/dataSource:DataSource":0,"aws:appsync/domainName:DomainName":0,"aws:appsync/domainNameApiAssociation:DomainNameApiAssociation":0,"aws:appsync/function:Function":0,"aws:appsync/graphQLApi:GraphQLApi":0,"aws:appsync/resolver:Resolver":0,"aws:appsync/sourceApiAssociation:SourceApiAssociation":1,"aws:appsync/type:Type":0,"aws:athena/dataCatalog:DataCatalog":0,"aws:athena/database:Database":0,"aws:athena/namedQuery:NamedQuery":0,"aws:athena/preparedStatement:PreparedStatement":0,"aws:athena/workgroup:Workgroup":0,"aws:auditmanager/accountRegistration:AccountRegistration":1,"aws:auditmanager/assessment:Assessment":1,"aws:auditmanager/assessmentDelegation:AssessmentDelegation":1,"aws:auditmanager/assessmentReport:AssessmentReport":1,"aws:auditmanager/control:Control":1,"aws:auditmanager/framework:Framework":1,"aws:auditmanager/frameworkShare:FrameworkShare":1,"aws:auditmanager/organizationAdminAccountRegistration:OrganizationAdminAccountRegistration":1,"aws:autoscaling/attachment:Attachment":0,"aws:autoscaling/group:Group":0,"aws:autoscaling/lifecycleHook:LifecycleHook":0,"aws:autoscaling/notification:Notification":0,"aws:autoscaling/policy:Policy":0,"aws:autoscaling/schedule:Schedule":0,"aws:autoscaling/tag:Tag":0,"aws:autoscaling/trafficSourceAttachment:TrafficSourceAttachment":0,"aws:autoscalingplans/scalingPlan:ScalingPlan":0,"aws:backup/framework:Framework":0,"aws:backup/globalSettings:GlobalSettings":0,"aws:backup/logicallyAirGappedVault:LogicallyAirGappedVault":1,"aws:backup/plan:Plan":0,"aws:backup/regionSettings:RegionSettings":0,"aws:backup/reportPlan:ReportPlan":0,"aws:backup/restoreTestingPlan:RestoreTestingPlan":1,"aws:backup/restoreTestingSelection:RestoreTestingSelection":1,"aws:backup/selection:Selection":0,"aws:backup/vault:Vault":0,"aws:backup/vaultLockConfiguration:VaultLockConfiguration":0,"aws:backup/vaultNotifications:VaultNotifications":0,"aws:backup/vaultPolicy:VaultPolicy":0,"aws:batch/computeEnvironment:ComputeEnvironment":0,"aws:batch/jobDefinition:JobDefinition":0,"aws:batch/jobQueue:JobQueue":1,"aws:batch/schedulingPolicy:SchedulingPolicy":0,"aws:bcmdata/export:Export":1,"aws:bedrock/agentAgent:AgentAgent":1,"aws:bedrock/agentAgentActionGroup:AgentAgentActionGroup":1,"aws:bedrock/agentAgentAlias:AgentAgentAlias":1,"aws:bedrock/agentAgentKnowledgeBaseAssociation:AgentAgentKnowledgeBaseAssociation":1,"aws:bedrock/agentDataSource:AgentDataSource":1,"aws:bedrock/agentKnowledgeBase:AgentKnowledgeBase":1,"aws:bedrock/customModel:CustomModel":1,"aws:bedrock/guardrail:Guardrail":1,"aws:bedrock/guardrailVersion:GuardrailVersion":1,"aws:bedrock/provisionedModelThroughput:ProvisionedModelThroughput":1,"aws:bedrockmodel/invocationLoggingConfiguration:InvocationLoggingConfiguration":1,"aws:budgets/budget:Budget":0,"aws:budgets/budgetAction:BudgetAction":0,"aws:cfg/aggregateAuthorization:AggregateAuthorization":0,"aws:cfg/configurationAggregator:ConfigurationAggregator":0,"aws:cfg/conformancePack:ConformancePack":0,"aws:cfg/deliveryChannel:DeliveryChannel":0,"aws:cfg/organizationConformancePack:OrganizationConformancePack":0,"aws:cfg/organizationCustomPolicyRule:OrganizationCustomPolicyRule":0,"aws:cfg/organizationCustomRule:OrganizationCustomRule":0,"aws:cfg/organizationManagedRule:OrganizationManagedRule":0,"aws:cfg/recorder:Recorder":0,"aws:cfg/recorderStatus:RecorderStatus":0,"aws:cfg/remediationConfiguration:RemediationConfiguration":0,"aws:cfg/retentionConfiguration:RetentionConfiguration":1,"aws:cfg/rule:Rule":0,"aws:chatbot/slackChannelConfiguration:SlackChannelConfiguration":1,"aws:chatbot/teamsChannelConfiguration:TeamsChannelConfiguration":1,"aws:chime/sdkvoiceGlobalSettings:SdkvoiceGlobalSettings":0,"aws:chime/sdkvoiceSipMediaApplication:SdkvoiceSipMediaApplication":0,"aws:chime/sdkvoiceSipRule:SdkvoiceSipRule":0,"aws:chime/sdkvoiceVoiceProfileDomain:SdkvoiceVoiceProfileDomain":0,"aws:chime/voiceConnector:VoiceConnector":0,"aws:chime/voiceConnectorGroup:VoiceConnectorGroup":0,"aws:chime/voiceConnectorLogging:VoiceConnectorLogging":0,"aws:chime/voiceConnectorOrganization:VoiceConnectorOrganization":0,"aws:chime/voiceConnectorStreaming:VoiceConnectorStreaming":0,"aws:chime/voiceConnectorTermination:VoiceConnectorTermination":0,"aws:chime/voiceConnectorTerminationCredentials:VoiceConnectorTerminationCredentials":0,"aws:chimesdkmediapipelines/mediaInsightsPipelineConfiguration:MediaInsightsPipelineConfiguration":0,"aws:cleanrooms/collaboration:Collaboration":0,"aws:cleanrooms/configuredTable:ConfiguredTable":0,"aws:cloud9/environmentEC2:EnvironmentEC2":0,"aws:cloud9/environmentMembership:EnvironmentMembership":0,"aws:cloudcontrol/resource:Resource":0,"aws:cloudformation/cloudFormationType:CloudFormationType":0,"aws:cloudformation/stack:Stack":0,"aws:cloudformation/stackInstances:StackInstances":0,"aws:cloudformation/stackSet:StackSet":0,"aws:cloudformation/stackSetInstance:StackSetInstance":0,"aws:cloudfront/cachePolicy:CachePolicy":0,"aws:cloudfront/continuousDeploymentPolicy:ContinuousDeploymentPolicy":1,"aws:cloudfront/distribution:Distribution":0,"aws:cloudfront/fieldLevelEncryptionConfig:FieldLevelEncryptionConfig":0,"aws:cloudfront/fieldLevelEncryptionProfile:FieldLevelEncryptionProfile":0,"aws:cloudfront/function:Function":0,"aws:cloudfront/keyGroup:KeyGroup":0,"aws:cloudfront/keyValueStore:KeyValueStore":1,"aws:cloudfront/keyvaluestoreKey:KeyvaluestoreKey":1,"aws:cloudfront/monitoringSubscription:MonitoringSubscription":0,"aws:cloudfront/originAccessControl:OriginAccessControl":0,"aws:cloudfront/originAccessIdentity:OriginAccessIdentity":0,"aws:cloudfront/originRequestPolicy:OriginRequestPolicy":0,"aws:cloudfront/publicKey:PublicKey":0,"aws:cloudfront/realtimeLogConfig:RealtimeLogConfig":0,"aws:cloudfront/responseHeadersPolicy:ResponseHeadersPolicy":0,"aws:cloudhsmv2/cluster:Cluster":0,"aws:cloudhsmv2/hsm:Hsm":0,"aws:cloudsearch/domain:Domain":0,"aws:cloudsearch/domainServiceAccessPolicy:DomainServiceAccessPolicy":0,"aws:cloudtrail/eventDataStore:EventDataStore":0,"aws:cloudtrail/organizationDelegatedAdminAccount:OrganizationDelegatedAdminAccount":1,"aws:cloudtrail/trail:Trail":0,"aws:cloudwatch/compositeAlarm:CompositeAlarm":0,"aws:cloudwatch/dashboard:Dashboard":0,"aws:cloudwatch/eventApiDestination:EventApiDestination":0,"aws:cloudwatch/eventArchive:EventArchive":0,"aws:cloudwatch/eventBus:EventBus":0,"aws:cloudwatch/eventBusPolicy:EventBusPolicy":0,"aws:cloudwatch/eventConnection:EventConnection":0,"aws:cloudwatch/eventEndpoint:EventEndpoint":0,"aws:cloudwatch/eventPermission:EventPermission":0,"aws:cloudwatch/eventRule:EventRule":0,"aws:cloudwatch/eventTarget:EventTarget":0,"aws:cloudwatch/internetMonitor:InternetMonitor":0,"aws:cloudwatch/logAccountPolicy:LogAccountPolicy":0,"aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy":0,"aws:cloudwatch/logDestination:LogDestination":0,"aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy":0,"aws:cloudwatch/logGroup:LogGroup":0,"aws:cloudwatch/logMetricFilter:LogMetricFilter":0,"aws:cloudwatch/logResourcePolicy:LogResourcePolicy":0,"aws:cloudwatch/logStream:LogStream":0,"aws:cloudwatch/logSubscriptionFilter:LogSubscriptionFilter":0,"aws:cloudwatch/metricAlarm:MetricAlarm":0,"aws:cloudwatch/metricStream:MetricStream":0,"aws:cloudwatch/queryDefinition:QueryDefinition":0,"aws:codeartifact/domain:Domain":0,"aws:codeartifact/domainPermissions:DomainPermissions":0,"aws:codeartifact/repository:Repository":0,"aws:codeartifact/repositoryPermissionsPolicy:RepositoryPermissionsPolicy":0,"aws:codebuild/fleet:Fleet":0,"aws:codebuild/project:Project":0,"aws:codebuild/reportGroup:ReportGroup":0,"aws:codebuild/resourcePolicy:ResourcePolicy":0,"aws:codebuild/sourceCredential:SourceCredential":0,"aws:codebuild/webhook:Webhook":0,"aws:codecatalyst/devEnvironment:DevEnvironment":0,"aws:codecatalyst/project:Project":0,"aws:codecatalyst/sourceRepository:SourceRepository":0,"aws:codecommit/approvalRuleTemplate:ApprovalRuleTemplate":0,"aws:codecommit/approvalRuleTemplateAssociation:ApprovalRuleTemplateAssociation":0,"aws:codecommit/repository:Repository":0,"aws:codecommit/trigger:Trigger":0,"aws:codedeploy/application:Application":0,"aws:codedeploy/deploymentConfig:DeploymentConfig":0,"aws:codedeploy/deploymentGroup:DeploymentGroup":0,"aws:codeguruprofiler/profilingGroup:ProfilingGroup":1,"aws:codegurureviewer/repositoryAssociation:RepositoryAssociation":0,"aws:codepipeline/customActionType:CustomActionType":0,"aws:codepipeline/pipeline:Pipeline":0,"aws:codepipeline/webhook:Webhook":0,"aws:codestarconnections/connection:Connection":0,"aws:codestarconnections/host:Host":0,"aws:codestarnotifications/notificationRule:NotificationRule":0,"aws:cognito/identityPool:IdentityPool":0,"aws:cognito/identityPoolProviderPrincipalTag:IdentityPoolProviderPrincipalTag":0,"aws:cognito/identityPoolRoleAttachment:IdentityPoolRoleAttachment":0,"aws:cognito/identityProvider:IdentityProvider":0,"aws:cognito/managedUserPoolClient:ManagedUserPoolClient":1,"aws:cognito/resourceServer:ResourceServer":0,"aws:cognito/riskConfiguration:RiskConfiguration":0,"aws:cognito/user:User":0,"aws:cognito/userGroup:UserGroup":0,"aws:cognito/userInGroup:UserInGroup":0,"aws:cognito/userPool:UserPool":0,"aws:cognito/userPoolClient:UserPoolClient":1,"aws:cognito/userPoolDomain:UserPoolDomain":0,"aws:cognito/userPoolUICustomization:UserPoolUICustomization":0,"aws:comprehend/documentClassifier:DocumentClassifier":0,"aws:comprehend/entityRecognizer:EntityRecognizer":0,"aws:computeoptimizer/enrollmentStatus:EnrollmentStatus":1,"aws:computeoptimizer/recommendationPreferences:RecommendationPreferences":1,"aws:connect/botAssociation:BotAssociation":0,"aws:connect/contactFlow:ContactFlow":0,"aws:connect/contactFlowModule:ContactFlowModule":0,"aws:connect/hoursOfOperation:HoursOfOperation":0,"aws:connect/instance:Instance":0,"aws:connect/instanceStorageConfig:InstanceStorageConfig":0,"aws:connect/lambdaFunctionAssociation:LambdaFunctionAssociation":0,"aws:connect/phoneNumber:PhoneNumber":0,"aws:connect/queue:Queue":0,"aws:connect/quickConnect:QuickConnect":0,"aws:connect/routingProfile:RoutingProfile":0,"aws:connect/securityProfile:SecurityProfile":0,"aws:connect/user:User":0,"aws:connect/userHierarchyGroup:UserHierarchyGroup":0,"aws:connect/userHierarchyStructure:UserHierarchyStructure":0,"aws:connect/vocabulary:Vocabulary":0,"aws:controltower/controlTowerControl:ControlTowerControl":0,"aws:controltower/landingZone:LandingZone":0,"aws:costexplorer/anomalyMonitor:AnomalyMonitor":0,"aws:costexplorer/anomalySubscription:AnomalySubscription":0,"aws:costexplorer/costAllocationTag:CostAllocationTag":0,"aws:costexplorer/costCategory:CostCategory":0,"aws:costoptimizationhub/enrollmentStatus:EnrollmentStatus":1,"aws:costoptimizationhub/preferences:Preferences":1,"aws:cur/reportDefinition:ReportDefinition":0,"aws:customerprofiles/domain:Domain":0,"aws:customerprofiles/profile:Profile":0,"aws:dataexchange/dataSet:DataSet":0,"aws:dataexchange/revision:Revision":0,"aws:datapipeline/pipeline:Pipeline":0,"aws:datapipeline/pipelineDefinition:PipelineDefinition":0,"aws:datasync/agent:Agent":0,"aws:datasync/efsLocation:EfsLocation":0,"aws:datasync/fsxOpenZfsFileSystem:FsxOpenZfsFileSystem":0,"aws:datasync/locationAzureBlob:LocationAzureBlob":0,"aws:datasync/locationFsxLustre:LocationFsxLustre":0,"aws:datasync/locationFsxOntapFileSystem:LocationFsxOntapFileSystem":0,"aws:datasync/locationFsxWindows:LocationFsxWindows":0,"aws:datasync/locationHdfs:LocationHdfs":0,"aws:datasync/locationObjectStorage:LocationObjectStorage":0,"aws:datasync/locationSmb:LocationSmb":0,"aws:datasync/nfsLocation:NfsLocation":0,"aws:datasync/s3Location:S3Location":0,"aws:datasync/task:Task":0,"aws:datazone/assetType:AssetType":1,"aws:datazone/domain:Domain":1,"aws:datazone/environment:Environment":1,"aws:datazone/environmentBlueprintConfiguration:EnvironmentBlueprintConfiguration":1,"aws:datazone/environmentProfile:EnvironmentProfile":1,"aws:datazone/formType:FormType":1,"aws:datazone/glossary:Glossary":1,"aws:datazone/glossaryTerm:GlossaryTerm":1,"aws:datazone/project:Project":1,"aws:datazone/userProfile:UserProfile":1,"aws:dax/cluster:Cluster":0,"aws:dax/parameterGroup:ParameterGroup":0,"aws:dax/subnetGroup:SubnetGroup":0,"aws:detective/graph:Graph":0,"aws:detective/invitationAccepter:InvitationAccepter":0,"aws:detective/member:Member":0,"aws:detective/organizationAdminAccount:OrganizationAdminAccount":0,"aws:detective/organizationConfiguration:OrganizationConfiguration":0,"aws:devicefarm/devicePool:DevicePool":0,"aws:devicefarm/instanceProfile:InstanceProfile":0,"aws:devicefarm/networkProfile:NetworkProfile":0,"aws:devicefarm/project:Project":0,"aws:devicefarm/testGridProject:TestGridProject":0,"aws:devicefarm/upload:Upload":0,"aws:devopsguru/eventSourcesConfig:EventSourcesConfig":1,"aws:devopsguru/notificationChannel:NotificationChannel":1,"aws:devopsguru/resourceCollection:ResourceCollection":1,"aws:devopsguru/serviceIntegration:ServiceIntegration":1,"aws:directconnect/bgpPeer:BgpPeer":0,"aws:directconnect/connection:Connection":0,"aws:directconnect/connectionAssociation:ConnectionAssociation":0,"aws:directconnect/connectionConfirmation:ConnectionConfirmation":0,"aws:directconnect/gateway:Gateway":0,"aws:directconnect/gatewayAssociation:GatewayAssociation":0,"aws:directconnect/gatewayAssociationProposal:GatewayAssociationProposal":0,"aws:directconnect/hostedConnection:HostedConnection":0,"aws:directconnect/hostedPrivateVirtualInterface:HostedPrivateVirtualInterface":0,"aws:directconnect/hostedPrivateVirtualInterfaceAccepter:HostedPrivateVirtualInterfaceAccepter":0,"aws:directconnect/hostedPublicVirtualInterface:HostedPublicVirtualInterface":0,"aws:directconnect/hostedPublicVirtualInterfaceAccepter:HostedPublicVirtualInterfaceAccepter":0,"aws:directconnect/hostedTransitVirtualInterface:HostedTransitVirtualInterface":0,"aws:directconnect/hostedTransitVirtualInterfaceAcceptor:HostedTransitVirtualInterfaceAcceptor":0,"aws:directconnect/linkAggregationGroup:LinkAggregationGroup":0,"aws:directconnect/macsecKeyAssociation:MacsecKeyAssociation":0,"aws:directconnect/privateVirtualInterface:PrivateVirtualInterface":0,"aws:directconnect/publicVirtualInterface:PublicVirtualInterface":0,"aws:directconnect/transitVirtualInterface:TransitVirtualInterface":0,"aws:directoryservice/conditionalForwader:ConditionalForwader":0,"aws:directoryservice/directory:Directory":0,"aws:directoryservice/logService:LogService":0,"aws:directoryservice/radiusSettings:RadiusSettings":0,"aws:directoryservice/serviceRegion:ServiceRegion":0,"aws:directoryservice/sharedDirectory:SharedDirectory":0,"aws:directoryservice/sharedDirectoryAccepter:SharedDirectoryAccepter":0,"aws:directoryservice/trust:Trust":1,"aws:dlm/lifecyclePolicy:LifecyclePolicy":0,"aws:dms/certificate:Certificate":0,"aws:dms/endpoint:Endpoint":0,"aws:dms/eventSubscription:EventSubscription":0,"aws:dms/replicationConfig:ReplicationConfig":0,"aws:dms/replicationInstance:ReplicationInstance":0,"aws:dms/replicationSubnetGroup:ReplicationSubnetGroup":0,"aws:dms/replicationTask:ReplicationTask":0,"aws:dms/s3Endpoint:S3Endpoint":0,"aws:docdb/cluster:Cluster":0,"aws:docdb/clusterInstance:ClusterInstance":0,"aws:docdb/clusterParameterGroup:ClusterParameterGroup":0,"aws:docdb/clusterSnapshot:ClusterSnapshot":0,"aws:docdb/elasticCluster:ElasticCluster":1,"aws:docdb/eventSubscription:EventSubscription":0,"aws:docdb/globalCluster:GlobalCluster":0,"aws:docdb/subnetGroup:SubnetGroup":0,"aws:drs/replicationConfigurationTemplate:ReplicationConfigurationTemplate":1,"aws:dynamodb/contributorInsights:ContributorInsights":0,"aws:dynamodb/globalTable:GlobalTable":0,"aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination":0,"aws:dynamodb/resourcePolicy:ResourcePolicy":1,"aws:dynamodb/table:Table":0,"aws:dynamodb/tableExport:TableExport":0,"aws:dynamodb/tableItem:TableItem":0,"aws:dynamodb/tableReplica:TableReplica":0,"aws:dynamodb/tag:Tag":0,"aws:ebs/defaultKmsKey:DefaultKmsKey":0,"aws:ebs/encryptionByDefault:EncryptionByDefault":0,"aws:ebs/fastSnapshotRestore:FastSnapshotRestore":1,"aws:ebs/snapshot:Snapshot":0,"aws:ebs/snapshotBlockPublicAccess:SnapshotBlockPublicAccess":0,"aws:ebs/snapshotCopy:SnapshotCopy":0,"aws:ebs/snapshotImport:SnapshotImport":0,"aws:ebs/volume:Volume":0,"aws:ec2/ami:Ami":0,"aws:ec2/amiCopy:AmiCopy":0,"aws:ec2/amiFromInstance:AmiFromInstance":0,"aws:ec2/amiLaunchPermission:AmiLaunchPermission":0,"aws:ec2/availabilityZoneGroup:AvailabilityZoneGroup":0,"aws:ec2/capacityBlockReservation:CapacityBlockReservation":1,"aws:ec2/capacityReservation:CapacityReservation":0,"aws:ec2/carrierGateway:CarrierGateway":0,"aws:ec2/customerGateway:CustomerGateway":0,"aws:ec2/dedicatedHost:DedicatedHost":0,"aws:ec2/defaultNetworkAcl:DefaultNetworkAcl":0,"aws:ec2/defaultRouteTable:DefaultRouteTable":0,"aws:ec2/defaultSecurityGroup:DefaultSecurityGroup":0,"aws:ec2/defaultSubnet:DefaultSubnet":0,"aws:ec2/defaultVpc:DefaultVpc":0,"aws:ec2/defaultVpcDhcpOptions:DefaultVpcDhcpOptions":0,"aws:ec2/egressOnlyInternetGateway:EgressOnlyInternetGateway":0,"aws:ec2/eip:Eip":0,"aws:ec2/eipAssociation:EipAssociation":0,"aws:ec2/eipDomainName:EipDomainName":1,"aws:ec2/fleet:Fleet":0,"aws:ec2/flowLog:FlowLog":0,"aws:ec2/imageBlockPublicAccess:ImageBlockPublicAccess":0,"aws:ec2/instance:Instance":0,"aws:ec2/instanceMetadataDefaults:InstanceMetadataDefaults":1,"aws:ec2/internetGateway:InternetGateway":0,"aws:ec2/internetGatewayAttachment:InternetGatewayAttachment":0,"aws:ec2/keyPair:KeyPair":0,"aws:ec2/launchConfiguration:LaunchConfiguration":0,"aws:ec2/launchTemplate:LaunchTemplate":0,"aws:ec2/localGatewayRoute:LocalGatewayRoute":0,"aws:ec2/localGatewayRouteTableVpcAssociation:LocalGatewayRouteTableVpcAssociation":0,"aws:ec2/mainRouteTableAssociation:MainRouteTableAssociation":0,"aws:ec2/managedPrefixList:ManagedPrefixList":0,"aws:ec2/managedPrefixListEntry:ManagedPrefixListEntry":0,"aws:ec2/natGateway:NatGateway":0,"aws:ec2/networkAcl:NetworkAcl":0,"aws:ec2/networkAclAssociation:NetworkAclAssociation":0,"aws:ec2/networkAclRule:NetworkAclRule":0,"aws:ec2/networkInsightsAnalysis:NetworkInsightsAnalysis":0,"aws:ec2/networkInsightsPath:NetworkInsightsPath":0,"aws:ec2/networkInterface:NetworkInterface":0,"aws:ec2/networkInterfaceAttachment:NetworkInterfaceAttachment":0,"aws:ec2/networkInterfaceSecurityGroupAttachment:NetworkInterfaceSecurityGroupAttachment":0,"aws:ec2/peeringConnectionOptions:PeeringConnectionOptions":0,"aws:ec2/placementGroup:PlacementGroup":0,"aws:ec2/proxyProtocolPolicy:ProxyProtocolPolicy":0,"aws:ec2/route:Route":0,"aws:ec2/routeTable:RouteTable":0,"aws:ec2/routeTableAssociation:RouteTableAssociation":0,"aws:ec2/securityGroup:SecurityGroup":0,"aws:ec2/securityGroupAssociation:SecurityGroupAssociation":0,"aws:ec2/securityGroupRule:SecurityGroupRule":0,"aws:ec2/serialConsoleAccess:SerialConsoleAccess":0,"aws:ec2/snapshotCreateVolumePermission:SnapshotCreateVolumePermission":0,"aws:ec2/spotDatafeedSubscription:SpotDatafeedSubscription":0,"aws:ec2/spotFleetRequest:SpotFleetRequest":0,"aws:ec2/spotInstanceRequest:SpotInstanceRequest":0,"aws:ec2/subnet:Subnet":0,"aws:ec2/subnetCidrReservation:SubnetCidrReservation":0,"aws:ec2/tag:Tag":0,"aws:ec2/trafficMirrorFilter:TrafficMirrorFilter":0,"aws:ec2/trafficMirrorFilterRule:TrafficMirrorFilterRule":0,"aws:ec2/trafficMirrorSession:TrafficMirrorSession":0,"aws:ec2/trafficMirrorTarget:TrafficMirrorTarget":0,"aws:ec2/volumeAttachment:VolumeAttachment":0,"aws:ec2/vpc:Vpc":0,"aws:ec2/vpcDhcpOptions:VpcDhcpOptions":0,"aws:ec2/vpcDhcpOptionsAssociation:VpcDhcpOptionsAssociation":0,"aws:ec2/vpcEndpoint:VpcEndpoint":0,"aws:ec2/vpcEndpointConnectionAccepter:VpcEndpointConnectionAccepter":0,"aws:ec2/vpcEndpointConnectionNotification:VpcEndpointConnectionNotification":0,"aws:ec2/vpcEndpointPolicy:VpcEndpointPolicy":0,"aws:ec2/vpcEndpointRouteTableAssociation:VpcEndpointRouteTableAssociation":0,"aws:ec2/vpcEndpointService:VpcEndpointService":0,"aws:ec2/vpcEndpointServiceAllowedPrinciple:VpcEndpointServiceAllowedPrinciple":0,"aws:ec2/vpcEndpointSubnetAssociation:VpcEndpointSubnetAssociation":0,"aws:ec2/vpcIpam:VpcIpam":0,"aws:ec2/vpcIpamOrganizationAdminAccount:VpcIpamOrganizationAdminAccount":0,"aws:ec2/vpcIpamPool:VpcIpamPool":0,"aws:ec2/vpcIpamPoolCidr:VpcIpamPoolCidr":0,"aws:ec2/vpcIpamPoolCidrAllocation:VpcIpamPoolCidrAllocation":0,"aws:ec2/vpcIpamPreviewNextCidr:VpcIpamPreviewNextCidr":0,"aws:ec2/vpcIpamResourceDiscovery:VpcIpamResourceDiscovery":0,"aws:ec2/vpcIpamResourceDiscoveryAssociation:VpcIpamResourceDiscoveryAssociation":0,"aws:ec2/vpcIpamScope:VpcIpamScope":0,"aws:ec2/vpcIpv4CidrBlockAssociation:VpcIpv4CidrBlockAssociation":0,"aws:ec2/vpcIpv6CidrBlockAssociation:VpcIpv6CidrBlockAssociation":0,"aws:ec2/vpcNetworkPerformanceMetricSubscription:VpcNetworkPerformanceMetricSubscription":0,"aws:ec2/vpcPeeringConnection:VpcPeeringConnection":0,"aws:ec2/vpcPeeringConnectionAccepter:VpcPeeringConnectionAccepter":0,"aws:ec2/vpnConnection:VpnConnection":0,"aws:ec2/vpnConnectionRoute:VpnConnectionRoute":0,"aws:ec2/vpnGateway:VpnGateway":0,"aws:ec2/vpnGatewayAttachment:VpnGatewayAttachment":0,"aws:ec2/vpnGatewayRoutePropagation:VpnGatewayRoutePropagation":0,"aws:ec2clientvpn/authorizationRule:AuthorizationRule":0,"aws:ec2clientvpn/endpoint:Endpoint":0,"aws:ec2clientvpn/networkAssociation:NetworkAssociation":0,"aws:ec2clientvpn/route:Route":0,"aws:ec2transitgateway/connect:Connect":0,"aws:ec2transitgateway/connectPeer:ConnectPeer":0,"aws:ec2transitgateway/defaultRouteTableAssociation:DefaultRouteTableAssociation":1,"aws:ec2transitgateway/defaultRouteTablePropagation:DefaultRouteTablePropagation":1,"aws:ec2transitgateway/instanceConnectEndpoint:InstanceConnectEndpoint":1,"aws:ec2transitgateway/instanceState:InstanceState":0,"aws:ec2transitgateway/multicastDomain:MulticastDomain":0,"aws:ec2transitgateway/multicastDomainAssociation:MulticastDomainAssociation":0,"aws:ec2transitgateway/multicastGroupMember:MulticastGroupMember":0,"aws:ec2transitgateway/multicastGroupSource:MulticastGroupSource":0,"aws:ec2transitgateway/peeringAttachment:PeeringAttachment":0,"aws:ec2transitgateway/peeringAttachmentAccepter:PeeringAttachmentAccepter":0,"aws:ec2transitgateway/policyTable:PolicyTable":0,"aws:ec2transitgateway/policyTableAssociation:PolicyTableAssociation":0,"aws:ec2transitgateway/prefixListReference:PrefixListReference":0,"aws:ec2transitgateway/route:Route":0,"aws:ec2transitgateway/routeTable:RouteTable":0,"aws:ec2transitgateway/routeTableAssociation:RouteTableAssociation":0,"aws:ec2transitgateway/routeTablePropagation:RouteTablePropagation":0,"aws:ec2transitgateway/transitGateway:TransitGateway":0,"aws:ec2transitgateway/vpcAttachment:VpcAttachment":0,"aws:ec2transitgateway/vpcAttachmentAccepter:VpcAttachmentAccepter":0,"aws:ecr/lifecyclePolicy:LifecyclePolicy":0,"aws:ecr/pullThroughCacheRule:PullThroughCacheRule":0,"aws:ecr/registryPolicy:RegistryPolicy":0,"aws:ecr/registryScanningConfiguration:RegistryScanningConfiguration":0,"aws:ecr/replicationConfiguration:ReplicationConfiguration":0,"aws:ecr/repository:Repository":0,"aws:ecr/repositoryCreationTemplate:RepositoryCreationTemplate":0,"aws:ecr/repositoryPolicy:RepositoryPolicy":0,"aws:ecrpublic/repository:Repository":0,"aws:ecrpublic/repositoryPolicy:RepositoryPolicy":0,"aws:ecs/accountSettingDefault:AccountSettingDefault":0,"aws:ecs/capacityProvider:CapacityProvider":0,"aws:ecs/cluster:Cluster":0,"aws:ecs/clusterCapacityProviders:ClusterCapacityProviders":0,"aws:ecs/service:Service":0,"aws:ecs/tag:Tag":0,"aws:ecs/taskDefinition:TaskDefinition":0,"aws:ecs/taskSet:TaskSet":0,"aws:efs/accessPoint:AccessPoint":0,"aws:efs/backupPolicy:BackupPolicy":0,"aws:efs/fileSystem:FileSystem":0,"aws:efs/fileSystemPolicy:FileSystemPolicy":0,"aws:efs/mountTarget:MountTarget":0,"aws:efs/replicationConfiguration:ReplicationConfiguration":0,"aws:eks/accessEntry:AccessEntry":0,"aws:eks/accessPolicyAssociation:AccessPolicyAssociation":0,"aws:eks/addon:Addon":0,"aws:eks/cluster:Cluster":0,"aws:eks/fargateProfile:FargateProfile":0,"aws:eks/identityProviderConfig:IdentityProviderConfig":0,"aws:eks/nodeGroup:NodeGroup":0,"aws:eks/podIdentityAssociation:PodIdentityAssociation":1,"aws:elasticache/cluster:Cluster":0,"aws:elasticache/globalReplicationGroup:GlobalReplicationGroup":0,"aws:elasticache/parameterGroup:ParameterGroup":0,"aws:elasticache/replicationGroup:ReplicationGroup":0,"aws:elasticache/reservedCacheNode:ReservedCacheNode":1,"aws:elasticache/serverlessCache:ServerlessCache":1,"aws:elasticache/subnetGroup:SubnetGroup":0,"aws:elasticache/user:User":0,"aws:elasticache/userGroup:UserGroup":0,"aws:elasticache/userGroupAssociation:UserGroupAssociation":0,"aws:elasticbeanstalk/application:Application":0,"aws:elasticbeanstalk/applicationVersion:ApplicationVersion":0,"aws:elasticbeanstalk/configurationTemplate:ConfigurationTemplate":0,"aws:elasticbeanstalk/environment:Environment":0,"aws:elasticsearch/domain:Domain":0,"aws:elasticsearch/domainPolicy:DomainPolicy":0,"aws:elasticsearch/domainSamlOptions:DomainSamlOptions":0,"aws:elasticsearch/vpcEndpoint:VpcEndpoint":0,"aws:elastictranscoder/pipeline:Pipeline":0,"aws:elastictranscoder/preset:Preset":0,"aws:elb/appCookieStickinessPolicy:AppCookieStickinessPolicy":0,"aws:elb/attachment:Attachment":0,"aws:elb/listenerPolicy:ListenerPolicy":0,"aws:elb/loadBalancer:LoadBalancer":0,"aws:elb/loadBalancerBackendServerPolicy:LoadBalancerBackendServerPolicy":0,"aws:elb/loadBalancerCookieStickinessPolicy:LoadBalancerCookieStickinessPolicy":0,"aws:elb/loadBalancerPolicy:LoadBalancerPolicy":0,"aws:elb/sslNegotiationPolicy:SslNegotiationPolicy":0,"aws:emr/blockPublicAccessConfiguration:BlockPublicAccessConfiguration":0,"aws:emr/cluster:Cluster":0,"aws:emr/instanceFleet:InstanceFleet":0,"aws:emr/instanceGroup:InstanceGroup":0,"aws:emr/managedScalingPolicy:ManagedScalingPolicy":0,"aws:emr/securityConfiguration:SecurityConfiguration":0,"aws:emr/studio:Studio":0,"aws:emr/studioSessionMapping:StudioSessionMapping":0,"aws:emrcontainers/jobTemplate:JobTemplate":0,"aws:emrcontainers/virtualCluster:VirtualCluster":0,"aws:emrserverless/application:Application":0,"aws:evidently/feature:Feature":0,"aws:evidently/launch:Launch":0,"aws:evidently/project:Project":0,"aws:evidently/segment:Segment":0,"aws:finspace/kxCluster:KxCluster":0,"aws:finspace/kxDatabase:KxDatabase":0,"aws:finspace/kxDataview:KxDataview":0,"aws:finspace/kxEnvironment:KxEnvironment":0,"aws:finspace/kxScalingGroup:KxScalingGroup":0,"aws:finspace/kxUser:KxUser":0,"aws:finspace/kxVolume:KxVolume":0,"aws:fis/experimentTemplate:ExperimentTemplate":0,"aws:fms/adminAccount:AdminAccount":0,"aws:fms/policy:Policy":0,"aws:fms/resourceSet:ResourceSet":1,"aws:fsx/backup:Backup":0,"aws:fsx/dataRepositoryAssociation:DataRepositoryAssociation":0,"aws:fsx/fileCache:FileCache":0,"aws:fsx/lustreFileSystem:LustreFileSystem":0,"aws:fsx/ontapFileSystem:OntapFileSystem":0,"aws:fsx/ontapStorageVirtualMachine:OntapStorageVirtualMachine":0,"aws:fsx/ontapVolume:OntapVolume":0,"aws:fsx/openZfsFileSystem:OpenZfsFileSystem":0,"aws:fsx/openZfsSnapshot:OpenZfsSnapshot":0,"aws:fsx/openZfsVolume:OpenZfsVolume":0,"aws:fsx/windowsFileSystem:WindowsFileSystem":0,"aws:gamelift/alias:Alias":0,"aws:gamelift/build:Build":0,"aws:gamelift/fleet:Fleet":0,"aws:gamelift/gameServerGroup:GameServerGroup":0,"aws:gamelift/gameSessionQueue:GameSessionQueue":0,"aws:gamelift/matchmakingConfiguration:MatchmakingConfiguration":0,"aws:gamelift/matchmakingRuleSet:MatchmakingRuleSet":0,"aws:gamelift/script:Script":0,"aws:glacier/vault:Vault":0,"aws:glacier/vaultLock:VaultLock":0,"aws:globalaccelerator/accelerator:Accelerator":0,"aws:globalaccelerator/crossAccountAttachment:CrossAccountAttachment":1,"aws:globalaccelerator/customRoutingAccelerator:CustomRoutingAccelerator":0,"aws:globalaccelerator/customRoutingEndpointGroup:CustomRoutingEndpointGroup":0,"aws:globalaccelerator/customRoutingListener:CustomRoutingListener":0,"aws:globalaccelerator/endpointGroup:EndpointGroup":0,"aws:globalaccelerator/listener:Listener":0,"aws:glue/catalogDatabase:CatalogDatabase":0,"aws:glue/catalogTable:CatalogTable":0,"aws:glue/catalogTableOptimizer:CatalogTableOptimizer":1,"aws:glue/classifier:Classifier":0,"aws:glue/connection:Connection":0,"aws:glue/crawler:Crawler":0,"aws:glue/dataCatalogEncryptionSettings:DataCatalogEncryptionSettings":0,"aws:glue/dataQualityRuleset:DataQualityRuleset":0,"aws:glue/devEndpoint:DevEndpoint":0,"aws:glue/job:Job":0,"aws:glue/mLTransform:MLTransform":0,"aws:glue/partition:Partition":0,"aws:glue/partitionIndex:PartitionIndex":0,"aws:glue/registry:Registry":0,"aws:glue/resourcePolicy:ResourcePolicy":0,"aws:glue/schema:Schema":0,"aws:glue/securityConfiguration:SecurityConfiguration":0,"aws:glue/trigger:Trigger":0,"aws:glue/userDefinedFunction:UserDefinedFunction":0,"aws:glue/workflow:Workflow":0,"aws:grafana/licenseAssociation:LicenseAssociation":0,"aws:grafana/roleAssociation:RoleAssociation":0,"aws:grafana/workspace:Workspace":0,"aws:grafana/workspaceApiKey:WorkspaceApiKey":0,"aws:grafana/workspaceSamlConfiguration:WorkspaceSamlConfiguration":0,"aws:grafana/workspaceServiceAccount:WorkspaceServiceAccount":1,"aws:grafana/workspaceServiceAccountToken:WorkspaceServiceAccountToken":1,"aws:guardduty/detector:Detector":0,"aws:guardduty/detectorFeature:DetectorFeature":0,"aws:guardduty/filter:Filter":0,"aws:guardduty/iPSet:IPSet":0,"aws:guardduty/inviteAccepter:InviteAccepter":0,"aws:guardduty/malwareProtectionPlan:MalwareProtectionPlan":1,"aws:guardduty/member:Member":0,"aws:guardduty/organizationAdminAccount:OrganizationAdminAccount":0,"aws:guardduty/organizationConfiguration:OrganizationConfiguration":0,"aws:guardduty/organizationConfigurationFeature:OrganizationConfigurationFeature":0,"aws:guardduty/publishingDestination:PublishingDestination":0,"aws:guardduty/threatIntelSet:ThreatIntelSet":0,"aws:iam/accessKey:AccessKey":0,"aws:iam/accountAlias:AccountAlias":0,"aws:iam/accountPasswordPolicy:AccountPasswordPolicy":0,"aws:iam/group:Group":0,"aws:iam/groupMembership:GroupMembership":0,"aws:iam/groupPoliciesExclusive:GroupPoliciesExclusive":1,"aws:iam/groupPolicy:GroupPolicy":0,"aws:iam/groupPolicyAttachment:GroupPolicyAttachment":0,"aws:iam/groupPolicyAttachmentsExclusive:GroupPolicyAttachmentsExclusive":1,"aws:iam/instanceProfile:InstanceProfile":0,"aws:iam/openIdConnectProvider:OpenIdConnectProvider":0,"aws:iam/policy:Policy":0,"aws:iam/policyAttachment:PolicyAttachment":0,"aws:iam/role:Role":0,"aws:iam/rolePoliciesExclusive:RolePoliciesExclusive":1,"aws:iam/rolePolicy:RolePolicy":0,"aws:iam/rolePolicyAttachment:RolePolicyAttachment":0,"aws:iam/rolePolicyAttachmentsExclusive:RolePolicyAttachmentsExclusive":1,"aws:iam/samlProvider:SamlProvider":0,"aws:iam/securityTokenServicePreferences:SecurityTokenServicePreferences":0,"aws:iam/serverCertificate:ServerCertificate":0,"aws:iam/serviceLinkedRole:ServiceLinkedRole":0,"aws:iam/serviceSpecificCredential:ServiceSpecificCredential":0,"aws:iam/signingCertificate:SigningCertificate":0,"aws:iam/sshKey:SshKey":0,"aws:iam/user:User":0,"aws:iam/userGroupMembership:UserGroupMembership":0,"aws:iam/userLoginProfile:UserLoginProfile":0,"aws:iam/userPoliciesExclusive:UserPoliciesExclusive":1,"aws:iam/userPolicy:UserPolicy":0,"aws:iam/userPolicyAttachment:UserPolicyAttachment":0,"aws:iam/userPolicyAttachmentsExclusive:UserPolicyAttachmentsExclusive":1,"aws:iam/virtualMfaDevice:VirtualMfaDevice":0,"aws:identitystore/group:Group":0,"aws:identitystore/groupMembership:GroupMembership":0,"aws:identitystore/user:User":0,"aws:imagebuilder/component:Component":0,"aws:imagebuilder/containerRecipe:ContainerRecipe":0,"aws:imagebuilder/distributionConfiguration:DistributionConfiguration":0,"aws:imagebuilder/image:Image":0,"aws:imagebuilder/imagePipeline:ImagePipeline":0,"aws:imagebuilder/imageRecipe:ImageRecipe":0,"aws:imagebuilder/infrastructureConfiguration:InfrastructureConfiguration":0,"aws:imagebuilder/lifecyclePolicy:LifecyclePolicy":1,"aws:imagebuilder/workflow:Workflow":0,"aws:inspector/assessmentTarget:AssessmentTarget":0,"aws:inspector/assessmentTemplate:AssessmentTemplate":0,"aws:inspector/resourceGroup:ResourceGroup":0,"aws:inspector2/delegatedAdminAccount:DelegatedAdminAccount":0,"aws:inspector2/enabler:Enabler":0,"aws:inspector2/memberAssociation:MemberAssociation":0,"aws:inspector2/organizationConfiguration:OrganizationConfiguration":0,"aws:iot/authorizer:Authorizer":0,"aws:iot/billingGroup:BillingGroup":0,"aws:iot/caCertificate:CaCertificate":0,"aws:iot/certificate:Certificate":0,"aws:iot/domainConfiguration:DomainConfiguration":0,"aws:iot/eventConfigurations:EventConfigurations":0,"aws:iot/indexingConfiguration:IndexingConfiguration":0,"aws:iot/loggingOptions:LoggingOptions":0,"aws:iot/policy:Policy":0,"aws:iot/policyAttachment:PolicyAttachment":0,"aws:iot/provisioningTemplate:ProvisioningTemplate":0,"aws:iot/roleAlias:RoleAlias":0,"aws:iot/thing:Thing":0,"aws:iot/thingGroup:ThingGroup":0,"aws:iot/thingGroupMembership:ThingGroupMembership":0,"aws:iot/thingPrincipalAttachment:ThingPrincipalAttachment":0,"aws:iot/thingType:ThingType":0,"aws:iot/topicRule:TopicRule":0,"aws:iot/topicRuleDestination:TopicRuleDestination":0,"aws:ivs/channel:Channel":0,"aws:ivs/playbackKeyPair:PlaybackKeyPair":0,"aws:ivs/recordingConfiguration:RecordingConfiguration":0,"aws:ivschat/loggingConfiguration:LoggingConfiguration":0,"aws:ivschat/room:Room":0,"aws:kendra/dataSource:DataSource":0,"aws:kendra/experience:Experience":0,"aws:kendra/faq:Faq":0,"aws:kendra/index:Index":0,"aws:kendra/querySuggestionsBlockList:QuerySuggestionsBlockList":0,"aws:kendra/thesaurus:Thesaurus":0,"aws:keyspaces/keyspace:Keyspace":0,"aws:keyspaces/table:Table":0,"aws:kinesis/analyticsApplication:AnalyticsApplication":0,"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream":0,"aws:kinesis/resourcePolicy:ResourcePolicy":1,"aws:kinesis/stream:Stream":0,"aws:kinesis/streamConsumer:StreamConsumer":0,"aws:kinesis/videoStream:VideoStream":0,"aws:kinesisanalyticsv2/application:Application":0,"aws:kinesisanalyticsv2/applicationSnapshot:ApplicationSnapshot":0,"aws:kms/alias:Alias":0,"aws:kms/ciphertext:Ciphertext":0,"aws:kms/customKeyStore:CustomKeyStore":0,"aws:kms/externalKey:ExternalKey":0,"aws:kms/grant:Grant":0,"aws:kms/key:Key":0,"aws:kms/keyPolicy:KeyPolicy":0,"aws:kms/replicaExternalKey:ReplicaExternalKey":0,"aws:kms/replicaKey:ReplicaKey":0,"aws:lakeformation/dataCellsFilter:DataCellsFilter":1,"aws:lakeformation/dataLakeSettings:DataLakeSettings":0,"aws:lakeformation/lfTag:LfTag":0,"aws:lakeformation/permissions:Permissions":0,"aws:lakeformation/resource:Resource":0,"aws:lakeformation/resourceLfTag:ResourceLfTag":1,"aws:lakeformation/resourceLfTags:ResourceLfTags":0,"aws:lambda/alias:Alias":0,"aws:lambda/codeSigningConfig:CodeSigningConfig":0,"aws:lambda/eventSourceMapping:EventSourceMapping":0,"aws:lambda/function:Function":0,"aws:lambda/functionEventInvokeConfig:FunctionEventInvokeConfig":0,"aws:lambda/functionRecursionConfig:FunctionRecursionConfig":1,"aws:lambda/functionUrl:FunctionUrl":0,"aws:lambda/invocation:Invocation":0,"aws:lambda/layerVersion:LayerVersion":0,"aws:lambda/layerVersionPermission:LayerVersionPermission":0,"aws:lambda/permission:Permission":0,"aws:lambda/provisionedConcurrencyConfig:ProvisionedConcurrencyConfig":0,"aws:lambda/runtimeManagementConfig:RuntimeManagementConfig":1,"aws:lb/listener:Listener":0,"aws:lb/listenerCertificate:ListenerCertificate":0,"aws:lb/listenerRule:ListenerRule":0,"aws:lb/loadBalancer:LoadBalancer":0,"aws:lb/targetGroup:TargetGroup":0,"aws:lb/targetGroupAttachment:TargetGroupAttachment":0,"aws:lb/trustStore:TrustStore":0,"aws:lb/trustStoreRevocation:TrustStoreRevocation":0,"aws:lex/bot:Bot":0,"aws:lex/botAlias:BotAlias":0,"aws:lex/intent:Intent":0,"aws:lex/slotType:SlotType":0,"aws:lex/v2modelsBot:V2modelsBot":1,"aws:lex/v2modelsBotLocale:V2modelsBotLocale":1,"aws:lex/v2modelsBotVersion:V2modelsBotVersion":1,"aws:lex/v2modelsIntent:V2modelsIntent":1,"aws:lex/v2modelsSlot:V2modelsSlot":1,"aws:lex/v2modelsSlotType:V2modelsSlotType":1,"aws:licensemanager/association:Association":0,"aws:licensemanager/licenseConfiguration:LicenseConfiguration":0,"aws:licensemanager/licenseGrant:LicenseGrant":0,"aws:licensemanager/licenseGrantAccepter:LicenseGrantAccepter":0,"aws:lightsail/bucket:Bucket":0,"aws:lightsail/bucketAccessKey:BucketAccessKey":0,"aws:lightsail/bucketResourceAccess:BucketResourceAccess":0,"aws:lightsail/certificate:Certificate":0,"aws:lightsail/containerService:ContainerService":0,"aws:lightsail/containerServiceDeploymentVersion:ContainerServiceDeploymentVersion":0,"aws:lightsail/database:Database":0,"aws:lightsail/disk:Disk":0,"aws:lightsail/disk_attachment:Disk_attachment":0,"aws:lightsail/distribution:Distribution":0,"aws:lightsail/domain:Domain":0,"aws:lightsail/domainEntry:DomainEntry":0,"aws:lightsail/instance:Instance":0,"aws:lightsail/instancePublicPorts:InstancePublicPorts":0,"aws:lightsail/keyPair:KeyPair":0,"aws:lightsail/lb:Lb":0,"aws:lightsail/lbAttachment:LbAttachment":0,"aws:lightsail/lbCertificate:LbCertificate":0,"aws:lightsail/lbCertificateAttachment:LbCertificateAttachment":0,"aws:lightsail/lbHttpsRedirectionPolicy:LbHttpsRedirectionPolicy":0,"aws:lightsail/lbStickinessPolicy:LbStickinessPolicy":0,"aws:lightsail/staticIp:StaticIp":0,"aws:lightsail/staticIpAttachment:StaticIpAttachment":0,"aws:location/geofenceCollection:GeofenceCollection":0,"aws:location/map:Map":0,"aws:location/placeIndex:PlaceIndex":0,"aws:location/routeCalculation:RouteCalculation":0,"aws:location/tracker:Tracker":0,"aws:location/trackerAssociation:TrackerAssociation":0,"aws:m2/application:Application":1,"aws:m2/deployment:Deployment":1,"aws:m2/environment:Environment":1,"aws:macie/customDataIdentifier:CustomDataIdentifier":0,"aws:macie/findingsFilter:FindingsFilter":0,"aws:macie2/account:Account":0,"aws:macie2/classificationExportConfiguration:ClassificationExportConfiguration":0,"aws:macie2/classificationJob:ClassificationJob":0,"aws:macie2/invitationAccepter:InvitationAccepter":0,"aws:macie2/member:Member":0,"aws:macie2/organizationAdminAccount:OrganizationAdminAccount":0,"aws:mediaconvert/queue:Queue":0,"aws:medialive/channel:Channel":0,"aws:medialive/input:Input":0,"aws:medialive/inputSecurityGroup:InputSecurityGroup":0,"aws:medialive/multiplex:Multiplex":0,"aws:medialive/multiplexProgram:MultiplexProgram":1,"aws:mediapackage/channel:Channel":0,"aws:mediastore/container:Container":0,"aws:mediastore/containerPolicy:ContainerPolicy":0,"aws:memorydb/acl:Acl":0,"aws:memorydb/cluster:Cluster":0,"aws:memorydb/parameterGroup:ParameterGroup":0,"aws:memorydb/snapshot:Snapshot":0,"aws:memorydb/subnetGroup:SubnetGroup":0,"aws:memorydb/user:User":0,"aws:mq/broker:Broker":0,"aws:mq/configuration:Configuration":0,"aws:msk/cluster:Cluster":0,"aws:msk/clusterPolicy:ClusterPolicy":0,"aws:msk/configuration:Configuration":0,"aws:msk/replicator:Replicator":0,"aws:msk/scramSecretAssociation:ScramSecretAssociation":0,"aws:msk/serverlessCluster:ServerlessCluster":0,"aws:msk/vpcConnection:VpcConnection":0,"aws:mskconnect/connector:Connector":0,"aws:mskconnect/customPlugin:CustomPlugin":0,"aws:mskconnect/workerConfiguration:WorkerConfiguration":0,"aws:mwaa/environment:Environment":0,"aws:neptune/cluster:Cluster":0,"aws:neptune/clusterEndpoint:ClusterEndpoint":0,"aws:neptune/clusterInstance:ClusterInstance":0,"aws:neptune/clusterParameterGroup:ClusterParameterGroup":0,"aws:neptune/clusterSnapshot:ClusterSnapshot":0,"aws:neptune/eventSubscription:EventSubscription":0,"aws:neptune/globalCluster:GlobalCluster":0,"aws:neptune/parameterGroup:ParameterGroup":0,"aws:neptune/subnetGroup:SubnetGroup":0,"aws:networkfirewall/firewall:Firewall":0,"aws:networkfirewall/firewallPolicy:FirewallPolicy":0,"aws:networkfirewall/loggingConfiguration:LoggingConfiguration":0,"aws:networkfirewall/resourcePolicy:ResourcePolicy":0,"aws:networkfirewall/ruleGroup:RuleGroup":0,"aws:networkfirewall/tlsInspectionConfiguration:TlsInspectionConfiguration":1,"aws:networkmanager/attachmentAccepter:AttachmentAccepter":0,"aws:networkmanager/connectAttachment:ConnectAttachment":0,"aws:networkmanager/connectPeer:ConnectPeer":0,"aws:networkmanager/connection:Connection":0,"aws:networkmanager/coreNetwork:CoreNetwork":0,"aws:networkmanager/coreNetworkPolicyAttachment:CoreNetworkPolicyAttachment":0,"aws:networkmanager/customerGatewayAssociation:CustomerGatewayAssociation":0,"aws:networkmanager/device:Device":0,"aws:networkmanager/globalNetwork:GlobalNetwork":0,"aws:networkmanager/link:Link":0,"aws:networkmanager/linkAssociation:LinkAssociation":0,"aws:networkmanager/site:Site":0,"aws:networkmanager/siteToSiteVpnAttachment:SiteToSiteVpnAttachment":0,"aws:networkmanager/transitGatewayConnectPeerAssociation:TransitGatewayConnectPeerAssociation":0,"aws:networkmanager/transitGatewayPeering:TransitGatewayPeering":0,"aws:networkmanager/transitGatewayRegistration:TransitGatewayRegistration":0,"aws:networkmanager/transitGatewayRouteTableAttachment:TransitGatewayRouteTableAttachment":0,"aws:networkmanager/vpcAttachment:VpcAttachment":0,"aws:networkmonitor/monitor:Monitor":1,"aws:networkmonitor/probe:Probe":1,"aws:oam/link:Link":0,"aws:oam/sink:Sink":0,"aws:oam/sinkPolicy:SinkPolicy":0,"aws:opensearch/domain:Domain":0,"aws:opensearch/domainPolicy:DomainPolicy":0,"aws:opensearch/domainSamlOptions:DomainSamlOptions":0,"aws:opensearch/inboundConnectionAccepter:InboundConnectionAccepter":0,"aws:opensearch/outboundConnection:OutboundConnection":0,"aws:opensearch/package:Package":0,"aws:opensearch/packageAssociation:PackageAssociation":0,"aws:opensearch/serverlessAccessPolicy:ServerlessAccessPolicy":1,"aws:opensearch/serverlessCollection:ServerlessCollection":1,"aws:opensearch/serverlessLifecyclePolicy:ServerlessLifecyclePolicy":1,"aws:opensearch/serverlessSecurityConfig:ServerlessSecurityConfig":1,"aws:opensearch/serverlessSecurityPolicy:ServerlessSecurityPolicy":1,"aws:opensearch/serverlessVpcEndpoint:ServerlessVpcEndpoint":1,"aws:opensearch/vpcEndpoint:VpcEndpoint":0,"aws:opensearchingest/pipeline:Pipeline":1,"aws:opsworks/application:Application":0,"aws:opsworks/customLayer:CustomLayer":0,"aws:opsworks/ecsClusterLayer:EcsClusterLayer":0,"aws:opsworks/gangliaLayer:GangliaLayer":0,"aws:opsworks/haproxyLayer:HaproxyLayer":0,"aws:opsworks/instance:Instance":0,"aws:opsworks/javaAppLayer:JavaAppLayer":0,"aws:opsworks/memcachedLayer:MemcachedLayer":0,"aws:opsworks/mysqlLayer:MysqlLayer":0,"aws:opsworks/nodejsAppLayer:NodejsAppLayer":0,"aws:opsworks/permission:Permission":0,"aws:opsworks/phpAppLayer:PhpAppLayer":0,"aws:opsworks/railsAppLayer:RailsAppLayer":0,"aws:opsworks/rdsDbInstance:RdsDbInstance":0,"aws:opsworks/stack:Stack":0,"aws:opsworks/staticWebLayer:StaticWebLayer":0,"aws:opsworks/userProfile:UserProfile":0,"aws:organizations/account:Account":0,"aws:organizations/delegatedAdministrator:DelegatedAdministrator":0,"aws:organizations/organization:Organization":0,"aws:organizations/organizationalUnit:OrganizationalUnit":0,"aws:organizations/policy:Policy":0,"aws:organizations/policyAttachment:PolicyAttachment":0,"aws:organizations/resourcePolicy:ResourcePolicy":0,"aws:paymentcryptography/key:Key":1,"aws:paymentcryptography/keyAlias:KeyAlias":1,"aws:pinpoint/admChannel:AdmChannel":0,"aws:pinpoint/apnsChannel:ApnsChannel":0,"aws:pinpoint/apnsSandboxChannel:ApnsSandboxChannel":0,"aws:pinpoint/apnsVoipChannel:ApnsVoipChannel":0,"aws:pinpoint/apnsVoipSandboxChannel:ApnsVoipSandboxChannel":0,"aws:pinpoint/app:App":0,"aws:pinpoint/baiduChannel:BaiduChannel":0,"aws:pinpoint/emailChannel:EmailChannel":0,"aws:pinpoint/emailTemplate:EmailTemplate":1,"aws:pinpoint/eventStream:EventStream":0,"aws:pinpoint/gcmChannel:GcmChannel":0,"aws:pinpoint/smsChannel:SmsChannel":0,"aws:pinpoint/smsvoicev2ConfigurationSet:Smsvoicev2ConfigurationSet":1,"aws:pinpoint/smsvoicev2OptOutList:Smsvoicev2OptOutList":1,"aws:pinpoint/smsvoicev2PhoneNumber:Smsvoicev2PhoneNumber":1,"aws:pipes/pipe:Pipe":0,"aws:qldb/ledger:Ledger":0,"aws:qldb/stream:Stream":0,"aws:quicksight/accountSubscription:AccountSubscription":0,"aws:quicksight/analysis:Analysis":0,"aws:quicksight/dashboard:Dashboard":0,"aws:quicksight/dataSet:DataSet":0,"aws:quicksight/dataSource:DataSource":0,"aws:quicksight/folder:Folder":0,"aws:quicksight/folderMembership:FolderMembership":1,"aws:quicksight/group:Group":0,"aws:quicksight/groupMembership:GroupMembership":0,"aws:quicksight/iamPolicyAssignment:IamPolicyAssignment":1,"aws:quicksight/ingestion:Ingestion":1,"aws:quicksight/namespace:Namespace":1,"aws:quicksight/refreshSchedule:RefreshSchedule":1,"aws:quicksight/template:Template":0,"aws:quicksight/templateAlias:TemplateAlias":1,"aws:quicksight/theme:Theme":0,"aws:quicksight/user:User":0,"aws:quicksight/vpcConnection:VpcConnection":1,"aws:ram/principalAssociation:PrincipalAssociation":0,"aws:ram/resourceAssociation:ResourceAssociation":0,"aws:ram/resourceShare:ResourceShare":0,"aws:ram/resourceShareAccepter:ResourceShareAccepter":0,"aws:ram/sharingWithOrganization:SharingWithOrganization":0,"aws:rbin/rule:Rule":0,"aws:rds/certificate:Certificate":0,"aws:rds/cluster:Cluster":0,"aws:rds/clusterActivityStream:ClusterActivityStream":0,"aws:rds/clusterEndpoint:ClusterEndpoint":0,"aws:rds/clusterInstance:ClusterInstance":0,"aws:rds/clusterParameterGroup:ClusterParameterGroup":0,"aws:rds/clusterRoleAssociation:ClusterRoleAssociation":0,"aws:rds/clusterSnapshot:ClusterSnapshot":0,"aws:rds/customDbEngineVersion:CustomDbEngineVersion":0,"aws:rds/eventSubscription:EventSubscription":0,"aws:rds/exportTask:ExportTask":1,"aws:rds/globalCluster:GlobalCluster":0,"aws:rds/instance:Instance":0,"aws:rds/instanceAutomatedBackupsReplication:InstanceAutomatedBackupsReplication":0,"aws:rds/integration:Integration":1,"aws:rds/optionGroup:OptionGroup":0,"aws:rds/parameterGroup:ParameterGroup":0,"aws:rds/proxy:Proxy":0,"aws:rds/proxyDefaultTargetGroup:ProxyDefaultTargetGroup":0,"aws:rds/proxyEndpoint:ProxyEndpoint":0,"aws:rds/proxyTarget:ProxyTarget":0,"aws:rds/reservedInstance:ReservedInstance":0,"aws:rds/roleAssociation:RoleAssociation":0,"aws:rds/snapshot:Snapshot":0,"aws:rds/snapshotCopy:SnapshotCopy":0,"aws:rds/subnetGroup:SubnetGroup":0,"aws:redshift/authenticationProfile:AuthenticationProfile":0,"aws:redshift/cluster:Cluster":0,"aws:redshift/clusterIamRoles:ClusterIamRoles":0,"aws:redshift/clusterSnapshot:ClusterSnapshot":0,"aws:redshift/dataShareAuthorization:DataShareAuthorization":1,"aws:redshift/dataShareConsumerAssociation:DataShareConsumerAssociation":1,"aws:redshift/endpointAccess:EndpointAccess":0,"aws:redshift/endpointAuthorization:EndpointAuthorization":0,"aws:redshift/eventSubscription:EventSubscription":0,"aws:redshift/hsmClientCertificate:HsmClientCertificate":0,"aws:redshift/hsmConfiguration:HsmConfiguration":0,"aws:redshift/logging:Logging":1,"aws:redshift/parameterGroup:ParameterGroup":0,"aws:redshift/partner:Partner":0,"aws:redshift/resourcePolicy:ResourcePolicy":0,"aws:redshift/scheduledAction:ScheduledAction":0,"aws:redshift/snapshotCopy:SnapshotCopy":1,"aws:redshift/snapshotCopyGrant:SnapshotCopyGrant":0,"aws:redshift/snapshotSchedule:SnapshotSchedule":0,"aws:redshift/snapshotScheduleAssociation:SnapshotScheduleAssociation":0,"aws:redshift/subnetGroup:SubnetGroup":0,"aws:redshift/usageLimit:UsageLimit":0,"aws:redshiftdata/statement:Statement":0,"aws:redshiftserverless/customDomainAssociation:CustomDomainAssociation":1,"aws:redshiftserverless/endpointAccess:EndpointAccess":0,"aws:redshiftserverless/namespace:Namespace":0,"aws:redshiftserverless/resourcePolicy:ResourcePolicy":0,"aws:redshiftserverless/snapshot:Snapshot":0,"aws:redshiftserverless/usageLimit:UsageLimit":0,"aws:redshiftserverless/workgroup:Workgroup":0,"aws:rekognition/collection:Collection":1,"aws:rekognition/project:Project":1,"aws:rekognition/streamProcessor:StreamProcessor":1,"aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy":1,"aws:resourceexplorer/index:Index":1,"aws:resourceexplorer/view:View":1,"aws:resourcegroups/group:Group":0,"aws:resourcegroups/resource:Resource":0,"aws:rolesanywhere/profile:Profile":0,"aws:rolesanywhere/trustAnchor:TrustAnchor":0,"aws:route53/cidrCollection:CidrCollection":1,"aws:route53/cidrLocation:CidrLocation":1,"aws:route53/delegationSet:DelegationSet":0,"aws:route53/healthCheck:HealthCheck":0,"aws:route53/hostedZoneDnsSec:HostedZoneDnsSec":0,"aws:route53/keySigningKey:KeySigningKey":0,"aws:route53/profilesAssociation:ProfilesAssociation":1,"aws:route53/profilesProfile:ProfilesProfile":1,"aws:route53/profilesResourceAssociation:ProfilesResourceAssociation":1,"aws:route53/queryLog:QueryLog":0,"aws:route53/record:Record":0,"aws:route53/resolverConfig:ResolverConfig":0,"aws:route53/resolverDnsSecConfig:ResolverDnsSecConfig":0,"aws:route53/resolverEndpoint:ResolverEndpoint":0,"aws:route53/resolverFirewallConfig:ResolverFirewallConfig":0,"aws:route53/resolverFirewallDomainList:ResolverFirewallDomainList":0,"aws:route53/resolverFirewallRule:ResolverFirewallRule":0,"aws:route53/resolverFirewallRuleGroup:ResolverFirewallRuleGroup":0,"aws:route53/resolverFirewallRuleGroupAssociation:ResolverFirewallRuleGroupAssociation":0,"aws:route53/resolverQueryLogConfig:ResolverQueryLogConfig":0,"aws:route53/resolverQueryLogConfigAssociation:ResolverQueryLogConfigAssociation":0,"aws:route53/resolverRule:ResolverRule":0,"aws:route53/resolverRuleAssociation:ResolverRuleAssociation":0,"aws:route53/trafficPolicy:TrafficPolicy":0,"aws:route53/trafficPolicyInstance:TrafficPolicyInstance":0,"aws:route53/vpcAssociationAuthorization:VpcAssociationAuthorization":0,"aws:route53/zone:Zone":0,"aws:route53/zoneAssociation:ZoneAssociation":0,"aws:route53domains/delegationSignerRecord:DelegationSignerRecord":1,"aws:route53domains/registeredDomain:RegisteredDomain":0,"aws:route53recoverycontrol/cluster:Cluster":0,"aws:route53recoverycontrol/controlPanel:ControlPanel":0,"aws:route53recoverycontrol/routingControl:RoutingControl":0,"aws:route53recoverycontrol/safetyRule:SafetyRule":0,"aws:route53recoveryreadiness/cell:Cell":0,"aws:route53recoveryreadiness/readinessCheck:ReadinessCheck":0,"aws:route53recoveryreadiness/recoveryGroup:RecoveryGroup":0,"aws:route53recoveryreadiness/resourceSet:ResourceSet":0,"aws:rum/appMonitor:AppMonitor":0,"aws:rum/metricsDestination:MetricsDestination":0,"aws:s3/accessPoint:AccessPoint":0,"aws:s3/accountPublicAccessBlock:AccountPublicAccessBlock":0,"aws:s3/analyticsConfiguration:AnalyticsConfiguration":0,"aws:s3/bucket:Bucket":0,"aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2":0,"aws:s3/bucketAclV2:BucketAclV2":0,"aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2":0,"aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration":0,"aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2":0,"aws:s3/bucketLoggingV2:BucketLoggingV2":0,"aws:s3/bucketMetric:BucketMetric":0,"aws:s3/bucketNotification:BucketNotification":0,"aws:s3/bucketObject:BucketObject":0,"aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2":0,"aws:s3/bucketObjectv2:BucketObjectv2":0,"aws:s3/bucketOwnershipControls:BucketOwnershipControls":0,"aws:s3/bucketPolicy:BucketPolicy":0,"aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock":0,"aws:s3/bucketReplicationConfig:BucketReplicationConfig":0,"aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2":0,"aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2":0,"aws:s3/bucketV2:BucketV2":0,"aws:s3/bucketVersioningV2:BucketVersioningV2":0,"aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2":0,"aws:s3/directoryBucket:DirectoryBucket":1,"aws:s3/inventory:Inventory":0,"aws:s3/objectCopy:ObjectCopy":0,"aws:s3control/accessGrant:AccessGrant":1,"aws:s3control/accessGrantsInstance:AccessGrantsInstance":1,"aws:s3control/accessGrantsInstanceResourcePolicy:AccessGrantsInstanceResourcePolicy":1,"aws:s3control/accessGrantsLocation:AccessGrantsLocation":1,"aws:s3control/accessPointPolicy:AccessPointPolicy":0,"aws:s3control/bucket:Bucket":0,"aws:s3control/bucketLifecycleConfiguration:BucketLifecycleConfiguration":0,"aws:s3control/bucketPolicy:BucketPolicy":0,"aws:s3control/multiRegionAccessPoint:MultiRegionAccessPoint":0,"aws:s3control/multiRegionAccessPointPolicy:MultiRegionAccessPointPolicy":0,"aws:s3control/objectLambdaAccessPoint:ObjectLambdaAccessPoint":0,"aws:s3control/objectLambdaAccessPointPolicy:ObjectLambdaAccessPointPolicy":0,"aws:s3control/storageLensConfiguration:StorageLensConfiguration":0,"aws:s3outposts/endpoint:Endpoint":0,"aws:sagemaker/app:App":0,"aws:sagemaker/appImageConfig:AppImageConfig":0,"aws:sagemaker/codeRepository:CodeRepository":0,"aws:sagemaker/dataQualityJobDefinition:DataQualityJobDefinition":0,"aws:sagemaker/device:Device":0,"aws:sagemaker/deviceFleet:DeviceFleet":0,"aws:sagemaker/domain:Domain":0,"aws:sagemaker/endpoint:Endpoint":0,"aws:sagemaker/endpointConfiguration:EndpointConfiguration":0,"aws:sagemaker/featureGroup:FeatureGroup":0,"aws:sagemaker/flowDefinition:FlowDefinition":0,"aws:sagemaker/hub:Hub":0,"aws:sagemaker/humanTaskUI:HumanTaskUI":0,"aws:sagemaker/image:Image":0,"aws:sagemaker/imageVersion:ImageVersion":0,"aws:sagemaker/mlflowTrackingServer:MlflowTrackingServer":0,"aws:sagemaker/model:Model":0,"aws:sagemaker/modelPackageGroup:ModelPackageGroup":0,"aws:sagemaker/modelPackageGroupPolicy:ModelPackageGroupPolicy":0,"aws:sagemaker/monitoringSchedule:MonitoringSchedule":0,"aws:sagemaker/notebookInstance:NotebookInstance":0,"aws:sagemaker/notebookInstanceLifecycleConfiguration:NotebookInstanceLifecycleConfiguration":0,"aws:sagemaker/pipeline:Pipeline":0,"aws:sagemaker/project:Project":0,"aws:sagemaker/servicecatalogPortfolioStatus:ServicecatalogPortfolioStatus":0,"aws:sagemaker/space:Space":0,"aws:sagemaker/studioLifecycleConfig:StudioLifecycleConfig":0,"aws:sagemaker/userProfile:UserProfile":0,"aws:sagemaker/workforce:Workforce":0,"aws:sagemaker/workteam:Workteam":0,"aws:scheduler/schedule:Schedule":0,"aws:scheduler/scheduleGroup:ScheduleGroup":0,"aws:schemas/discoverer:Discoverer":0,"aws:schemas/registry:Registry":0,"aws:schemas/registryPolicy:RegistryPolicy":0,"aws:schemas/schema:Schema":0,"aws:secretsmanager/secret:Secret":0,"aws:secretsmanager/secretPolicy:SecretPolicy":0,"aws:secretsmanager/secretRotation:SecretRotation":0,"aws:secretsmanager/secretVersion:SecretVersion":0,"aws:securityhub/account:Account":0,"aws:securityhub/actionTarget:ActionTarget":0,"aws:securityhub/automationRule:AutomationRule":1,"aws:securityhub/configurationPolicy:ConfigurationPolicy":0,"aws:securityhub/configurationPolicyAssociation:ConfigurationPolicyAssociation":0,"aws:securityhub/findingAggregator:FindingAggregator":0,"aws:securityhub/insight:Insight":0,"aws:securityhub/inviteAccepter:InviteAccepter":0,"aws:securityhub/member:Member":0,"aws:securityhub/organizationAdminAccount:OrganizationAdminAccount":0,"aws:securityhub/organizationConfiguration:OrganizationConfiguration":0,"aws:securityhub/productSubscription:ProductSubscription":0,"aws:securityhub/standardsControl:StandardsControl":0,"aws:securityhub/standardsControlAssociation:StandardsControlAssociation":1,"aws:securityhub/standardsSubscription:StandardsSubscription":0,"aws:securitylake/awsLogSource:AwsLogSource":1,"aws:securitylake/customLogSource:CustomLogSource":1,"aws:securitylake/dataLake:DataLake":1,"aws:securitylake/subscriber:Subscriber":1,"aws:securitylake/subscriberNotification:SubscriberNotification":1,"aws:serverlessrepository/cloudFormationStack:CloudFormationStack":0,"aws:servicecatalog/appregistryApplication:AppregistryApplication":1,"aws:servicecatalog/budgetResourceAssociation:BudgetResourceAssociation":0,"aws:servicecatalog/constraint:Constraint":0,"aws:servicecatalog/organizationsAccess:OrganizationsAccess":0,"aws:servicecatalog/portfolio:Portfolio":0,"aws:servicecatalog/portfolioShare:PortfolioShare":0,"aws:servicecatalog/principalPortfolioAssociation:PrincipalPortfolioAssociation":0,"aws:servicecatalog/product:Product":0,"aws:servicecatalog/productPortfolioAssociation:ProductPortfolioAssociation":0,"aws:servicecatalog/provisionedProduct:ProvisionedProduct":0,"aws:servicecatalog/provisioningArtifact:ProvisioningArtifact":0,"aws:servicecatalog/serviceAction:ServiceAction":0,"aws:servicecatalog/tagOption:TagOption":0,"aws:servicecatalog/tagOptionResourceAssociation:TagOptionResourceAssociation":0,"aws:servicediscovery/httpNamespace:HttpNamespace":0,"aws:servicediscovery/instance:Instance":0,"aws:servicediscovery/privateDnsNamespace:PrivateDnsNamespace":0,"aws:servicediscovery/publicDnsNamespace:PublicDnsNamespace":0,"aws:servicediscovery/service:Service":0,"aws:servicequotas/serviceQuota:ServiceQuota":0,"aws:servicequotas/template:Template":1,"aws:servicequotas/templateAssociation:TemplateAssociation":1,"aws:ses/activeReceiptRuleSet:ActiveReceiptRuleSet":0,"aws:ses/configurationSet:ConfigurationSet":0,"aws:ses/domainDkim:DomainDkim":0,"aws:ses/domainIdentity:DomainIdentity":0,"aws:ses/domainIdentityVerification:DomainIdentityVerification":0,"aws:ses/emailIdentity:EmailIdentity":0,"aws:ses/eventDestination:EventDestination":0,"aws:ses/identityNotificationTopic:IdentityNotificationTopic":0,"aws:ses/identityPolicy:IdentityPolicy":0,"aws:ses/mailFrom:MailFrom":0,"aws:ses/receiptFilter:ReceiptFilter":0,"aws:ses/receiptRule:ReceiptRule":0,"aws:ses/receiptRuleSet:ReceiptRuleSet":0,"aws:ses/template:Template":0,"aws:sesv2/accountSuppressionAttributes:AccountSuppressionAttributes":1,"aws:sesv2/accountVdmAttributes:AccountVdmAttributes":0,"aws:sesv2/configurationSet:ConfigurationSet":0,"aws:sesv2/configurationSetEventDestination:ConfigurationSetEventDestination":0,"aws:sesv2/contactList:ContactList":0,"aws:sesv2/dedicatedIpAssignment:DedicatedIpAssignment":0,"aws:sesv2/dedicatedIpPool:DedicatedIpPool":0,"aws:sesv2/emailIdentity:EmailIdentity":0,"aws:sesv2/emailIdentityFeedbackAttributes:EmailIdentityFeedbackAttributes":0,"aws:sesv2/emailIdentityMailFromAttributes:EmailIdentityMailFromAttributes":0,"aws:sesv2/emailIdentityPolicy:EmailIdentityPolicy":0,"aws:sfn/activity:Activity":0,"aws:sfn/alias:Alias":0,"aws:sfn/stateMachine:StateMachine":0,"aws:shield/applicationLayerAutomaticResponse:ApplicationLayerAutomaticResponse":1,"aws:shield/drtAccessLogBucketAssociation:DrtAccessLogBucketAssociation":1,"aws:shield/drtAccessRoleArnAssociation:DrtAccessRoleArnAssociation":1,"aws:shield/proactiveEngagement:ProactiveEngagement":1,"aws:shield/protection:Protection":0,"aws:shield/protectionGroup:ProtectionGroup":0,"aws:shield/protectionHealthCheckAssociation:ProtectionHealthCheckAssociation":0,"aws:shield/subscription:Subscription":1,"aws:signer/signingJob:SigningJob":0,"aws:signer/signingProfile:SigningProfile":0,"aws:signer/signingProfilePermission:SigningProfilePermission":0,"aws:simpledb/domain:Domain":1,"aws:sns/dataProtectionPolicy:DataProtectionPolicy":0,"aws:sns/platformApplication:PlatformApplication":0,"aws:sns/smsPreferences:SmsPreferences":0,"aws:sns/topic:Topic":0,"aws:sns/topicPolicy:TopicPolicy":0,"aws:sns/topicSubscription:TopicSubscription":0,"aws:sqs/queue:Queue":0,"aws:sqs/queuePolicy:QueuePolicy":0,"aws:sqs/redriveAllowPolicy:RedriveAllowPolicy":0,"aws:sqs/redrivePolicy:RedrivePolicy":0,"aws:ssm/activation:Activation":0,"aws:ssm/association:Association":0,"aws:ssm/contactsRotation:ContactsRotation":1,"aws:ssm/defaultPatchBaseline:DefaultPatchBaseline":0,"aws:ssm/document:Document":0,"aws:ssm/maintenanceWindow:MaintenanceWindow":0,"aws:ssm/maintenanceWindowTarget:MaintenanceWindowTarget":0,"aws:ssm/maintenanceWindowTask:MaintenanceWindowTask":0,"aws:ssm/parameter:Parameter":0,"aws:ssm/patchBaseline:PatchBaseline":0,"aws:ssm/patchGroup:PatchGroup":0,"aws:ssm/resourceDataSync:ResourceDataSync":0,"aws:ssm/serviceSetting:ServiceSetting":0,"aws:ssmcontacts/contact:Contact":0,"aws:ssmcontacts/contactChannel:ContactChannel":0,"aws:ssmcontacts/plan:Plan":0,"aws:ssmincidents/replicationSet:ReplicationSet":0,"aws:ssmincidents/responsePlan:ResponsePlan":0,"aws:ssoadmin/accountAssignment:AccountAssignment":0,"aws:ssoadmin/application:Application":1,"aws:ssoadmin/applicationAccessScope:ApplicationAccessScope":1,"aws:ssoadmin/applicationAssignment:ApplicationAssignment":1,"aws:ssoadmin/applicationAssignmentConfiguration:ApplicationAssignmentConfiguration":1,"aws:ssoadmin/customerManagedPolicyAttachment:CustomerManagedPolicyAttachment":0,"aws:ssoadmin/instanceAccessControlAttributes:InstanceAccessControlAttributes":0,"aws:ssoadmin/managedPolicyAttachment:ManagedPolicyAttachment":0,"aws:ssoadmin/permissionSet:PermissionSet":0,"aws:ssoadmin/permissionSetInlinePolicy:PermissionSetInlinePolicy":0,"aws:ssoadmin/permissionsBoundaryAttachment:PermissionsBoundaryAttachment":0,"aws:ssoadmin/trustedTokenIssuer:TrustedTokenIssuer":1,"aws:storagegateway/cache:Cache":0,"aws:storagegateway/cachesIscsiVolume:CachesIscsiVolume":0,"aws:storagegateway/fileSystemAssociation:FileSystemAssociation":0,"aws:storagegateway/gateway:Gateway":0,"aws:storagegateway/nfsFileShare:NfsFileShare":0,"aws:storagegateway/smbFileShare:SmbFileShare":0,"aws:storagegateway/storedIscsiVolume:StoredIscsiVolume":0,"aws:storagegateway/tapePool:TapePool":0,"aws:storagegateway/uploadBuffer:UploadBuffer":0,"aws:storagegateway/workingStorage:WorkingStorage":0,"aws:swf/domain:Domain":0,"aws:synthetics/canary:Canary":0,"aws:synthetics/group:Group":0,"aws:synthetics/groupAssociation:GroupAssociation":0,"aws:timestreaminfluxdb/dbInstance:DbInstance":1,"aws:timestreamwrite/database:Database":0,"aws:timestreamwrite/table:Table":0,"aws:transcribe/languageModel:LanguageModel":0,"aws:transcribe/medicalVocabulary:MedicalVocabulary":0,"aws:transcribe/vocabulary:Vocabulary":0,"aws:transcribe/vocabularyFilter:VocabularyFilter":0,"aws:transfer/access:Access":0,"aws:transfer/agreement:Agreement":0,"aws:transfer/certificate:Certificate":0,"aws:transfer/connector:Connector":0,"aws:transfer/profile:Profile":0,"aws:transfer/server:Server":0,"aws:transfer/sshKey:SshKey":0,"aws:transfer/tag:Tag":0,"aws:transfer/user:User":0,"aws:transfer/workflow:Workflow":0,"aws:verifiedaccess/endpoint:Endpoint":0,"aws:verifiedaccess/group:Group":0,"aws:verifiedaccess/instance:Instance":0,"aws:verifiedaccess/instanceLoggingConfiguration:InstanceLoggingConfiguration":0,"aws:verifiedaccess/instanceTrustProviderAttachment:InstanceTrustProviderAttachment":0,"aws:verifiedaccess/trustProvider:TrustProvider":0,"aws:verifiedpermissions/identitySource:IdentitySource":1,"aws:verifiedpermissions/policy:Policy":1,"aws:verifiedpermissions/policyStore:PolicyStore":1,"aws:verifiedpermissions/policyTemplate:PolicyTemplate":1,"aws:verifiedpermissions/schema:Schema":1,"aws:vpc/endpointPrivateDns:EndpointPrivateDns":1,"aws:vpc/endpointServicePrivateDnsVerification:EndpointServicePrivateDnsVerification":1,"aws:vpc/securityGroupEgressRule:SecurityGroupEgressRule":1,"aws:vpc/securityGroupIngressRule:SecurityGroupIngressRule":1,"aws:vpclattice/accessLogSubscription:AccessLogSubscription":0,"aws:vpclattice/authPolicy:AuthPolicy":0,"aws:vpclattice/listener:Listener":0,"aws:vpclattice/listenerRule:ListenerRule":0,"aws:vpclattice/resourcePolicy:ResourcePolicy":0,"aws:vpclattice/service:Service":0,"aws:vpclattice/serviceNetwork:ServiceNetwork":0,"aws:vpclattice/serviceNetworkServiceAssociation:ServiceNetworkServiceAssociation":0,"aws:vpclattice/serviceNetworkVpcAssociation:ServiceNetworkVpcAssociation":0,"aws:vpclattice/targetGroup:TargetGroup":0,"aws:vpclattice/targetGroupAttachment:TargetGroupAttachment":0,"aws:waf/byteMatchSet:ByteMatchSet":0,"aws:waf/geoMatchSet:GeoMatchSet":0,"aws:waf/ipSet:IpSet":0,"aws:waf/rateBasedRule:RateBasedRule":0,"aws:waf/regexMatchSet:RegexMatchSet":0,"aws:waf/regexPatternSet:RegexPatternSet":0,"aws:waf/rule:Rule":0,"aws:waf/ruleGroup:RuleGroup":0,"aws:waf/sizeConstraintSet:SizeConstraintSet":0,"aws:waf/sqlInjectionMatchSet:SqlInjectionMatchSet":0,"aws:waf/webAcl:WebAcl":0,"aws:waf/xssMatchSet:XssMatchSet":0,"aws:wafregional/byteMatchSet:ByteMatchSet":0,"aws:wafregional/geoMatchSet:GeoMatchSet":0,"aws:wafregional/ipSet:IpSet":0,"aws:wafregional/rateBasedRule:RateBasedRule":0,"aws:wafregional/regexMatchSet:RegexMatchSet":0,"aws:wafregional/regexPatternSet:RegexPatternSet":0,"aws:wafregional/rule:Rule":0,"aws:wafregional/ruleGroup:RuleGroup":0,"aws:wafregional/sizeConstraintSet:SizeConstraintSet":0,"aws:wafregional/sqlInjectionMatchSet:SqlInjectionMatchSet":0,"aws:wafregional/webAcl:WebAcl":0,"aws:wafregional/webAclAssociation:WebAclAssociation":0,"aws:wafregional/xssMatchSet:XssMatchSet":0,"aws:wafv2/ipSet:IpSet":0,"aws:wafv2/regexPatternSet:RegexPatternSet":0,"aws:wafv2/ruleGroup:RuleGroup":0,"aws:wafv2/webAcl:WebAcl":0,"aws:wafv2/webAclAssociation:WebAclAssociation":0,"aws:wafv2/webAclLoggingConfiguration:WebAclLoggingConfiguration":0,"aws:worklink/fleet:Fleet":0,"aws:worklink/websiteCertificateAuthorityAssociation:WebsiteCertificateAuthorityAssociation":0,"aws:workspaces/connectionAlias:ConnectionAlias":1,"aws:workspaces/directory:Directory":0,"aws:workspaces/ipGroup:IpGroup":0,"aws:workspaces/workspace:Workspace":0,"aws:xray/encryptionConfig:EncryptionConfig":0,"aws:xray/group:Group":0,"aws:xray/samplingRule:SamplingRule":0},"functions":{"aws:acm/getCertificate:getCertificate":0,"aws:acmpca/getCertificate:getCertificate":0,"aws:acmpca/getCertificateAuthority:getCertificateAuthority":0,"aws:alb/getListener:getListener":0,"aws:alb/getLoadBalancer:getLoadBalancer":0,"aws:alb/getTargetGroup:getTargetGroup":0,"aws:amp/getDefaultScraperConfiguration:getDefaultScraperConfiguration":1,"aws:amp/getWorkspace:getWorkspace":0,"aws:amp/getWorkspaces:getWorkspaces":0,"aws:apigateway/getAuthorizer:getAuthorizer":0,"aws:apigateway/getAuthorizers:getAuthorizers":0,"aws:apigateway/getDomainName:getDomainName":0,"aws:apigateway/getExport:getExport":0,"aws:apigateway/getKey:getKey":0,"aws:apigateway/getResource:getResource":0,"aws:apigateway/getRestApi:getRestApi":0,"aws:apigateway/getSdk:getSdk":0,"aws:apigateway/getVpcLink:getVpcLink":0,"aws:apigatewayv2/getApi:getApi":0,"aws:apigatewayv2/getApis:getApis":0,"aws:apigatewayv2/getExport:getExport":0,"aws:apigatewayv2/getVpcLink:getVpcLink":0,"aws:appconfig/getConfigurationProfile:getConfigurationProfile":0,"aws:appconfig/getConfigurationProfiles:getConfigurationProfiles":0,"aws:appconfig/getEnvironment:getEnvironment":0,"aws:appconfig/getEnvironments:getEnvironments":0,"aws:appintegrations/getEventIntegration:getEventIntegration":0,"aws:appmesh/getGatewayRoute:getGatewayRoute":0,"aws:appmesh/getMesh:getMesh":0,"aws:appmesh/getRoute:getRoute":0,"aws:appmesh/getVirtualGateway:getVirtualGateway":0,"aws:appmesh/getVirtualNode:getVirtualNode":0,"aws:appmesh/getVirtualRouter:getVirtualRouter":0,"aws:appmesh/getVirtualService:getVirtualService":0,"aws:apprunner/getHostedZoneId:getHostedZoneId":1,"aws:appstream/getImage:getImage":1,"aws:athena/getNamedQuery:getNamedQuery":0,"aws:auditmanager/getControl:getControl":1,"aws:auditmanager/getFramework:getFramework":1,"aws:autoscaling/getAmiIds:getAmiIds":0,"aws:autoscaling/getGroup:getGroup":0,"aws:backup/getFramework:getFramework":0,"aws:backup/getPlan:getPlan":0,"aws:backup/getReportPlan:getReportPlan":0,"aws:backup/getSelection:getSelection":0,"aws:backup/getVault:getVault":0,"aws:batch/getComputeEnvironment:getComputeEnvironment":0,"aws:batch/getJobDefinition:getJobDefinition":1,"aws:batch/getJobQueue:getJobQueue":0,"aws:batch/getSchedulingPolicy:getSchedulingPolicy":0,"aws:bedrock/getAgentAgentVersions:getAgentAgentVersions":1,"aws:bedrock/getCustomModel:getCustomModel":1,"aws:bedrock/getCustomModels:getCustomModels":1,"aws:bedrock/getInferenceProfile:getInferenceProfile":1,"aws:bedrock/getInferenceProfiles:getInferenceProfiles":1,"aws:bedrockfoundation/getModel:getModel":1,"aws:bedrockfoundation/getModels:getModels":1,"aws:budgets/getBudget:getBudget":0,"aws:chatbot/getSlackWorkspace:getSlackWorkspace":1,"aws:cloudcontrol/getResource:getResource":0,"aws:cloudformation/getCloudFormationType:getCloudFormationType":0,"aws:cloudformation/getExport:getExport":0,"aws:cloudformation/getStack:getStack":0,"aws:cloudfront/getCachePolicy:getCachePolicy":0,"aws:cloudfront/getDistribution:getDistribution":0,"aws:cloudfront/getFunction:getFunction":0,"aws:cloudfront/getLogDeliveryCanonicalUserId:getLogDeliveryCanonicalUserId":0,"aws:cloudfront/getOriginAccessControl:getOriginAccessControl":1,"aws:cloudfront/getOriginAccessIdentities:getOriginAccessIdentities":0,"aws:cloudfront/getOriginAccessIdentity:getOriginAccessIdentity":0,"aws:cloudfront/getOriginRequestPolicy:getOriginRequestPolicy":0,"aws:cloudfront/getRealtimeLogConfig:getRealtimeLogConfig":0,"aws:cloudfront/getResponseHeadersPolicy:getResponseHeadersPolicy":0,"aws:cloudhsmv2/getCluster:getCluster":0,"aws:cloudtrail/getServiceAccount:getServiceAccount":0,"aws:cloudwatch/getEventBus:getEventBus":0,"aws:cloudwatch/getEventConnection:getEventConnection":0,"aws:cloudwatch/getEventSource:getEventSource":0,"aws:cloudwatch/getLogDataProtectionPolicyDocument:getLogDataProtectionPolicyDocument":0,"aws:cloudwatch/getLogGroup:getLogGroup":0,"aws:cloudwatch/getLogGroups:getLogGroups":0,"aws:codeartifact/getAuthorizationToken:getAuthorizationToken":0,"aws:codeartifact/getRepositoryEndpoint:getRepositoryEndpoint":0,"aws:codebuild/getFleet:getFleet":0,"aws:codecatalyst/getDevEnvironment:getDevEnvironment":0,"aws:codecommit/getApprovalRuleTemplate:getApprovalRuleTemplate":0,"aws:codecommit/getRepository:getRepository":0,"aws:codeguruprofiler/getProfilingGroup:getProfilingGroup":1,"aws:codestarconnections/getConnection:getConnection":0,"aws:cognito/getIdentityPool:getIdentityPool":0,"aws:cognito/getUserGroup:getUserGroup":1,"aws:cognito/getUserGroups:getUserGroups":1,"aws:cognito/getUserPool:getUserPool":1,"aws:cognito/getUserPoolClient:getUserPoolClient":0,"aws:cognito/getUserPoolClients:getUserPoolClients":0,"aws:cognito/getUserPoolSigningCertificate:getUserPoolSigningCertificate":0,"aws:cognito/getUserPools:getUserPools":0,"aws:connect/getBotAssociation:getBotAssociation":0,"aws:connect/getContactFlow:getContactFlow":0,"aws:connect/getContactFlowModule:getContactFlowModule":0,"aws:connect/getHoursOfOperation:getHoursOfOperation":0,"aws:connect/getInstance:getInstance":0,"aws:connect/getInstanceStorageConfig:getInstanceStorageConfig":0,"aws:connect/getLambdaFunctionAssociation:getLambdaFunctionAssociation":0,"aws:connect/getPrompt:getPrompt":0,"aws:connect/getQueue:getQueue":0,"aws:connect/getQuickConnect:getQuickConnect":0,"aws:connect/getRoutingProfile:getRoutingProfile":0,"aws:connect/getSecurityProfile:getSecurityProfile":0,"aws:connect/getUser:getUser":0,"aws:connect/getUserHierarchyGroup:getUserHierarchyGroup":0,"aws:connect/getUserHierarchyStructure:getUserHierarchyStructure":0,"aws:connect/getVocabulary:getVocabulary":0,"aws:controltower/getControls:getControls":0,"aws:costexplorer/getCostCategory:getCostCategory":0,"aws:costexplorer/getTags:getTags":0,"aws:cur/getReportDefinition:getReportDefinition":0,"aws:datapipeline/getPipeline:getPipeline":0,"aws:datapipeline/getPipelineDefinition:getPipelineDefinition":0,"aws:datazone/getEnvironmentBlueprint:getEnvironmentBlueprint":1,"aws:devopsguru/getNotificationChannel:getNotificationChannel":1,"aws:devopsguru/getResourceCollection:getResourceCollection":1,"aws:directconnect/getConnection:getConnection":0,"aws:directconnect/getGateway:getGateway":0,"aws:directconnect/getLocation:getLocation":0,"aws:directconnect/getLocations:getLocations":0,"aws:directconnect/getRouterConfiguration:getRouterConfiguration":0,"aws:directoryservice/getDirectory:getDirectory":0,"aws:dms/getCertificate:getCertificate":0,"aws:dms/getEndpoint:getEndpoint":0,"aws:dms/getReplicationInstance:getReplicationInstance":0,"aws:dms/getReplicationSubnetGroup:getReplicationSubnetGroup":0,"aws:dms/getReplicationTask:getReplicationTask":0,"aws:docdb/getEngineVersion:getEngineVersion":0,"aws:docdb/getOrderableDbInstance:getOrderableDbInstance":0,"aws:dynamodb/getTable:getTable":0,"aws:dynamodb/getTableItem:getTableItem":0,"aws:ebs/getDefaultKmsKey:getDefaultKmsKey":0,"aws:ebs/getEbsVolumes:getEbsVolumes":0,"aws:ebs/getEncryptionByDefault:getEncryptionByDefault":0,"aws:ebs/getSnapshot:getSnapshot":0,"aws:ebs/getSnapshotIds:getSnapshotIds":0,"aws:ebs/getVolume:getVolume":0,"aws:ec2/getAmi:getAmi":0,"aws:ec2/getAmiIds:getAmiIds":0,"aws:ec2/getCapacityBlockOffering:getCapacityBlockOffering":1,"aws:ec2/getCoipPool:getCoipPool":0,"aws:ec2/getCoipPools:getCoipPools":0,"aws:ec2/getCustomerGateway:getCustomerGateway":0,"aws:ec2/getDedicatedHost:getDedicatedHost":0,"aws:ec2/getEips:getEips":0,"aws:ec2/getElasticIp:getElasticIp":0,"aws:ec2/getInstance:getInstance":0,"aws:ec2/getInstanceType:getInstanceType":0,"aws:ec2/getInstanceTypeOffering:getInstanceTypeOffering":0,"aws:ec2/getInstanceTypeOfferings:getInstanceTypeOfferings":0,"aws:ec2/getInstanceTypes:getInstanceTypes":0,"aws:ec2/getInstances:getInstances":0,"aws:ec2/getInternetGateway:getInternetGateway":0,"aws:ec2/getIpamPreviewNextCidr:getIpamPreviewNextCidr":0,"aws:ec2/getKeyPair:getKeyPair":0,"aws:ec2/getLaunchConfiguration:getLaunchConfiguration":0,"aws:ec2/getLaunchTemplate:getLaunchTemplate":0,"aws:ec2/getLocalGateway:getLocalGateway":0,"aws:ec2/getLocalGatewayRouteTable:getLocalGatewayRouteTable":0,"aws:ec2/getLocalGatewayRouteTables:getLocalGatewayRouteTables":0,"aws:ec2/getLocalGatewayVirtualInterface:getLocalGatewayVirtualInterface":0,"aws:ec2/getLocalGatewayVirtualInterfaceGroup:getLocalGatewayVirtualInterfaceGroup":0,"aws:ec2/getLocalGatewayVirtualInterfaceGroups:getLocalGatewayVirtualInterfaceGroups":0,"aws:ec2/getLocalGateways:getLocalGateways":0,"aws:ec2/getManagedPrefixList:getManagedPrefixList":0,"aws:ec2/getManagedPrefixLists:getManagedPrefixLists":0,"aws:ec2/getNatGateway:getNatGateway":0,"aws:ec2/getNatGateways:getNatGateways":0,"aws:ec2/getNetworkAcls:getNetworkAcls":0,"aws:ec2/getNetworkInsightsAnalysis:getNetworkInsightsAnalysis":0,"aws:ec2/getNetworkInsightsPath:getNetworkInsightsPath":0,"aws:ec2/getNetworkInterface:getNetworkInterface":0,"aws:ec2/getNetworkInterfaces:getNetworkInterfaces":0,"aws:ec2/getPrefixList:getPrefixList":0,"aws:ec2/getPublicIpv4Pool:getPublicIpv4Pool":0,"aws:ec2/getPublicIpv4Pools:getPublicIpv4Pools":0,"aws:ec2/getRoute:getRoute":0,"aws:ec2/getRouteTable:getRouteTable":0,"aws:ec2/getRouteTables:getRouteTables":0,"aws:ec2/getSecurityGroup:getSecurityGroup":0,"aws:ec2/getSecurityGroups:getSecurityGroups":0,"aws:ec2/getSerialConsoleAccess:getSerialConsoleAccess":0,"aws:ec2/getSpotPrice:getSpotPrice":0,"aws:ec2/getSubnet:getSubnet":0,"aws:ec2/getSubnets:getSubnets":0,"aws:ec2/getTransitGatewayRouteTables:getTransitGatewayRouteTables":0,"aws:ec2/getVpc:getVpc":0,"aws:ec2/getVpcDhcpOptions:getVpcDhcpOptions":0,"aws:ec2/getVpcEndpoint:getVpcEndpoint":0,"aws:ec2/getVpcEndpointService:getVpcEndpointService":0,"aws:ec2/getVpcIamPool:getVpcIamPool":0,"aws:ec2/getVpcIamPoolCidrs:getVpcIamPoolCidrs":0,"aws:ec2/getVpcIamPools:getVpcIamPools":0,"aws:ec2/getVpcIpamPool:getVpcIpamPool":0,"aws:ec2/getVpcIpamPoolCidrs:getVpcIpamPoolCidrs":0,"aws:ec2/getVpcIpamPools:getVpcIpamPools":0,"aws:ec2/getVpcPeeringConnection:getVpcPeeringConnection":0,"aws:ec2/getVpcPeeringConnections:getVpcPeeringConnections":0,"aws:ec2/getVpcs:getVpcs":0,"aws:ec2/getVpnGateway:getVpnGateway":0,"aws:ec2clientvpn/getEndpoint:getEndpoint":0,"aws:ec2transitgateway/getAttachment:getAttachment":0,"aws:ec2transitgateway/getAttachments:getAttachments":0,"aws:ec2transitgateway/getConnect:getConnect":0,"aws:ec2transitgateway/getConnectPeer:getConnectPeer":0,"aws:ec2transitgateway/getDirectConnectGatewayAttachment:getDirectConnectGatewayAttachment":0,"aws:ec2transitgateway/getMulticastDomain:getMulticastDomain":0,"aws:ec2transitgateway/getPeeringAttachment:getPeeringAttachment":0,"aws:ec2transitgateway/getPeeringAttachments:getPeeringAttachments":0,"aws:ec2transitgateway/getRouteTable:getRouteTable":0,"aws:ec2transitgateway/getRouteTableAssociations:getRouteTableAssociations":0,"aws:ec2transitgateway/getRouteTablePropagations:getRouteTablePropagations":0,"aws:ec2transitgateway/getRouteTableRoutes:getRouteTableRoutes":0,"aws:ec2transitgateway/getTransitGateway:getTransitGateway":0,"aws:ec2transitgateway/getVpcAttachment:getVpcAttachment":0,"aws:ec2transitgateway/getVpcAttachments:getVpcAttachments":0,"aws:ec2transitgateway/getVpnAttachment:getVpnAttachment":0,"aws:ecr/getAuthorizationToken:getAuthorizationToken":0,"aws:ecr/getCredentials:getCredentials":0,"aws:ecr/getImage:getImage":0,"aws:ecr/getLifecyclePolicyDocument:getLifecyclePolicyDocument":1,"aws:ecr/getPullThroughCacheRule:getPullThroughCacheRule":0,"aws:ecr/getRepositories:getRepositories":1,"aws:ecr/getRepository:getRepository":0,"aws:ecr/getRepositoryCreationTemplate:getRepositoryCreationTemplate":0,"aws:ecrpublic/getAuthorizationToken:getAuthorizationToken":0,"aws:ecs/getCluster:getCluster":0,"aws:ecs/getContainerDefinition:getContainerDefinition":0,"aws:ecs/getService:getService":0,"aws:ecs/getTaskDefinition:getTaskDefinition":0,"aws:ecs/getTaskExecution:getTaskExecution":0,"aws:efs/getAccessPoint:getAccessPoint":0,"aws:efs/getAccessPoints:getAccessPoints":0,"aws:efs/getFileSystem:getFileSystem":0,"aws:efs/getMountTarget:getMountTarget":0,"aws:eks/getAccessEntry:getAccessEntry":0,"aws:eks/getAddon:getAddon":0,"aws:eks/getAddonVersion:getAddonVersion":0,"aws:eks/getCluster:getCluster":0,"aws:eks/getClusterAuth:getClusterAuth":0,"aws:eks/getClusters:getClusters":0,"aws:eks/getNodeGroup:getNodeGroup":0,"aws:eks/getNodeGroups:getNodeGroups":0,"aws:elasticache/getCluster:getCluster":0,"aws:elasticache/getReplicationGroup:getReplicationGroup":0,"aws:elasticache/getReservedCacheNodeOffering:getReservedCacheNodeOffering":1,"aws:elasticache/getServerlessCache:getServerlessCache":1,"aws:elasticache/getSubnetGroup:getSubnetGroup":0,"aws:elasticache/getUser:getUser":0,"aws:elasticbeanstalk/getApplication:getApplication":0,"aws:elasticbeanstalk/getHostedZone:getHostedZone":0,"aws:elasticbeanstalk/getSolutionStack:getSolutionStack":0,"aws:elasticsearch/getDomain:getDomain":0,"aws:elb/getHostedZoneId:getHostedZoneId":0,"aws:elb/getLoadBalancer:getLoadBalancer":0,"aws:elb/getServiceAccount:getServiceAccount":0,"aws:emr/getReleaseLabels:getReleaseLabels":0,"aws:emr/getSupportedInstanceTypes:getSupportedInstanceTypes":1,"aws:emrcontainers/getVirtualCluster:getVirtualCluster":0,"aws:fsx/getOntapFileSystem:getOntapFileSystem":0,"aws:fsx/getOntapStorageVirtualMachine:getOntapStorageVirtualMachine":0,"aws:fsx/getOntapStorageVirtualMachines:getOntapStorageVirtualMachines":0,"aws:fsx/getOpenZfsSnapshot:getOpenZfsSnapshot":0,"aws:fsx/getWindowsFileSystem:getWindowsFileSystem":0,"aws:globalaccelerator/getAccelerator:getAccelerator":1,"aws:globalaccelerator/getCustomRoutingAccelerator:getCustomRoutingAccelerator":0,"aws:glue/getCatalogTable:getCatalogTable":0,"aws:glue/getConnection:getConnection":0,"aws:glue/getDataCatalogEncryptionSettings:getDataCatalogEncryptionSettings":0,"aws:glue/getRegistry:getRegistry":1,"aws:glue/getScript:getScript":0,"aws:grafana/getWorkspace:getWorkspace":0,"aws:guardduty/getDetector:getDetector":0,"aws:guardduty/getFindingIds:getFindingIds":1,"aws:iam/getAccessKeys:getAccessKeys":0,"aws:iam/getAccountAlias:getAccountAlias":0,"aws:iam/getGroup:getGroup":0,"aws:iam/getInstanceProfile:getInstanceProfile":0,"aws:iam/getInstanceProfiles:getInstanceProfiles":0,"aws:iam/getOpenIdConnectProvider:getOpenIdConnectProvider":0,"aws:iam/getPolicy:getPolicy":0,"aws:iam/getPolicyDocument:getPolicyDocument":0,"aws:iam/getPrincipalPolicySimulation:getPrincipalPolicySimulation":0,"aws:iam/getRole:getRole":0,"aws:iam/getRoles:getRoles":0,"aws:iam/getSamlProvider:getSamlProvider":0,"aws:iam/getServerCertificate:getServerCertificate":0,"aws:iam/getSessionContext:getSessionContext":0,"aws:iam/getUser:getUser":0,"aws:iam/getUserSshKey:getUserSshKey":0,"aws:iam/getUsers:getUsers":0,"aws:identitystore/getGroup:getGroup":0,"aws:identitystore/getGroups:getGroups":1,"aws:identitystore/getUser:getUser":0,"aws:imagebuilder/getComponent:getComponent":0,"aws:imagebuilder/getComponents:getComponents":0,"aws:imagebuilder/getContainerRecipe:getContainerRecipe":0,"aws:imagebuilder/getContainerRecipes:getContainerRecipes":0,"aws:imagebuilder/getDistributionConfiguration:getDistributionConfiguration":0,"aws:imagebuilder/getDistributionConfigurations:getDistributionConfigurations":0,"aws:imagebuilder/getImage:getImage":0,"aws:imagebuilder/getImagePipeline:getImagePipeline":0,"aws:imagebuilder/getImagePipelines:getImagePipelines":0,"aws:imagebuilder/getImageRecipe:getImageRecipe":0,"aws:imagebuilder/getImageRecipes:getImageRecipes":0,"aws:imagebuilder/getInfrastructureConfiguration:getInfrastructureConfiguration":0,"aws:imagebuilder/getInfrastructureConfigurations:getInfrastructureConfigurations":0,"aws:index/getArn:getArn":1,"aws:index/getAvailabilityZone:getAvailabilityZone":0,"aws:index/getAvailabilityZones:getAvailabilityZones":0,"aws:index/getBillingServiceAccount:getBillingServiceAccount":1,"aws:index/getCallerIdentity:getCallerIdentity":1,"aws:index/getDefaultTags:getDefaultTags":1,"aws:index/getIpRanges:getIpRanges":1,"aws:index/getPartition:getPartition":1,"aws:index/getRegion:getRegion":1,"aws:index/getRegions:getRegions":1,"aws:index/getService:getService":1,"aws:index/getServicePrincipal:getServicePrincipal":1,"aws:inspector/getRulesPackages:getRulesPackages":0,"aws:iot/getEndpoint:getEndpoint":0,"aws:iot/getRegistrationCode:getRegistrationCode":0,"aws:ivs/getStreamKey:getStreamKey":0,"aws:kendra/getExperience:getExperience":0,"aws:kendra/getFaq:getFaq":0,"aws:kendra/getIndex:getIndex":0,"aws:kendra/getQuerySuggestionsBlockList:getQuerySuggestionsBlockList":0,"aws:kendra/getThesaurus:getThesaurus":0,"aws:kinesis/getFirehoseDeliveryStream:getFirehoseDeliveryStream":0,"aws:kinesis/getStream:getStream":0,"aws:kinesis/getStreamConsumer:getStreamConsumer":0,"aws:kms/getAlias:getAlias":0,"aws:kms/getCipherText:getCipherText":0,"aws:kms/getCustomKeyStore:getCustomKeyStore":0,"aws:kms/getKey:getKey":0,"aws:kms/getPublicKey:getPublicKey":0,"aws:kms/getSecret:getSecret":0,"aws:kms/getSecrets:getSecrets":0,"aws:lakeformation/getDataLakeSettings:getDataLakeSettings":0,"aws:lakeformation/getPermissions:getPermissions":0,"aws:lakeformation/getResource:getResource":0,"aws:lambda/getAlias:getAlias":0,"aws:lambda/getCodeSigningConfig:getCodeSigningConfig":0,"aws:lambda/getFunction:getFunction":0,"aws:lambda/getFunctionUrl:getFunctionUrl":0,"aws:lambda/getFunctions:getFunctions":0,"aws:lambda/getInvocation:getInvocation":0,"aws:lambda/getLayerVersion:getLayerVersion":0,"aws:lb/getHostedZoneId:getHostedZoneId":0,"aws:lb/getLbs:getLbs":0,"aws:lb/getListener:getListener":0,"aws:lb/getLoadBalancer:getLoadBalancer":0,"aws:lb/getTargetGroup:getTargetGroup":0,"aws:lb/getTrustStore:getTrustStore":0,"aws:lex/getBot:getBot":0,"aws:lex/getBotAlias:getBotAlias":0,"aws:lex/getIntent:getIntent":0,"aws:lex/getSlotType:getSlotType":0,"aws:licensemanager/getLicenseGrants:getLicenseGrants":0,"aws:licensemanager/getReceivedLicense:getReceivedLicense":0,"aws:licensemanager/getReceivedLicenses:getReceivedLicenses":0,"aws:location/getGeofenceCollection:getGeofenceCollection":0,"aws:location/getMap:getMap":0,"aws:location/getPlaceIndex:getPlaceIndex":0,"aws:location/getRouteCalculator:getRouteCalculator":0,"aws:location/getTracker:getTracker":0,"aws:location/getTrackerAssociation:getTrackerAssociation":0,"aws:location/getTrackerAssociations:getTrackerAssociations":0,"aws:mediaconvert/getQueue:getQueue":0,"aws:medialive/getInput:getInput":1,"aws:memorydb/getAcl:getAcl":0,"aws:memorydb/getCluster:getCluster":0,"aws:memorydb/getParameterGroup:getParameterGroup":0,"aws:memorydb/getSnapshot:getSnapshot":0,"aws:memorydb/getSubnetGroup:getSubnetGroup":0,"aws:memorydb/getUser:getUser":0,"aws:mq/getBroker:getBroker":0,"aws:mq/getBrokerEngineTypes:getBrokerEngineTypes":0,"aws:mq/getInstanceTypeOfferings:getInstanceTypeOfferings":0,"aws:msk/getBootstrapBrokers:getBootstrapBrokers":0,"aws:msk/getBrokerNodes:getBrokerNodes":0,"aws:msk/getCluster:getCluster":0,"aws:msk/getConfiguration:getConfiguration":0,"aws:msk/getKafkaVersion:getKafkaVersion":0,"aws:msk/getVpcConnection:getVpcConnection":0,"aws:mskconnect/getConnector:getConnector":0,"aws:mskconnect/getCustomPlugin:getCustomPlugin":0,"aws:mskconnect/getWorkerConfiguration:getWorkerConfiguration":0,"aws:neptune/getEngineVersion:getEngineVersion":0,"aws:neptune/getOrderableDbInstance:getOrderableDbInstance":0,"aws:networkfirewall/getFirewall:getFirewall":0,"aws:networkfirewall/getFirewallPolicy:getFirewallPolicy":0,"aws:networkfirewall/getResourcePolicy:getResourcePolicy":0,"aws:networkmanager/getConnection:getConnection":0,"aws:networkmanager/getConnections:getConnections":0,"aws:networkmanager/getCoreNetworkPolicyDocument:getCoreNetworkPolicyDocument":0,"aws:networkmanager/getDevice:getDevice":0,"aws:networkmanager/getDevices:getDevices":0,"aws:networkmanager/getGlobalNetwork:getGlobalNetwork":0,"aws:networkmanager/getGlobalNetworks:getGlobalNetworks":0,"aws:networkmanager/getLink:getLink":0,"aws:networkmanager/getLinks:getLinks":0,"aws:networkmanager/getSite:getSite":0,"aws:networkmanager/getSites:getSites":0,"aws:oam/getLink:getLink":0,"aws:oam/getLinks:getLinks":0,"aws:oam/getSink:getSink":0,"aws:oam/getSinks:getSinks":0,"aws:opensearch/getDomain:getDomain":0,"aws:opensearch/getServerlessAccessPolicy:getServerlessAccessPolicy":1,"aws:opensearch/getServerlessCollection:getServerlessCollection":1,"aws:opensearch/getServerlessLifecyclePolicy:getServerlessLifecyclePolicy":1,"aws:opensearch/getServerlessSecurityConfig:getServerlessSecurityConfig":1,"aws:opensearch/getServerlessSecurityPolicy:getServerlessSecurityPolicy":0,"aws:opensearch/getServerlessVpcEndpoint:getServerlessVpcEndpoint":0,"aws:organizations/getDelegatedAdministrators:getDelegatedAdministrators":0,"aws:organizations/getDelegatedServices:getDelegatedServices":0,"aws:organizations/getOrganization:getOrganization":0,"aws:organizations/getOrganizationalUnit:getOrganizationalUnit":0,"aws:organizations/getOrganizationalUnitChildAccounts:getOrganizationalUnitChildAccounts":0,"aws:organizations/getOrganizationalUnitDescendantAccounts:getOrganizationalUnitDescendantAccounts":0,"aws:organizations/getOrganizationalUnitDescendantOrganizationalUnits:getOrganizationalUnitDescendantOrganizationalUnits":0,"aws:organizations/getOrganizationalUnits:getOrganizationalUnits":0,"aws:organizations/getPolicies:getPolicies":0,"aws:organizations/getPoliciesForTarget:getPoliciesForTarget":0,"aws:organizations/getPolicy:getPolicy":0,"aws:organizations/getResourceTags:getResourceTags":0,"aws:outposts/getAsset:getAsset":0,"aws:outposts/getAssets:getAssets":0,"aws:outposts/getOutpost:getOutpost":0,"aws:outposts/getOutpostInstanceType:getOutpostInstanceType":0,"aws:outposts/getOutpostInstanceTypes:getOutpostInstanceTypes":0,"aws:outposts/getOutposts:getOutposts":0,"aws:outposts/getSite:getSite":0,"aws:outposts/getSites:getSites":0,"aws:polly/getVoices:getVoices":1,"aws:pricing/getProduct:getProduct":0,"aws:qldb/getLedger:getLedger":0,"aws:quicksight/getAnalysis:getAnalysis":0,"aws:quicksight/getDataSet:getDataSet":0,"aws:quicksight/getQuicksightAnalysis:getQuicksightAnalysis":0,"aws:quicksight/getQuicksightGroup:getQuicksightGroup":0,"aws:quicksight/getQuicksightUser:getQuicksightUser":0,"aws:quicksight/getTheme:getTheme":0,"aws:ram/getResourceShare:getResourceShare":0,"aws:rds/getCertificate:getCertificate":0,"aws:rds/getCluster:getCluster":0,"aws:rds/getClusterParameterGroup:getClusterParameterGroup":1,"aws:rds/getClusterSnapshot:getClusterSnapshot":0,"aws:rds/getClusters:getClusters":0,"aws:rds/getEngineVersion:getEngineVersion":0,"aws:rds/getEventCategories:getEventCategories":0,"aws:rds/getInstance:getInstance":0,"aws:rds/getInstances:getInstances":0,"aws:rds/getOrderableDbInstance:getOrderableDbInstance":0,"aws:rds/getParameterGroup:getParameterGroup":0,"aws:rds/getProxy:getProxy":0,"aws:rds/getReservedInstanceOffering:getReservedInstanceOffering":0,"aws:rds/getSnapshot:getSnapshot":0,"aws:rds/getSubnetGroup:getSubnetGroup":0,"aws:redshift/getCluster:getCluster":0,"aws:redshift/getClusterCredentials:getClusterCredentials":0,"aws:redshift/getDataShares:getDataShares":1,"aws:redshift/getOrderableCluster:getOrderableCluster":0,"aws:redshift/getProducerDataShares:getProducerDataShares":1,"aws:redshift/getServiceAccount:getServiceAccount":0,"aws:redshift/getSubnetGroup:getSubnetGroup":0,"aws:redshiftserverless/getCredentials:getCredentials":0,"aws:redshiftserverless/getNamespace:getNamespace":0,"aws:redshiftserverless/getWorkgroup:getWorkgroup":0,"aws:resourceexplorer/search:Search":1,"aws:resourcegroupstaggingapi/getResources:getResources":0,"aws:route53/getDelegationSet:getDelegationSet":0,"aws:route53/getProfilesProfiles:getProfilesProfiles":1,"aws:route53/getQueryLogConfig:getQueryLogConfig":0,"aws:route53/getResolverEndpoint:getResolverEndpoint":0,"aws:route53/getResolverFirewallConfig:getResolverFirewallConfig":0,"aws:route53/getResolverFirewallDomainList:getResolverFirewallDomainList":0,"aws:route53/getResolverFirewallRuleGroup:getResolverFirewallRuleGroup":0,"aws:route53/getResolverFirewallRuleGroupAssociation:getResolverFirewallRuleGroupAssociation":0,"aws:route53/getResolverFirewallRules:getResolverFirewallRules":0,"aws:route53/getResolverRule:getResolverRule":0,"aws:route53/getResolverRules:getResolverRules":0,"aws:route53/getTrafficPolicyDocument:getTrafficPolicyDocument":0,"aws:route53/getZone:getZone":0,"aws:route53/getZones:getZones":1,"aws:s3/getAccountPublicAccessBlock:getAccountPublicAccessBlock":0,"aws:s3/getBucket:getBucket":0,"aws:s3/getBucketObject:getBucketObject":0,"aws:s3/getBucketObjects:getBucketObjects":0,"aws:s3/getBucketPolicy:getBucketPolicy":0,"aws:s3/getCanonicalUserId:getCanonicalUserId":0,"aws:s3/getDirectoryBuckets:getDirectoryBuckets":1,"aws:s3/getObject:getObject":0,"aws:s3/getObjects:getObjects":0,"aws:s3control/getMultiRegionAccessPoint:getMultiRegionAccessPoint":0,"aws:sagemaker/getPrebuiltEcrImage:getPrebuiltEcrImage":0,"aws:secretsmanager/getRandomPassword:getRandomPassword":0,"aws:secretsmanager/getSecret:getSecret":0,"aws:secretsmanager/getSecretRotation:getSecretRotation":0,"aws:secretsmanager/getSecretVersion:getSecretVersion":0,"aws:secretsmanager/getSecretVersions:getSecretVersions":1,"aws:secretsmanager/getSecrets:getSecrets":0,"aws:securityhub/getStandardsControlAssociations:getStandardsControlAssociations":1,"aws:serverlessrepository/getApplication:getApplication":0,"aws:servicecatalog/getAppregistryApplication:getAppregistryApplication":1,"aws:servicecatalog/getConstraint:getConstraint":0,"aws:servicecatalog/getLaunchPaths:getLaunchPaths":0,"aws:servicecatalog/getPortfolio:getPortfolio":0,"aws:servicecatalog/getPortfolioConstraints:getPortfolioConstraints":0,"aws:servicecatalog/getProduct:getProduct":0,"aws:servicecatalog/getProvisioningArtifacts:getProvisioningArtifacts":0,"aws:servicediscovery/getDnsNamespace:getDnsNamespace":0,"aws:servicediscovery/getHttpNamespace:getHttpNamespace":0,"aws:servicediscovery/getService:getService":0,"aws:servicequotas/getService:getService":0,"aws:servicequotas/getServiceQuota:getServiceQuota":0,"aws:servicequotas/getTemplates:getTemplates":1,"aws:ses/getActiveReceiptRuleSet:getActiveReceiptRuleSet":0,"aws:ses/getDomainIdentity:getDomainIdentity":0,"aws:ses/getEmailIdentity:getEmailIdentity":0,"aws:sesv2/getConfigurationSet:getConfigurationSet":0,"aws:sesv2/getDedicatedIpPool:getDedicatedIpPool":0,"aws:sesv2/getEmailIdentity:getEmailIdentity":0,"aws:sesv2/getEmailIdentityMailFromAttributes:getEmailIdentityMailFromAttributes":0,"aws:sfn/getActivity:getActivity":0,"aws:sfn/getAlias:getAlias":0,"aws:sfn/getStateMachine:getStateMachine":0,"aws:sfn/getStateMachineVersions:getStateMachineVersions":0,"aws:shield/getProtection:getProtection":1,"aws:signer/getSigningJob:getSigningJob":0,"aws:signer/getSigningProfile:getSigningProfile":0,"aws:sns/getTopic:getTopic":0,"aws:sqs/getQueue:getQueue":0,"aws:sqs/getQueues:getQueues":0,"aws:ssm/getContactsRotation:getContactsRotation":1,"aws:ssm/getDocument:getDocument":0,"aws:ssm/getInstances:getInstances":0,"aws:ssm/getMaintenanceWindows:getMaintenanceWindows":0,"aws:ssm/getParameter:getParameter":0,"aws:ssm/getParametersByPath:getParametersByPath":0,"aws:ssm/getPatchBaseline:getPatchBaseline":0,"aws:ssm/getPatchBaselines:getPatchBaselines":1,"aws:ssmcontacts/getContact:getContact":0,"aws:ssmcontacts/getContactChannel:getContactChannel":0,"aws:ssmcontacts/getPlan:getPlan":0,"aws:ssmincidents/getReplicationSet:getReplicationSet":0,"aws:ssmincidents/getResponsePlan:getResponsePlan":0,"aws:ssoadmin/getApplication:getApplication":1,"aws:ssoadmin/getApplicationAssignments:getApplicationAssignments":1,"aws:ssoadmin/getApplicationProviders:getApplicationProviders":1,"aws:ssoadmin/getInstances:getInstances":0,"aws:ssoadmin/getPermissionSet:getPermissionSet":0,"aws:ssoadmin/getPermissionSets:getPermissionSets":1,"aws:ssoadmin/getPrincipalApplicationAssignments:getPrincipalApplicationAssignments":1,"aws:storagegateway/getLocalDisk:getLocalDisk":0,"aws:synthetics/getRuntimeVersion:getRuntimeVersion":1,"aws:synthetics/getRuntimeVersions:getRuntimeVersions":1,"aws:timestreamwrite/getDatabase:getDatabase":1,"aws:timestreamwrite/getTable:getTable":1,"aws:transfer/getConnector:getConnector":1,"aws:transfer/getServer:getServer":0,"aws:verifiedpermissions/getPolicyStore:getPolicyStore":1,"aws:vpc/getSecurityGroupRule:getSecurityGroupRule":1,"aws:vpc/getSecurityGroupRules:getSecurityGroupRules":1,"aws:vpclattice/getAuthPolicy:getAuthPolicy":0,"aws:vpclattice/getListener:getListener":0,"aws:vpclattice/getResourcePolicy:getResourcePolicy":0,"aws:vpclattice/getService:getService":0,"aws:vpclattice/getServiceNetwork:getServiceNetwork":0,"aws:waf/getIpset:getIpset":0,"aws:waf/getRateBasedRule:getRateBasedRule":0,"aws:waf/getRule:getRule":0,"aws:waf/getSubscribedRuleGroup:getSubscribedRuleGroup":0,"aws:waf/getWebAcl:getWebAcl":0,"aws:wafregional/getIpset:getIpset":0,"aws:wafregional/getRateBasedMod:getRateBasedMod":0,"aws:wafregional/getRule:getRule":0,"aws:wafregional/getSubscribedRuleGroup:getSubscribedRuleGroup":0,"aws:wafregional/getWebAcl:getWebAcl":0,"aws:wafv2/getIpSet:getIpSet":0,"aws:wafv2/getRegexPatternSet:getRegexPatternSet":0,"aws:wafv2/getRuleGroup:getRuleGroup":0,"aws:wafv2/getWebAcl:getWebAcl":0,"aws:workspaces/getBundle:getBundle":0,"aws:workspaces/getDirectory:getDirectory":0,"aws:workspaces/getImage:getImage":0,"aws:workspaces/getWorkspace:getWorkspace":0}}}
\ No newline at end of file
diff --git a/provider/cmd/pulumi-resource-aws/schema-minimal.json b/provider/cmd/pulumi-resource-aws/schema-minimal.json
index 5443bbede05..692e9171408 100644
--- a/provider/cmd/pulumi-resource-aws/schema-minimal.json
+++ b/provider/cmd/pulumi-resource-aws/schema-minimal.json
@@ -182,6 +182,7 @@
"redshiftdata": "RedshiftData",
"redshiftserverless": "RedshiftServerless",
"rekognition": "Rekognition",
+ "resiliencehub": "ResilienceHub",
"resourceexplorer": "ResourceExplorer",
"resourcegroups": "ResourceGroups",
"resourcegroupstaggingapi": "ResourceGroupsTaggingApi",
@@ -30018,6 +30019,41 @@
},
"type": "object"
},
+ "aws:codedeploy/DeploymentConfigZonalConfig:DeploymentConfigZonalConfig": {
+ "properties": {
+ "firstZoneMonitorDurationInSeconds": {
+ "type": "integer",
+ "description": "The period of time, in seconds, that CodeDeploy must wait after completing a deployment to the first Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the second Availability Zone. If you don't specify a value for `first_zone_monitor_duration_in_seconds`, then CodeDeploy uses the `monitor_duration_in_seconds` value for the first Availability Zone.\n",
+ "willReplaceOnChanges": true
+ },
+ "minimumHealthyHostsPerZone": {
+ "$ref": "#/types/aws:codedeploy/DeploymentConfigZonalConfigMinimumHealthyHostsPerZone:DeploymentConfigZonalConfigMinimumHealthyHostsPerZone",
+ "description": "The number or percentage of instances that must remain available per Availability Zone during a deployment. If you don't specify a value under `minimum_healthy_hosts_per_zone`, then CodeDeploy uses a default value of 0 percent. This block is more documented below.\n",
+ "willReplaceOnChanges": true
+ },
+ "monitorDurationInSeconds": {
+ "type": "integer",
+ "description": "The period of time, in seconds, that CodeDeploy must wait after completing a deployment to an Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the next Availability Zone. If you don't specify a `monitor_duration_in_seconds`, CodeDeploy starts deploying to the next Availability Zone immediately.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
+ "aws:codedeploy/DeploymentConfigZonalConfigMinimumHealthyHostsPerZone:DeploymentConfigZonalConfigMinimumHealthyHostsPerZone": {
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "The type can either be `FLEET_PERCENT` or `HOST_COUNT`.\n",
+ "willReplaceOnChanges": true
+ },
+ "value": {
+ "type": "integer",
+ "description": "The value when the type is `FLEET_PERCENT` represents the minimum number of healthy instances as a percentage of the total number of instances in the Availability Zone during a deployment. If you specify FLEET_PERCENT, at the start of the deployment, AWS CodeDeploy converts the percentage to the equivalent number of instance and rounds up fractional instances. When the type is `HOST_COUNT`, the value represents the minimum number of healthy instances in the Availability Zone as an absolute value.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
"aws:codedeploy/DeploymentGroupAlarmConfiguration:DeploymentGroupAlarmConfiguration": {
"properties": {
"alarms": {
@@ -35940,14 +35976,14 @@
},
"not": {
"$ref": "#/types/aws:costexplorer/AnomalySubscriptionThresholdExpressionNot:AnomalySubscriptionThresholdExpressionNot",
- "description": "Return results that match both Dimension object.\n"
+ "description": "Return results that do not match the Dimension object.\n"
},
"ors": {
"type": "array",
"items": {
"$ref": "#/types/aws:costexplorer/AnomalySubscriptionThresholdExpressionOr:AnomalySubscriptionThresholdExpressionOr"
},
- "description": "Return results that match both Dimension object.\n"
+ "description": "Return results that match either Dimension object.\n"
},
"tags": {
"$ref": "#/types/aws:costexplorer/AnomalySubscriptionThresholdExpressionTags:AnomalySubscriptionThresholdExpressionTags",
@@ -78591,7 +78627,14 @@
"willReplaceOnChanges": true
}
},
- "type": "object"
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "noDevice"
+ ]
+ }
+ }
},
"aws:imagebuilder/ContainerRecipeInstanceConfigurationBlockDeviceMappingEbs:ContainerRecipeInstanceConfigurationBlockDeviceMappingEbs": {
"properties": {
@@ -79160,7 +79203,14 @@
"willReplaceOnChanges": true
}
},
- "type": "object"
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "noDevice"
+ ]
+ }
+ }
},
"aws:imagebuilder/ImageRecipeBlockDeviceMappingEbs:ImageRecipeBlockDeviceMappingEbs": {
"properties": {
@@ -79350,6 +79400,193 @@
"s3BucketName"
]
},
+ "aws:imagebuilder/LifecyclePolicyPolicyDetail:LifecyclePolicyPolicyDetail": {
+ "properties": {
+ "action": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailAction:LifecyclePolicyPolicyDetailAction",
+ "description": "Configuration details for the policy action.\n"
+ },
+ "exclusionRules": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRules:LifecyclePolicyPolicyDetailExclusionRules",
+ "description": "Additional rules to specify resources that should be exempt from policy actions.\n"
+ },
+ "filter": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailFilter:LifecyclePolicyPolicyDetailFilter",
+ "description": "Specifies the resources that the lifecycle policy applies to.\n\nThe following arguments are optional:\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailAction:LifecyclePolicyPolicyDetailAction": {
+ "properties": {
+ "includeResources": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailActionIncludeResources:LifecyclePolicyPolicyDetailActionIncludeResources",
+ "description": "Specifies the resources that the lifecycle policy applies to. Detailed below.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Specifies the lifecycle action to take. Valid values: `DELETE`, `DEPRECATE` or `DISABLE`.\n\nThe following arguments are optional:\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type"
+ ]
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailActionIncludeResources:LifecyclePolicyPolicyDetailActionIncludeResources": {
+ "properties": {
+ "amis": {
+ "type": "boolean",
+ "description": "Specifies whether the lifecycle action should apply to distributed AMIs.\n"
+ },
+ "containers": {
+ "type": "boolean",
+ "description": "Specifies whether the lifecycle action should apply to distributed containers.\n"
+ },
+ "snapshots": {
+ "type": "boolean",
+ "description": "Specifies whether the lifecycle action should apply to snapshots associated with distributed AMIs.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "amis",
+ "containers",
+ "snapshots"
+ ]
+ }
+ }
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRules:LifecyclePolicyPolicyDetailExclusionRules": {
+ "properties": {
+ "amis": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRulesAmis:LifecyclePolicyPolicyDetailExclusionRulesAmis",
+ "description": "Lists configuration values that apply to AMIs that Image Builder should exclude from the lifecycle action. Detailed below.\n"
+ },
+ "tagMap": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Contains a list of tags that Image Builder uses to skip lifecycle actions for Image Builder image resources that have them.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRulesAmis:LifecyclePolicyPolicyDetailExclusionRulesAmis": {
+ "properties": {
+ "isPublic": {
+ "type": "boolean",
+ "description": "Configures whether public AMIs are excluded from the lifecycle action.\n"
+ },
+ "lastLaunched": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched:LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched",
+ "description": "Specifies configuration details for Image Builder to exclude the most recent resources from lifecycle actions. Detailed below.\n"
+ },
+ "regions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Configures AWS Regions that are excluded from the lifecycle action.\n"
+ },
+ "sharedAccounts": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Specifies AWS accounts whose resources are excluded from the lifecycle action.\n"
+ },
+ "tagMap": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Lists tags that should be excluded from lifecycle actions for the AMIs that have them.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched:LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched": {
+ "properties": {
+ "unit": {
+ "type": "string",
+ "description": "Defines the unit of time that the lifecycle policy uses to calculate elapsed time since the last instance launched from the AMI. For example: days, weeks, months, or years. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.\n"
+ },
+ "value": {
+ "type": "integer",
+ "description": "The integer number of units for the time period. For example 6 (months).\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "unit",
+ "value"
+ ]
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailFilter:LifecyclePolicyPolicyDetailFilter": {
+ "properties": {
+ "retainAtLeast": {
+ "type": "integer",
+ "description": "For age-based filters, this is the number of resources to keep on hand after the lifecycle DELETE action is applied. Impacted resources are only deleted if you have more than this number of resources. If you have fewer resources than this number, the impacted resource is not deleted.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Filter resources based on either age or count. Valid values: `AGE` or `COUNT`.\n"
+ },
+ "unit": {
+ "type": "string",
+ "description": "Defines the unit of time that the lifecycle policy uses to determine impacted resources. This is required for age-based rules. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.\n"
+ },
+ "value": {
+ "type": "integer",
+ "description": "The number of units for the time period or for the count. For example, a value of 6 might refer to six months or six AMIs.\n\nThe following arguments are optional:\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "value"
+ ]
+ },
+ "aws:imagebuilder/LifecyclePolicyResourceSelection:LifecyclePolicyResourceSelection": {
+ "properties": {
+ "recipes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyResourceSelectionRecipe:LifecyclePolicyResourceSelectionRecipe"
+ },
+ "description": "A list of recipe that are used as selection criteria for the output images that the lifecycle policy applies to. Detailed below.\n"
+ },
+ "tagMap": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A list of tags that are used as selection criteria for the Image Builder image resources that the lifecycle policy applies to.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:imagebuilder/LifecyclePolicyResourceSelectionRecipe:LifecyclePolicyResourceSelectionRecipe": {
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of an Image Builder recipe that the lifecycle policy uses for resource selection.\n"
+ },
+ "semanticVersion": {
+ "type": "string",
+ "description": "The version of the Image Builder recipe specified by the name field.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "semanticVersion"
+ ]
+ },
"aws:imagebuilder/getComponentsFilter:getComponentsFilter": {
"properties": {
"name": {
@@ -85963,7 +86200,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -85975,7 +86212,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -86470,7 +86707,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -86482,7 +86719,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -86679,7 +86916,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -86691,7 +86928,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -86833,6 +87070,238 @@
}
}
},
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfiguration:FirehoseDeliveryStreamIcebergConfiguration": {
+ "properties": {
+ "bufferingInterval": {
+ "type": "integer",
+ "description": "Buffer incoming data for the specified period of time, in seconds between 0 and 900, before delivering it to the destination. The default value is 300.\n"
+ },
+ "bufferingSize": {
+ "type": "integer",
+ "description": "Buffer incoming data to the specified size, in MBs between 1 and 128, before delivering it to the destination. The default value is 5.\n"
+ },
+ "catalogArn": {
+ "type": "string",
+ "description": "Glue catalog ARN identifier of the destination Apache Iceberg Tables. You must specify the ARN in the format `arn:aws:glue:region:account-id:catalog`\n",
+ "willReplaceOnChanges": true
+ },
+ "cloudwatchLoggingOptions": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions:FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions",
+ "description": "The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.\n"
+ },
+ "destinationTableConfigurations": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration:FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration"
+ },
+ "description": "Destination table configurations which Firehose uses to deliver data to Apache Iceberg Tables. Firehose will write data with insert if table specific configuration is not provided. See `destination_table_configuration` block below for details.\n",
+ "willReplaceOnChanges": true
+ },
+ "processingConfiguration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration:FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration",
+ "description": "The data processing configuration. See `processing_configuration` block below for details.\n"
+ },
+ "retryDuration": {
+ "type": "integer",
+ "description": "The period of time, in seconds between 0 to 7200, during which Firehose retries to deliver data to the specified destination.\n"
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The ARN of the IAM role to be assumed by Firehose for calling Apache Iceberg Tables.\n"
+ },
+ "s3BackupMode": {
+ "type": "string"
+ },
+ "s3Configuration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationS3Configuration:FirehoseDeliveryStreamIcebergConfigurationS3Configuration",
+ "description": "The S3 Configuration. See `s3_configuration` block below for details.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "catalogArn",
+ "roleArn",
+ "s3Configuration"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "catalogArn",
+ "cloudwatchLoggingOptions",
+ "roleArn",
+ "s3Configuration"
+ ]
+ }
+ }
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions:FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enables or disables the logging. Defaults to `false`.\n"
+ },
+ "logGroupName": {
+ "type": "string",
+ "description": "The CloudWatch group name for logging. This value is required if `enabled` is true.\n"
+ },
+ "logStreamName": {
+ "type": "string",
+ "description": "The CloudWatch log stream name for logging. This value is required if `enabled` is true.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration:FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration": {
+ "properties": {
+ "databaseName": {
+ "type": "string",
+ "description": "The name of the Apache Iceberg database.\n"
+ },
+ "s3ErrorOutputPrefix": {
+ "type": "string",
+ "description": "The table specific S3 error output prefix. All the errors that occurred while delivering to this table will be prefixed with this value in S3 destination.\n"
+ },
+ "tableName": {
+ "type": "string",
+ "description": "The name of the Apache Iceberg Table.\n"
+ },
+ "uniqueKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of unique keys for a given Apache Iceberg table. Firehose will use these for running Create, Update, or Delete operations on the given Iceberg table.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "databaseName",
+ "tableName"
+ ]
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration:FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enables or disables data processing.\n"
+ },
+ "processors": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor:FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor"
+ },
+ "description": "Specifies the data processors as multiple blocks. See `processors` block below for details.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor:FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor": {
+ "properties": {
+ "parameters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter:FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter"
+ },
+ "description": "Specifies the processor parameters as multiple blocks. See `parameters` block below for details.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type"
+ ]
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter:FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter": {
+ "properties": {
+ "parameterName": {
+ "type": "string",
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
+ },
+ "parameterValue": {
+ "type": "string",
+ "description": "Parameter value. Must be between 1 and 512 length (inclusive). When providing a Lambda ARN, you should specify the resource version as well.\n\n\u003e **NOTE:** Parameters with default values, including `NumberOfRetries`(default: 3), `RoleArn`(default: firehose role ARN), `BufferSizeInMBs`(default: 1), and `BufferIntervalInSeconds`(default: 60), are not stored in Pulumi state. To prevent perpetual differences, it is therefore recommended to only include parameters with non-default values.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "parameterName",
+ "parameterValue"
+ ]
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationS3Configuration:FirehoseDeliveryStreamIcebergConfigurationS3Configuration": {
+ "properties": {
+ "bucketArn": {
+ "type": "string",
+ "description": "The ARN of the S3 bucket\n"
+ },
+ "bufferingInterval": {
+ "type": "integer",
+ "description": "Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 300.\n"
+ },
+ "bufferingSize": {
+ "type": "integer",
+ "description": "Buffer incoming data to the specified size, in MBs, before delivering it to the destination. The default value is 5.\nWe recommend setting SizeInMBs to a value greater than the amount of data you typically ingest into the delivery stream in 10 seconds. For example, if you typically ingest data at 1 MB/sec set SizeInMBs to be 10 MB or higher.\n"
+ },
+ "cloudwatchLoggingOptions": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions:FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions",
+ "description": "The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.\n"
+ },
+ "compressionFormat": {
+ "type": "string",
+ "description": "The compression format. If no value is specified, the default is `UNCOMPRESSED`. Other supported values are `GZIP`, `ZIP`, `Snappy`, \u0026 `HADOOP_SNAPPY`.\n"
+ },
+ "errorOutputPrefix": {
+ "type": "string",
+ "description": "Prefix added to failed records before writing them to S3. Not currently supported for `redshift` destination. This prefix appears immediately following the bucket name. For information about how to specify this prefix, see [Custom Prefixes for Amazon S3 Objects](https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html).\n"
+ },
+ "kmsKeyArn": {
+ "type": "string",
+ "description": "Specifies the KMS key ARN the stream will use to encrypt data. If not set, no encryption will\nbe used.\n"
+ },
+ "prefix": {
+ "type": "string",
+ "description": "The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket\n"
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The ARN of the AWS credentials.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "bucketArn",
+ "roleArn"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "bucketArn",
+ "cloudwatchLoggingOptions",
+ "roleArn"
+ ]
+ }
+ }
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions:FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enables or disables the logging. Defaults to `false`.\n"
+ },
+ "logGroupName": {
+ "type": "string",
+ "description": "The CloudWatch group name for logging. This value is required if `enabled` is true.\n"
+ },
+ "logStreamName": {
+ "type": "string",
+ "description": "The CloudWatch log stream name for logging. This value is required if `enabled` is true.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:kinesis/FirehoseDeliveryStreamKinesisSourceConfiguration:FirehoseDeliveryStreamKinesisSourceConfiguration": {
"properties": {
"kinesisStreamArn": {
@@ -87034,7 +87503,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -87046,7 +87515,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -87286,7 +87755,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -87298,7 +87767,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -87549,7 +88018,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -87561,7 +88030,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -87911,7 +88380,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -87923,7 +88392,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -88167,7 +88636,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -88179,7 +88648,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -133820,6 +134289,108 @@
},
"type": "object"
},
+ "aws:resiliencehub/ResiliencyPolicyPolicy:ResiliencyPolicyPolicy": {
+ "properties": {
+ "az": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicyAz:ResiliencyPolicyPolicyAz",
+ "description": "Specifies Availability Zone failure policy. See `policy.az`\n"
+ },
+ "hardware": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicyHardware:ResiliencyPolicyPolicyHardware",
+ "description": "Specifies Infrastructure failure policy. See `policy.hardware`\n"
+ },
+ "region": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicyRegion:ResiliencyPolicyPolicyRegion",
+ "description": "Specifies Region failure policy. `policy.region`\n"
+ },
+ "software": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicySoftware:ResiliencyPolicyPolicySoftware",
+ "description": "Specifies Application failure policy. See `policy.software`\n\nThe following arguments are optional:\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:resiliencehub/ResiliencyPolicyPolicyAz:ResiliencyPolicyPolicyAz": {
+ "properties": {
+ "rpo": {
+ "type": "string",
+ "description": "Recovery Point Objective (RPO) as a Go duration.\n"
+ },
+ "rto": {
+ "type": "string",
+ "description": "Recovery Time Objective (RTO) as a Go duration.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "rpo",
+ "rto"
+ ]
+ },
+ "aws:resiliencehub/ResiliencyPolicyPolicyHardware:ResiliencyPolicyPolicyHardware": {
+ "properties": {
+ "rpo": {
+ "type": "string",
+ "description": "Recovery Point Objective (RPO) as a Go duration.\n"
+ },
+ "rto": {
+ "type": "string",
+ "description": "Recovery Time Objective (RTO) as a Go duration.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "rpo",
+ "rto"
+ ]
+ },
+ "aws:resiliencehub/ResiliencyPolicyPolicyRegion:ResiliencyPolicyPolicyRegion": {
+ "properties": {
+ "rpo": {
+ "type": "string",
+ "description": "Recovery Point Objective (RPO) as a Go duration.\n"
+ },
+ "rto": {
+ "type": "string",
+ "description": "Recovery Time Objective (RTO) as a Go duration.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:resiliencehub/ResiliencyPolicyPolicySoftware:ResiliencyPolicyPolicySoftware": {
+ "properties": {
+ "rpo": {
+ "type": "string",
+ "description": "Recovery Point Objective (RPO) as a Go duration.\n"
+ },
+ "rto": {
+ "type": "string",
+ "description": "Recovery Time Objective (RTO) as a Go duration.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "rpo",
+ "rto"
+ ]
+ },
+ "aws:resiliencehub/ResiliencyPolicyTimeouts:ResiliencyPolicyTimeouts": {
+ "properties": {
+ "create": {
+ "type": "string",
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
+ },
+ "delete": {
+ "type": "string",
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
+ },
+ "update": {
+ "type": "string",
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
+ }
+ },
+ "type": "object"
+ },
"aws:resourceexplorer/IndexTimeouts:IndexTimeouts": {
"properties": {
"create": {
@@ -134173,9 +134744,9 @@
"type": "string",
"description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
},
- "read": {
+ "update": {
"type": "string",
- "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
}
},
"type": "object"
@@ -139272,6 +139843,14 @@
},
"aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettings:DomainDefaultSpaceSettingsJupyterLabAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement:DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"codeRepositories": {
"type": "array",
"items": {
@@ -139290,6 +139869,10 @@
"$ref": "#/types/aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsDefaultResourceSpec:DomainDefaultSpaceSettingsJupyterLabAppSettingsDefaultResourceSpec",
"description": "The default instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance. see `default_resource_spec` Block below.\n"
},
+ "emrSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettings:DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettings",
+ "description": "The configuration parameters that specify the IAM roles assumed by the execution role of SageMaker (assumable roles) and the cluster instances or job execution environments (execution roles or runtime roles) to manage and access resources required for running Amazon EMR clusters or Amazon EMR Serverless applications. see `emr_settings` Block below.\n"
+ },
"lifecycleConfigArns": {
"type": "array",
"items": {
@@ -139300,6 +139883,36 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement:DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsCodeRepository:DomainDefaultSpaceSettingsJupyterLabAppSettingsCodeRepository": {
"properties": {
"repositoryUrl": {
@@ -139358,6 +139971,25 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettings:DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettings": {
+ "properties": {
+ "assumableRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles that the execution role of SageMaker can assume for performing operations or tasks related to Amazon EMR clusters or Amazon EMR Serverless applications. These roles define the permissions and access policies required when performing Amazon EMR-related operations, such as listing, connecting to, or terminating Amazon EMR clusters or Amazon EMR Serverless applications. They are typically used in cross-account access scenarios, where the Amazon EMR resources (clusters or serverless applications) are located in a different AWS account than the SageMaker domain.\n"
+ },
+ "executionRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles used by the Amazon EMR cluster instances or job execution environments to access other AWS services and resources needed during the runtime of your Amazon EMR or Amazon EMR Serverless workloads, such as Amazon S3 for data access, Amazon CloudWatch for logging, or other AWS services based on the particular workload requirements.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultSpaceSettingsJupyterServerAppSettings:DomainDefaultSpaceSettingsJupyterServerAppSettings": {
"properties": {
"codeRepositories": {
@@ -139515,6 +140147,10 @@
},
"aws:sagemaker/DomainDefaultUserSettings:DomainDefaultUserSettings": {
"properties": {
+ "autoMountHomeEfs": {
+ "type": "string",
+ "description": "Indicates whether auto-mounting of an EFS volume is supported for the user profile. The `DefaultAsDomain` value is only supported for user profiles. Do not use the `DefaultAsDomain` value when setting this parameter for a domain. Valid values are: `Enabled`, `Disabled`, and `DefaultAsDomain`.\n"
+ },
"canvasAppSettings": {
"$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettings:DomainDefaultUserSettingsCanvasAppSettings",
"description": "The Canvas app settings. See `canvas_app_settings` Block below.\n"
@@ -139597,6 +140233,7 @@
"language": {
"nodejs": {
"requiredOutputs": [
+ "autoMountHomeEfs",
"defaultLandingUri",
"executionRole",
"spaceStorageSettings",
@@ -139611,6 +140248,10 @@
"$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsDirectDeploySettings:DomainDefaultUserSettingsCanvasAppSettingsDirectDeploySettings",
"description": "The model deployment settings for the SageMaker Canvas application. See `direct_deploy_settings` Block below.\n"
},
+ "emrServerlessSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettings:DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettings",
+ "description": "The settings for running Amazon EMR Serverless jobs in SageMaker Canvas. See `emr_serverless_settings` Block below.\n"
+ },
"generativeAiSettings": {
"$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsGenerativeAiSettings:DomainDefaultUserSettingsCanvasAppSettingsGenerativeAiSettings"
},
@@ -139649,6 +140290,19 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettings:DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettings": {
+ "properties": {
+ "executionRoleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) of the AWS IAM role that is assumed for running Amazon EMR Serverless jobs in SageMaker Canvas. This role should have the necessary permissions to read and write data attached and a trust relationship with EMR Serverless.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "Describes whether Amazon EMR Serverless job capabilities are enabled or disabled in the SageMaker Canvas application. Valid values are: `ENABLED` and `DISABLED`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsGenerativeAiSettings:DomainDefaultUserSettingsCanvasAppSettingsGenerativeAiSettings": {
"properties": {
"amazonBedrockRoleArn": {
@@ -139727,6 +140381,14 @@
},
"aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettings:DomainDefaultUserSettingsCodeEditorAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagement:DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"customImages": {
"type": "array",
"items": {
@@ -139748,6 +140410,36 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagement:DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsCustomImage:DomainDefaultUserSettingsCodeEditorAppSettingsCustomImage": {
"properties": {
"appImageConfigName": {
@@ -139839,6 +140531,14 @@
},
"aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettings:DomainDefaultUserSettingsJupyterLabAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagement:DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"codeRepositories": {
"type": "array",
"items": {
@@ -139857,6 +140557,10 @@
"$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsDefaultResourceSpec:DomainDefaultUserSettingsJupyterLabAppSettingsDefaultResourceSpec",
"description": "The default instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance. see `default_resource_spec` Block below.\n"
},
+ "emrSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsEmrSettings:DomainDefaultUserSettingsJupyterLabAppSettingsEmrSettings",
+ "description": "The configuration parameters that specify the IAM roles assumed by the execution role of SageMaker (assumable roles) and the cluster instances or job execution environments (execution roles or runtime roles) to manage and access resources required for running Amazon EMR clusters or Amazon EMR Serverless applications. see `emr_settings` Block below.\n"
+ },
"lifecycleConfigArns": {
"type": "array",
"items": {
@@ -139867,6 +140571,36 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagement:DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsCodeRepository:DomainDefaultUserSettingsJupyterLabAppSettingsCodeRepository": {
"properties": {
"repositoryUrl": {
@@ -139925,6 +140659,25 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsEmrSettings:DomainDefaultUserSettingsJupyterLabAppSettingsEmrSettings": {
+ "properties": {
+ "assumableRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles that the execution role of SageMaker can assume for performing operations or tasks related to Amazon EMR clusters or Amazon EMR Serverless applications. These roles define the permissions and access policies required when performing Amazon EMR-related operations, such as listing, connecting to, or terminating Amazon EMR clusters or Amazon EMR Serverless applications. They are typically used in cross-account access scenarios, where the Amazon EMR resources (clusters or serverless applications) are located in a different AWS account than the SageMaker domain.\n"
+ },
+ "executionRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles used by the Amazon EMR cluster instances or job execution environments to access other AWS services and resources needed during the runtime of your Amazon EMR or Amazon EMR Serverless workloads, such as Amazon S3 for data access, Amazon CloudWatch for logging, or other AWS services based on the particular workload requirements.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultUserSettingsJupyterServerAppSettings:DomainDefaultUserSettingsJupyterServerAppSettings": {
"properties": {
"codeRepositories": {
@@ -140181,6 +140934,13 @@
},
"description": "The Applications supported in Studio that are hidden from the Studio left navigation pane.\n"
},
+ "hiddenInstanceTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The instance types you are hiding from the Studio user interface.\n"
+ },
"hiddenMlTools": {
"type": "array",
"items": {
@@ -141001,6 +141761,14 @@
},
"aws:sagemaker/FeatureGroupFeatureDefinition:FeatureGroupFeatureDefinition": {
"properties": {
+ "collectionConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupFeatureDefinitionCollectionConfig:FeatureGroupFeatureDefinitionCollectionConfig",
+ "willReplaceOnChanges": true
+ },
+ "collectionType": {
+ "type": "string",
+ "willReplaceOnChanges": true
+ },
"featureName": {
"type": "string",
"description": "The name of a feature. `feature_name` cannot be any of the following: `is_deleted`, `write_time`, `api_invocation_time`.\n",
@@ -141014,6 +141782,24 @@
},
"type": "object"
},
+ "aws:sagemaker/FeatureGroupFeatureDefinitionCollectionConfig:FeatureGroupFeatureDefinitionCollectionConfig": {
+ "properties": {
+ "vectorConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupFeatureDefinitionCollectionConfigVectorConfig:FeatureGroupFeatureDefinitionCollectionConfigVectorConfig",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/FeatureGroupFeatureDefinitionCollectionConfigVectorConfig:FeatureGroupFeatureDefinitionCollectionConfigVectorConfig": {
+ "properties": {
+ "dimension": {
+ "type": "integer",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/FeatureGroupOfflineStoreConfig:FeatureGroupOfflineStoreConfig": {
"properties": {
"dataCatalogConfig": {
@@ -141157,6 +141943,27 @@
},
"type": "object"
},
+ "aws:sagemaker/FeatureGroupThroughputConfig:FeatureGroupThroughputConfig": {
+ "properties": {
+ "provisionedReadCapacityUnits": {
+ "type": "integer"
+ },
+ "provisionedWriteCapacityUnits": {
+ "type": "integer"
+ },
+ "throughputMode": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "throughputMode"
+ ]
+ }
+ }
+ },
"aws:sagemaker/FlowDefinitionHumanLoopActivationConfig:FlowDefinitionHumanLoopActivationConfig": {
"properties": {
"humanLoopActivationConditionsConfig": {
@@ -141300,6 +142107,16 @@
"s3OutputPath"
]
},
+ "aws:sagemaker/HubS3StorageConfig:HubS3StorageConfig": {
+ "properties": {
+ "s3OutputPath": {
+ "type": "string",
+ "description": "The Amazon S3 bucket prefix for hosting hub content.interface.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/HumanTaskUIUiTemplate:HumanTaskUIUiTemplate": {
"properties": {
"content": {
@@ -141881,6 +142698,10 @@
},
"aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettings:SpaceSpaceSettingsCodeEditorAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagement:SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagement",
+ "description": "Settings that are used to configure and manage the lifecycle of JupyterLab applications in a space. See `app_lifecycle_management` Block below.\n"
+ },
"defaultResourceSpec": {
"$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsDefaultResourceSpec:SpaceSpaceSettingsCodeEditorAppSettingsDefaultResourceSpec",
"description": "The default instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance. See `default_resource_spec` Block below.\n"
@@ -141891,6 +142712,24 @@
"defaultResourceSpec"
]
},
+ "aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagement:SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. See `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsDefaultResourceSpec:SpaceSpaceSettingsCodeEditorAppSettingsDefaultResourceSpec": {
"properties": {
"instanceType": {
@@ -141942,6 +142781,10 @@
},
"aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettings:SpaceSpaceSettingsJupyterLabAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement:SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement",
+ "description": "Settings that are used to configure and manage the lifecycle of JupyterLab applications in a space. See `app_lifecycle_management` Block below.\n"
+ },
"codeRepositories": {
"type": "array",
"items": {
@@ -141959,6 +142802,24 @@
"defaultResourceSpec"
]
},
+ "aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement:SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. See `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsCodeRepository:SpaceSpaceSettingsJupyterLabAppSettingsCodeRepository": {
"properties": {
"repositoryUrl": {
@@ -142169,6 +143030,10 @@
},
"aws:sagemaker/UserProfileUserSettings:UserProfileUserSettings": {
"properties": {
+ "autoMountHomeEfs": {
+ "type": "string",
+ "description": "Indicates whether auto-mounting of an EFS volume is supported for the user profile. The `DefaultAsDomain` value is only supported for user profiles. Do not use the `DefaultAsDomain` value when setting this parameter for a domain. Valid values are: `Enabled`, `Disabled`, and `DefaultAsDomain`.\n"
+ },
"canvasAppSettings": {
"$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCanvasAppSettings:UserProfileUserSettingsCanvasAppSettings",
"description": "The Canvas app settings. See Canvas App Settings below.\n"
@@ -142251,6 +143116,7 @@
"language": {
"nodejs": {
"requiredOutputs": [
+ "autoMountHomeEfs",
"executionRole",
"spaceStorageSettings",
"studioWebPortal"
@@ -142264,6 +143130,10 @@
"$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsDirectDeploySettings:UserProfileUserSettingsCanvasAppSettingsDirectDeploySettings",
"description": "The model deployment settings for the SageMaker Canvas application. See Direct Deploy Settings below.\n"
},
+ "emrServerlessSettings": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsEmrServerlessSettings:UserProfileUserSettingsCanvasAppSettingsEmrServerlessSettings",
+ "description": "The settings for running Amazon EMR Serverless jobs in SageMaker Canvas. See `emr_serverless_settings` Block below.\n"
+ },
"generativeAiSettings": {
"$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsGenerativeAiSettings:UserProfileUserSettingsCanvasAppSettingsGenerativeAiSettings"
},
@@ -142302,6 +143172,19 @@
},
"type": "object"
},
+ "aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsEmrServerlessSettings:UserProfileUserSettingsCanvasAppSettingsEmrServerlessSettings": {
+ "properties": {
+ "executionRoleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) of the AWS IAM role that is assumed for running Amazon EMR Serverless jobs in SageMaker Canvas. This role should have the necessary permissions to read and write data attached and a trust relationship with EMR Serverless.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "Describes whether Amazon EMR Serverless job capabilities are enabled or disabled in the SageMaker Canvas application. Valid values are: `ENABLED` and `DISABLED`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsGenerativeAiSettings:UserProfileUserSettingsCanvasAppSettingsGenerativeAiSettings": {
"properties": {
"amazonBedrockRoleArn": {
@@ -142380,6 +143263,14 @@
},
"aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettings:UserProfileUserSettingsCodeEditorAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagement:UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"customImages": {
"type": "array",
"items": {
@@ -142401,6 +143292,36 @@
},
"type": "object"
},
+ "aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagement:UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsCustomImage:UserProfileUserSettingsCodeEditorAppSettingsCustomImage": {
"properties": {
"appImageConfigName": {
@@ -142494,6 +143415,14 @@
},
"aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettings:UserProfileUserSettingsJupyterLabAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagement:UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"codeRepositories": {
"type": "array",
"items": {
@@ -142511,6 +143440,10 @@
"$ref": "#/types/aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsDefaultResourceSpec:UserProfileUserSettingsJupyterLabAppSettingsDefaultResourceSpec",
"description": "The default instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance. see Default Resource Spec below.\n"
},
+ "emrSettings": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsEmrSettings:UserProfileUserSettingsJupyterLabAppSettingsEmrSettings",
+ "description": "The configuration parameters that specify the IAM roles assumed by the execution role of SageMaker (assumable roles) and the cluster instances or job execution environments (execution roles or runtime roles) to manage and access resources required for running Amazon EMR clusters or Amazon EMR Serverless applications. see `emr_settings` Block below.\n"
+ },
"lifecycleConfigArns": {
"type": "array",
"items": {
@@ -142521,6 +143454,36 @@
},
"type": "object"
},
+ "aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagement:UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsCodeRepository:UserProfileUserSettingsJupyterLabAppSettingsCodeRepository": {
"properties": {
"repositoryUrl": {
@@ -142579,6 +143542,25 @@
},
"type": "object"
},
+ "aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsEmrSettings:UserProfileUserSettingsJupyterLabAppSettingsEmrSettings": {
+ "properties": {
+ "assumableRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles that the execution role of SageMaker can assume for performing operations or tasks related to Amazon EMR clusters or Amazon EMR Serverless applications. These roles define the permissions and access policies required when performing Amazon EMR-related operations, such as listing, connecting to, or terminating Amazon EMR clusters or Amazon EMR Serverless applications. They are typically used in cross-account access scenarios, where the Amazon EMR resources (clusters or serverless applications) are located in a different AWS account than the SageMaker domain.\n"
+ },
+ "executionRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles used by the Amazon EMR cluster instances or job execution environments to access other AWS services and resources needed during the runtime of your Amazon EMR or Amazon EMR Serverless workloads, such as Amazon S3 for data access, Amazon CloudWatch for logging, or other AWS services based on the particular workload requirements.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/UserProfileUserSettingsJupyterServerAppSettings:UserProfileUserSettingsJupyterServerAppSettings": {
"properties": {
"codeRepositories": {
@@ -142835,6 +143817,13 @@
},
"description": "The Applications supported in Studio that are hidden from the Studio left navigation pane.\n"
},
+ "hiddenInstanceTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The instance types you are hiding from the Studio user interface.\n"
+ },
"hiddenMlTools": {
"type": "array",
"items": {
@@ -150564,6 +151553,63 @@
}
}
},
+ "aws:ssm/getPatchBaselinesBaselineIdentity:getPatchBaselinesBaselineIdentity": {
+ "properties": {
+ "baselineDescription": {
+ "type": "string",
+ "description": "Description of the patch baseline.\n"
+ },
+ "baselineId": {
+ "type": "string",
+ "description": "ID of the patch baseline.\n"
+ },
+ "baselineName": {
+ "type": "string",
+ "description": "Name of the patch baseline.\n"
+ },
+ "defaultBaseline": {
+ "type": "boolean",
+ "description": "Indicates whether this is the default baseline. AWS Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system.\n"
+ },
+ "operatingSystem": {
+ "type": "string",
+ "description": "Operating system the patch baseline applies to.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "baselineDescription",
+ "baselineId",
+ "baselineName",
+ "defaultBaseline",
+ "operatingSystem"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "aws:ssm/getPatchBaselinesFilter:getPatchBaselinesFilter": {
+ "properties": {
+ "key": {
+ "type": "string",
+ "description": "Filter key. See the [AWS SSM documentation](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribePatchBaselines.html) for valid values.\n"
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Filter values. See the [AWS SSM documentation](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribePatchBaselines.html) for example values.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "values"
+ ]
+ },
"aws:ssmcontacts/ContactChannelDeliveryAddress:ContactChannelDeliveryAddress": {
"properties": {
"simpleAddress": {
@@ -170259,6 +171305,10 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"required": [
@@ -170313,6 +171363,10 @@
"type": "string"
},
"description": "A 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.\n"
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"requiredInputs": [
@@ -170376,6 +171430,10 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"type": "object"
@@ -170651,6 +171709,10 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
"description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
@@ -170801,6 +171863,10 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
"description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
@@ -170938,6 +172004,10 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
"description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
@@ -205239,6 +206309,10 @@
"trafficRoutingConfig": {
"$ref": "#/types/aws:codedeploy/DeploymentConfigTrafficRoutingConfig:DeploymentConfigTrafficRoutingConfig",
"description": "A traffic_routing_config block. Traffic Routing Config is documented below.\n"
+ },
+ "zonalConfig": {
+ "$ref": "#/types/aws:codedeploy/DeploymentConfigZonalConfig:DeploymentConfigZonalConfig",
+ "description": "A zonal_config block. Zonal Config is documented below.\n"
}
},
"required": [
@@ -205266,6 +206340,11 @@
"$ref": "#/types/aws:codedeploy/DeploymentConfigTrafficRoutingConfig:DeploymentConfigTrafficRoutingConfig",
"description": "A traffic_routing_config block. Traffic Routing Config is documented below.\n",
"willReplaceOnChanges": true
+ },
+ "zonalConfig": {
+ "$ref": "#/types/aws:codedeploy/DeploymentConfigZonalConfig:DeploymentConfigZonalConfig",
+ "description": "A zonal_config block. Zonal Config is documented below.\n",
+ "willReplaceOnChanges": true
}
},
"stateInputs": {
@@ -205298,6 +206377,11 @@
"$ref": "#/types/aws:codedeploy/DeploymentConfigTrafficRoutingConfig:DeploymentConfigTrafficRoutingConfig",
"description": "A traffic_routing_config block. Traffic Routing Config is documented below.\n",
"willReplaceOnChanges": true
+ },
+ "zonalConfig": {
+ "$ref": "#/types/aws:codedeploy/DeploymentConfigZonalConfig:DeploymentConfigZonalConfig",
+ "description": "A zonal_config block. Zonal Config is documented below.\n",
+ "willReplaceOnChanges": true
}
},
"type": "object"
@@ -227799,22 +228883,32 @@
}
},
"aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination": {
- "description": "Enables a [Kinesis streaming destination](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html) for data replication of a DynamoDB table.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.dynamodb.Table(\"example\", {\n name: \"orders\",\n hashKey: \"id\",\n attributes: [{\n name: \"id\",\n type: \"S\",\n }],\n});\nconst exampleStream = new aws.kinesis.Stream(\"example\", {\n name: \"order_item_changes\",\n shardCount: 1,\n});\nconst exampleKinesisStreamingDestination = new aws.dynamodb.KinesisStreamingDestination(\"example\", {\n streamArn: exampleStream.arn,\n tableName: example.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.dynamodb.Table(\"example\",\n name=\"orders\",\n hash_key=\"id\",\n attributes=[{\n \"name\": \"id\",\n \"type\": \"S\",\n }])\nexample_stream = aws.kinesis.Stream(\"example\",\n name=\"order_item_changes\",\n shard_count=1)\nexample_kinesis_streaming_destination = aws.dynamodb.KinesisStreamingDestination(\"example\",\n stream_arn=example_stream.arn,\n table_name=example.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.DynamoDB.Table(\"example\", new()\n {\n Name = \"orders\",\n HashKey = \"id\",\n Attributes = new[]\n {\n new Aws.DynamoDB.Inputs.TableAttributeArgs\n {\n Name = \"id\",\n Type = \"S\",\n },\n },\n });\n\n var exampleStream = new Aws.Kinesis.Stream(\"example\", new()\n {\n Name = \"order_item_changes\",\n ShardCount = 1,\n });\n\n var exampleKinesisStreamingDestination = new Aws.DynamoDB.KinesisStreamingDestination(\"example\", new()\n {\n StreamArn = exampleStream.Arn,\n TableName = example.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/dynamodb\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := dynamodb.NewTable(ctx, \"example\", \u0026dynamodb.TableArgs{\n\t\t\tName: pulumi.String(\"orders\"),\n\t\t\tHashKey: pulumi.String(\"id\"),\n\t\t\tAttributes: dynamodb.TableAttributeArray{\n\t\t\t\t\u0026dynamodb.TableAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"id\"),\n\t\t\t\t\tType: pulumi.String(\"S\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleStream, err := kinesis.NewStream(ctx, \"example\", \u0026kinesis.StreamArgs{\n\t\t\tName: pulumi.String(\"order_item_changes\"),\n\t\t\tShardCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dynamodb.NewKinesisStreamingDestination(ctx, \"example\", \u0026dynamodb.KinesisStreamingDestinationArgs{\n\t\t\tStreamArn: exampleStream.Arn,\n\t\t\tTableName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dynamodb.Table;\nimport com.pulumi.aws.dynamodb.TableArgs;\nimport com.pulumi.aws.dynamodb.inputs.TableAttributeArgs;\nimport com.pulumi.aws.kinesis.Stream;\nimport com.pulumi.aws.kinesis.StreamArgs;\nimport com.pulumi.aws.dynamodb.KinesisStreamingDestination;\nimport com.pulumi.aws.dynamodb.KinesisStreamingDestinationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Table(\"example\", TableArgs.builder()\n .name(\"orders\")\n .hashKey(\"id\")\n .attributes(TableAttributeArgs.builder()\n .name(\"id\")\n .type(\"S\")\n .build())\n .build());\n\n var exampleStream = new Stream(\"exampleStream\", StreamArgs.builder()\n .name(\"order_item_changes\")\n .shardCount(1)\n .build());\n\n var exampleKinesisStreamingDestination = new KinesisStreamingDestination(\"exampleKinesisStreamingDestination\", KinesisStreamingDestinationArgs.builder()\n .streamArn(exampleStream.arn())\n .tableName(example.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:dynamodb:Table\n properties:\n name: orders\n hashKey: id\n attributes:\n - name: id\n type: S\n exampleStream:\n type: aws:kinesis:Stream\n name: example\n properties:\n name: order_item_changes\n shardCount: 1\n exampleKinesisStreamingDestination:\n type: aws:dynamodb:KinesisStreamingDestination\n name: example\n properties:\n streamArn: ${exampleStream.arn}\n tableName: ${example.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DynamoDB Kinesis Streaming Destinations using the `table_name` and `stream_arn` separated by `,`. For example:\n\n```sh\n$ pulumi import aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination example example,arn:aws:kinesis:us-east-1:111122223333:exampleStreamName\n```\n",
+ "description": "Enables a [Kinesis streaming destination](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html) for data replication of a DynamoDB table.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.dynamodb.Table(\"example\", {\n name: \"orders\",\n hashKey: \"id\",\n attributes: [{\n name: \"id\",\n type: \"S\",\n }],\n});\nconst exampleStream = new aws.kinesis.Stream(\"example\", {\n name: \"order_item_changes\",\n shardCount: 1,\n});\nconst exampleKinesisStreamingDestination = new aws.dynamodb.KinesisStreamingDestination(\"example\", {\n streamArn: exampleStream.arn,\n tableName: example.name,\n approximateCreationDateTimePrecision: \"MICROSECOND\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.dynamodb.Table(\"example\",\n name=\"orders\",\n hash_key=\"id\",\n attributes=[{\n \"name\": \"id\",\n \"type\": \"S\",\n }])\nexample_stream = aws.kinesis.Stream(\"example\",\n name=\"order_item_changes\",\n shard_count=1)\nexample_kinesis_streaming_destination = aws.dynamodb.KinesisStreamingDestination(\"example\",\n stream_arn=example_stream.arn,\n table_name=example.name,\n approximate_creation_date_time_precision=\"MICROSECOND\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.DynamoDB.Table(\"example\", new()\n {\n Name = \"orders\",\n HashKey = \"id\",\n Attributes = new[]\n {\n new Aws.DynamoDB.Inputs.TableAttributeArgs\n {\n Name = \"id\",\n Type = \"S\",\n },\n },\n });\n\n var exampleStream = new Aws.Kinesis.Stream(\"example\", new()\n {\n Name = \"order_item_changes\",\n ShardCount = 1,\n });\n\n var exampleKinesisStreamingDestination = new Aws.DynamoDB.KinesisStreamingDestination(\"example\", new()\n {\n StreamArn = exampleStream.Arn,\n TableName = example.Name,\n ApproximateCreationDateTimePrecision = \"MICROSECOND\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/dynamodb\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := dynamodb.NewTable(ctx, \"example\", \u0026dynamodb.TableArgs{\n\t\t\tName: pulumi.String(\"orders\"),\n\t\t\tHashKey: pulumi.String(\"id\"),\n\t\t\tAttributes: dynamodb.TableAttributeArray{\n\t\t\t\t\u0026dynamodb.TableAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"id\"),\n\t\t\t\t\tType: pulumi.String(\"S\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleStream, err := kinesis.NewStream(ctx, \"example\", \u0026kinesis.StreamArgs{\n\t\t\tName: pulumi.String(\"order_item_changes\"),\n\t\t\tShardCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dynamodb.NewKinesisStreamingDestination(ctx, \"example\", \u0026dynamodb.KinesisStreamingDestinationArgs{\n\t\t\tStreamArn: exampleStream.Arn,\n\t\t\tTableName: example.Name,\n\t\t\tApproximateCreationDateTimePrecision: pulumi.String(\"MICROSECOND\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dynamodb.Table;\nimport com.pulumi.aws.dynamodb.TableArgs;\nimport com.pulumi.aws.dynamodb.inputs.TableAttributeArgs;\nimport com.pulumi.aws.kinesis.Stream;\nimport com.pulumi.aws.kinesis.StreamArgs;\nimport com.pulumi.aws.dynamodb.KinesisStreamingDestination;\nimport com.pulumi.aws.dynamodb.KinesisStreamingDestinationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Table(\"example\", TableArgs.builder()\n .name(\"orders\")\n .hashKey(\"id\")\n .attributes(TableAttributeArgs.builder()\n .name(\"id\")\n .type(\"S\")\n .build())\n .build());\n\n var exampleStream = new Stream(\"exampleStream\", StreamArgs.builder()\n .name(\"order_item_changes\")\n .shardCount(1)\n .build());\n\n var exampleKinesisStreamingDestination = new KinesisStreamingDestination(\"exampleKinesisStreamingDestination\", KinesisStreamingDestinationArgs.builder()\n .streamArn(exampleStream.arn())\n .tableName(example.name())\n .approximateCreationDateTimePrecision(\"MICROSECOND\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:dynamodb:Table\n properties:\n name: orders\n hashKey: id\n attributes:\n - name: id\n type: S\n exampleStream:\n type: aws:kinesis:Stream\n name: example\n properties:\n name: order_item_changes\n shardCount: 1\n exampleKinesisStreamingDestination:\n type: aws:dynamodb:KinesisStreamingDestination\n name: example\n properties:\n streamArn: ${exampleStream.arn}\n tableName: ${example.name}\n approximateCreationDateTimePrecision: MICROSECOND\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DynamoDB Kinesis Streaming Destinations using the `table_name` and `stream_arn` separated by `,`. For example:\n\n```sh\n$ pulumi import aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination example example,arn:aws:kinesis:us-east-1:111122223333:exampleStreamName\n```\n",
"properties": {
+ "approximateCreationDateTimePrecision": {
+ "type": "string",
+ "description": "Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.\n"
+ },
"streamArn": {
"type": "string",
"description": "The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.\n"
},
"tableName": {
"type": "string",
- "description": "The name of the DynamoDB table. There\ncan only be one Kinesis streaming destination for a given DynamoDB table.\n"
+ "description": "The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.\n"
}
},
"required": [
+ "approximateCreationDateTimePrecision",
"streamArn",
"tableName"
],
"inputProperties": {
+ "approximateCreationDateTimePrecision": {
+ "type": "string",
+ "description": "Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.\n",
+ "willReplaceOnChanges": true
+ },
"streamArn": {
"type": "string",
"description": "The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.\n",
@@ -227822,7 +228916,7 @@
},
"tableName": {
"type": "string",
- "description": "The name of the DynamoDB table. There\ncan only be one Kinesis streaming destination for a given DynamoDB table.\n",
+ "description": "The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.\n",
"willReplaceOnChanges": true
}
},
@@ -227833,6 +228927,11 @@
"stateInputs": {
"description": "Input properties used for looking up and filtering KinesisStreamingDestination resources.\n",
"properties": {
+ "approximateCreationDateTimePrecision": {
+ "type": "string",
+ "description": "Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.\n",
+ "willReplaceOnChanges": true
+ },
"streamArn": {
"type": "string",
"description": "The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.\n",
@@ -227840,7 +228939,7 @@
},
"tableName": {
"type": "string",
- "description": "The name of the DynamoDB table. There\ncan only be one Kinesis streaming destination for a given DynamoDB table.\n",
+ "description": "The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.\n",
"willReplaceOnChanges": true
}
},
@@ -254227,7 +255326,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n"
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.\n"
},
"engineVersion": {
"type": "string",
@@ -254398,7 +255497,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n",
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.\n",
"willReplaceOnChanges": true
},
"engineVersion": {
@@ -254561,7 +255660,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n",
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.\n",
"willReplaceOnChanges": true
},
"engineVersion": {
@@ -254694,7 +255793,7 @@
}
},
"aws:elasticache/globalReplicationGroup:GlobalReplicationGroup": {
- "description": "Provides an ElastiCache Global Replication Group resource, which manages replication between two or more Replication Groups in different regions. For more information, see the [ElastiCache User Guide](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html).\n\n## Example Usage\n\n### Global replication group with one secondary replication group\n\nThe global replication group depends on the primary group existing. Secondary replication groups depend on the global replication group. the provider dependency management will handle this transparently using resource value references.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"5.0.6\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"5.0.6\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id)\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"5.0.6\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"5.0.6\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: 5.0.6\n nodeType: cache.m5.large\n numCacheClusters: 1\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Managing Redis Engine Versions\n\nThe initial Redis version is determined by the version set on the primary replication group.\nHowever, once it is part of a Global Replication Group,\nthe Global Replication Group manages the version of all member replication groups.\n\nThe member replication groups must have `lifecycle.ignore_changes[engine_version]` set,\nor the provider will always return a diff.\n\nIn this example,\nthe primary replication group will be created with Redis 6.0,\nand then upgraded to Redis 6.2 once added to the Global Replication Group.\nThe secondary replication group will be created with Redis 6.2.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"6.0\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n engineVersion: \"6.2\",\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"6.0\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id,\n engine_version=\"6.2\")\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"6.0\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n EngineVersion = \"6.2\",\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"6.0\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t\tEngineVersion: pulumi.String(\"6.2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"6.0\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .engineVersion(\"6.2\")\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n engineVersion: '6.2'\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: '6.0'\n nodeType: cache.m5.large\n numCacheClusters: 1\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Global Replication Groups using the `global_replication_group_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/globalReplicationGroup:GlobalReplicationGroup my_global_replication_group okuqm-global-replication-group-1\n```\n",
+ "description": "Provides an ElastiCache Global Replication Group resource, which manages replication between two or more Replication Groups in different regions. For more information, see the [ElastiCache User Guide](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html).\n\n## Example Usage\n\n### Global replication group with one secondary replication group\n\nThe global replication group depends on the primary group existing. Secondary replication groups depend on the global replication group. the provider dependency management will handle this transparently using resource value references.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"5.0.6\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"5.0.6\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id)\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"5.0.6\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"5.0.6\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: 5.0.6\n nodeType: cache.m5.large\n numCacheClusters: 1\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Managing Redis OOS/Valkey Engine Versions\n\nThe initial Redis version is determined by the version set on the primary replication group.\nHowever, once it is part of a Global Replication Group,\nthe Global Replication Group manages the version of all member replication groups.\n\nThe member replication groups must have `lifecycle.ignore_changes[engine_version]` set,\nor the provider will always return a diff.\n\nIn this example,\nthe primary replication group will be created with Redis 6.0,\nand then upgraded to Redis 6.2 once added to the Global Replication Group.\nThe secondary replication group will be created with Redis 6.2.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"6.0\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n engineVersion: \"6.2\",\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"6.0\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id,\n engine_version=\"6.2\")\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"6.0\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n EngineVersion = \"6.2\",\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"6.0\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t\tEngineVersion: pulumi.String(\"6.2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"6.0\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .engineVersion(\"6.2\")\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n engineVersion: '6.2'\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: '6.0'\n nodeType: cache.m5.large\n numCacheClusters: 1\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Global Replication Groups using the `global_replication_group_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/globalReplicationGroup:GlobalReplicationGroup my_global_replication_group okuqm-global-replication-group-1\n```\n",
"properties": {
"arn": {
"type": "string",
@@ -255040,7 +256139,7 @@
}
},
"aws:elasticache/replicationGroup:ReplicationGroup": {
- "description": "Provides an ElastiCache Replication Group resource.\n\nFor working with a [Memcached cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) or a\n[single-node Redis instance (Cluster Mode Disabled)](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html),\nsee the `aws.elasticache.Cluster` resource.\n\n\u003e **Note:** When you change an attribute, such as `engine_version`, by\ndefault the ElastiCache API applies it in the next maintenance window. Because\nof this, this provider may report a difference in its planning phase because the\nactual modification has not yet taken place. You can use the\n`apply_immediately` flag to instruct the service to apply the change\nimmediately. Using `apply_immediately` can result in a brief downtime as\nservers reboots.\nSee the AWS Documentation on\n[Modifying an ElastiCache Cache Cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Modify.html)\nfor more information.\n\n\u003e **Note:** Any attribute changes that re-create the resource will be applied immediately, regardless of the value of `apply_immediately`.\n\n\u003e **Note:** Be aware of the terminology collision around \"cluster\" for `aws.elasticache.ReplicationGroup`. For example, it is possible to create a [\"Cluster Mode Disabled [Redis] Cluster\"](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Create.CON.Redis.html). With \"Cluster Mode Enabled\", the data will be stored in shards (called \"node groups\"). See [Redis Cluster Configuration](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/cluster-create-determine-requirements.html#redis-cluster-configuration) for a diagram of the differences. To enable cluster mode, use a parameter group that has cluster mode enabled. The default parameter groups provided by AWS end with \".cluster.on\", for example `default.redis6.x.cluster.on`.\n\n## Example Usage\n\n### Redis Cluster Mode Disabled\n\nTo create a single shard primary with single read replica:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n automaticFailoverEnabled: true,\n preferredCacheClusterAzs: [\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replicationGroupId: \"tf-rep-group-1\",\n description: \"example description\",\n nodeType: \"cache.m4.large\",\n numCacheClusters: 2,\n parameterGroupName: \"default.redis3.2\",\n port: 6379,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n automatic_failover_enabled=True,\n preferred_cache_cluster_azs=[\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replication_group_id=\"tf-rep-group-1\",\n description=\"example description\",\n node_type=\"cache.m4.large\",\n num_cache_clusters=2,\n parameter_group_name=\"default.redis3.2\",\n port=6379)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n AutomaticFailoverEnabled = true,\n PreferredCacheClusterAzs = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n },\n ReplicationGroupId = \"tf-rep-group-1\",\n Description = \"example description\",\n NodeType = \"cache.m4.large\",\n NumCacheClusters = 2,\n ParameterGroupName = \"default.redis3.2\",\n Port = 6379,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tPreferredCacheClusterAzs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t},\n\t\t\tReplicationGroupId: pulumi.String(\"tf-rep-group-1\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.m4.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(2),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .automaticFailoverEnabled(true)\n .preferredCacheClusterAzs( \n \"us-west-2a\",\n \"us-west-2b\")\n .replicationGroupId(\"tf-rep-group-1\")\n .description(\"example description\")\n .nodeType(\"cache.m4.large\")\n .numCacheClusters(2)\n .parameterGroupName(\"default.redis3.2\")\n .port(6379)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n automaticFailoverEnabled: true\n preferredCacheClusterAzs:\n - us-west-2a\n - us-west-2b\n replicationGroupId: tf-rep-group-1\n description: example description\n nodeType: cache.m4.large\n numCacheClusters: 2\n parameterGroupName: default.redis3.2\n port: 6379\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou have two options for adjusting the number of replicas:\n\n* Adjusting `num_cache_clusters` directly. This will attempt to automatically add or remove replicas, but provides no granular control (e.g., preferred availability zone, cache cluster ID) for the added or removed replicas. This also currently expects cache cluster IDs in the form of `replication_group_id-00#`.\n* Otherwise for fine grained control of the underlying cache clusters, they can be added or removed with the `aws.elasticache.Cluster` resource and its `replication_group_id` attribute. In this situation, you will need to utilize [`ignoreChanges`](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to prevent perpetual differences with the `number_cache_cluster` attribute.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n automaticFailoverEnabled: true,\n preferredCacheClusterAzs: [\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replicationGroupId: \"tf-rep-group-1\",\n description: \"example description\",\n nodeType: \"cache.m4.large\",\n numCacheClusters: 2,\n parameterGroupName: \"default.redis3.2\",\n port: 6379,\n});\nconst replica: aws.elasticache.Cluster[] = [];\nfor (const range = {value: 0}; range.value \u003c 1; range.value++) {\n replica.push(new aws.elasticache.Cluster(`replica-${range.value}`, {\n clusterId: `tf-rep-group-1-${range.value}`,\n replicationGroupId: example.id,\n }));\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n automatic_failover_enabled=True,\n preferred_cache_cluster_azs=[\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replication_group_id=\"tf-rep-group-1\",\n description=\"example description\",\n node_type=\"cache.m4.large\",\n num_cache_clusters=2,\n parameter_group_name=\"default.redis3.2\",\n port=6379)\nreplica = []\nfor range in [{\"value\": i} for i in range(0, 1)]:\n replica.append(aws.elasticache.Cluster(f\"replica-{range['value']}\",\n cluster_id=f\"tf-rep-group-1-{range['value']}\",\n replication_group_id=example.id))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n AutomaticFailoverEnabled = true,\n PreferredCacheClusterAzs = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n },\n ReplicationGroupId = \"tf-rep-group-1\",\n Description = \"example description\",\n NodeType = \"cache.m4.large\",\n NumCacheClusters = 2,\n ParameterGroupName = \"default.redis3.2\",\n Port = 6379,\n });\n\n var replica = new List\u003cAws.ElastiCache.Cluster\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c 1; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n replica.Add(new Aws.ElastiCache.Cluster($\"replica-{range.Value}\", new()\n {\n ClusterId = $\"tf-rep-group-1-{range.Value}\",\n ReplicationGroupId = example.Id,\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tPreferredCacheClusterAzs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t},\n\t\t\tReplicationGroupId: pulumi.String(\"tf-rep-group-1\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.m4.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(2),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar replica []*elasticache.Cluster\n\t\tfor index := 0; index \u003c 1; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := elasticache.NewCluster(ctx, fmt.Sprintf(\"replica-%v\", key0), \u0026elasticache.ClusterArgs{\n\t\t\t\tClusterId: pulumi.Sprintf(\"tf-rep-group-1-%v\", val0),\n\t\t\t\tReplicationGroupId: example.ID(),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treplica = append(replica, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.Cluster;\nimport com.pulumi.aws.elasticache.ClusterArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .automaticFailoverEnabled(true)\n .preferredCacheClusterAzs( \n \"us-west-2a\",\n \"us-west-2b\")\n .replicationGroupId(\"tf-rep-group-1\")\n .description(\"example description\")\n .nodeType(\"cache.m4.large\")\n .numCacheClusters(2)\n .parameterGroupName(\"default.redis3.2\")\n .port(6379)\n .build());\n\n for (var i = 0; i \u003c 1; i++) {\n new Cluster(\"replica-\" + i, ClusterArgs.builder()\n .clusterId(String.format(\"tf-rep-group-1-%s\", range.value()))\n .replicationGroupId(example.id())\n .build());\n\n \n}\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n automaticFailoverEnabled: true\n preferredCacheClusterAzs:\n - us-west-2a\n - us-west-2b\n replicationGroupId: tf-rep-group-1\n description: example description\n nodeType: cache.m4.large\n numCacheClusters: 2\n parameterGroupName: default.redis3.2\n port: 6379\n replica:\n type: aws:elasticache:Cluster\n properties:\n clusterId: tf-rep-group-1-${range.value}\n replicationGroupId: ${example.id}\n options: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis Cluster Mode Enabled\n\nTo create two shards with a primary and a single read replica each:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst baz = new aws.elasticache.ReplicationGroup(\"baz\", {\n replicationGroupId: \"tf-redis-cluster\",\n description: \"example description\",\n nodeType: \"cache.t2.small\",\n port: 6379,\n parameterGroupName: \"default.redis3.2.cluster.on\",\n automaticFailoverEnabled: true,\n numNodeGroups: 2,\n replicasPerNodeGroup: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbaz = aws.elasticache.ReplicationGroup(\"baz\",\n replication_group_id=\"tf-redis-cluster\",\n description=\"example description\",\n node_type=\"cache.t2.small\",\n port=6379,\n parameter_group_name=\"default.redis3.2.cluster.on\",\n automatic_failover_enabled=True,\n num_node_groups=2,\n replicas_per_node_group=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var baz = new Aws.ElastiCache.ReplicationGroup(\"baz\", new()\n {\n ReplicationGroupId = \"tf-redis-cluster\",\n Description = \"example description\",\n NodeType = \"cache.t2.small\",\n Port = 6379,\n ParameterGroupName = \"default.redis3.2.cluster.on\",\n AutomaticFailoverEnabled = true,\n NumNodeGroups = 2,\n ReplicasPerNodeGroup = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"baz\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"tf-redis-cluster\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.t2.small\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2.cluster.on\"),\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tNumNodeGroups: pulumi.Int(2),\n\t\t\tReplicasPerNodeGroup: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var baz = new ReplicationGroup(\"baz\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"tf-redis-cluster\")\n .description(\"example description\")\n .nodeType(\"cache.t2.small\")\n .port(6379)\n .parameterGroupName(\"default.redis3.2.cluster.on\")\n .automaticFailoverEnabled(true)\n .numNodeGroups(2)\n .replicasPerNodeGroup(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n baz:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: tf-redis-cluster\n description: example description\n nodeType: cache.t2.small\n port: 6379\n parameterGroupName: default.redis3.2.cluster.on\n automaticFailoverEnabled: true\n numNodeGroups: 2\n replicasPerNodeGroup: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis Log Delivery configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.elasticache.ReplicationGroup(\"test\", {\n replicationGroupId: \"myreplicaciongroup\",\n description: \"test description\",\n nodeType: \"cache.t3.small\",\n port: 6379,\n applyImmediately: true,\n autoMinorVersionUpgrade: false,\n maintenanceWindow: \"tue:06:30-tue:07:30\",\n snapshotWindow: \"01:00-02:00\",\n logDeliveryConfigurations: [\n {\n destination: example.name,\n destinationType: \"cloudwatch-logs\",\n logFormat: \"text\",\n logType: \"slow-log\",\n },\n {\n destination: exampleAwsKinesisFirehoseDeliveryStream.name,\n destinationType: \"kinesis-firehose\",\n logFormat: \"json\",\n logType: \"engine-log\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.elasticache.ReplicationGroup(\"test\",\n replication_group_id=\"myreplicaciongroup\",\n description=\"test description\",\n node_type=\"cache.t3.small\",\n port=6379,\n apply_immediately=True,\n auto_minor_version_upgrade=False,\n maintenance_window=\"tue:06:30-tue:07:30\",\n snapshot_window=\"01:00-02:00\",\n log_delivery_configurations=[\n {\n \"destination\": example[\"name\"],\n \"destination_type\": \"cloudwatch-logs\",\n \"log_format\": \"text\",\n \"log_type\": \"slow-log\",\n },\n {\n \"destination\": example_aws_kinesis_firehose_delivery_stream[\"name\"],\n \"destination_type\": \"kinesis-firehose\",\n \"log_format\": \"json\",\n \"log_type\": \"engine-log\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.ElastiCache.ReplicationGroup(\"test\", new()\n {\n ReplicationGroupId = \"myreplicaciongroup\",\n Description = \"test description\",\n NodeType = \"cache.t3.small\",\n Port = 6379,\n ApplyImmediately = true,\n AutoMinorVersionUpgrade = false,\n MaintenanceWindow = \"tue:06:30-tue:07:30\",\n SnapshotWindow = \"01:00-02:00\",\n LogDeliveryConfigurations = new[]\n {\n new Aws.ElastiCache.Inputs.ReplicationGroupLogDeliveryConfigurationArgs\n {\n Destination = example.Name,\n DestinationType = \"cloudwatch-logs\",\n LogFormat = \"text\",\n LogType = \"slow-log\",\n },\n new Aws.ElastiCache.Inputs.ReplicationGroupLogDeliveryConfigurationArgs\n {\n Destination = exampleAwsKinesisFirehoseDeliveryStream.Name,\n DestinationType = \"kinesis-firehose\",\n LogFormat = \"json\",\n LogType = \"engine-log\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"test\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"myreplicaciongroup\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tNodeType: pulumi.String(\"cache.t3.small\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tApplyImmediately: pulumi.Bool(true),\n\t\t\tAutoMinorVersionUpgrade: pulumi.Bool(false),\n\t\t\tMaintenanceWindow: pulumi.String(\"tue:06:30-tue:07:30\"),\n\t\t\tSnapshotWindow: pulumi.String(\"01:00-02:00\"),\n\t\t\tLogDeliveryConfigurations: elasticache.ReplicationGroupLogDeliveryConfigurationArray{\n\t\t\t\t\u0026elasticache.ReplicationGroupLogDeliveryConfigurationArgs{\n\t\t\t\t\tDestination: pulumi.Any(example.Name),\n\t\t\t\t\tDestinationType: pulumi.String(\"cloudwatch-logs\"),\n\t\t\t\t\tLogFormat: pulumi.String(\"text\"),\n\t\t\t\t\tLogType: pulumi.String(\"slow-log\"),\n\t\t\t\t},\n\t\t\t\t\u0026elasticache.ReplicationGroupLogDeliveryConfigurationArgs{\n\t\t\t\t\tDestination: pulumi.Any(exampleAwsKinesisFirehoseDeliveryStream.Name),\n\t\t\t\t\tDestinationType: pulumi.String(\"kinesis-firehose\"),\n\t\t\t\t\tLogFormat: pulumi.String(\"json\"),\n\t\t\t\t\tLogType: pulumi.String(\"engine-log\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.inputs.ReplicationGroupLogDeliveryConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new ReplicationGroup(\"test\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"myreplicaciongroup\")\n .description(\"test description\")\n .nodeType(\"cache.t3.small\")\n .port(6379)\n .applyImmediately(true)\n .autoMinorVersionUpgrade(false)\n .maintenanceWindow(\"tue:06:30-tue:07:30\")\n .snapshotWindow(\"01:00-02:00\")\n .logDeliveryConfigurations( \n ReplicationGroupLogDeliveryConfigurationArgs.builder()\n .destination(example.name())\n .destinationType(\"cloudwatch-logs\")\n .logFormat(\"text\")\n .logType(\"slow-log\")\n .build(),\n ReplicationGroupLogDeliveryConfigurationArgs.builder()\n .destination(exampleAwsKinesisFirehoseDeliveryStream.name())\n .destinationType(\"kinesis-firehose\")\n .logFormat(\"json\")\n .logType(\"engine-log\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: myreplicaciongroup\n description: test description\n nodeType: cache.t3.small\n port: 6379\n applyImmediately: true\n autoMinorVersionUpgrade: false\n maintenanceWindow: tue:06:30-tue:07:30\n snapshotWindow: 01:00-02:00\n logDeliveryConfigurations:\n - destination: ${example.name}\n destinationType: cloudwatch-logs\n logFormat: text\n logType: slow-log\n - destination: ${exampleAwsKinesisFirehoseDeliveryStream.name}\n destinationType: kinesis-firehose\n logFormat: json\n logType: engine-log\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** We currently do not support passing a `primary_cluster_id` in order to create the Replication Group.\n\n\u003e **Note:** Automatic Failover is unavailable for Redis versions earlier than 2.8.6,\nand unavailable on T1 node types. For T2 node types, it is only available on Redis version 3.2.4 or later with cluster mode enabled. See the [High Availability Using Replication Groups](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Replication.html) guide\nfor full details on using Replication Groups.\n\n### Creating a secondary replication group for a global replication group\n\nA Global Replication Group can have one one two secondary Replication Groups in different regions. These are added to an existing Global Replication Group.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"5.0.6\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"5.0.6\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id)\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"5.0.6\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"5.0.6\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: 5.0.6\n nodeType: cache.m5.large\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis AUTH and In-Transit Encryption Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n replicationGroupId: \"example\",\n description: \"example with authentication\",\n nodeType: \"cache.t2.micro\",\n numCacheClusters: 1,\n port: 6379,\n subnetGroupName: exampleAwsElasticacheSubnetGroup.name,\n securityGroupIds: [exampleAwsSecurityGroup.id],\n parameterGroupName: \"default.redis5.0\",\n engineVersion: \"5.0.6\",\n transitEncryptionEnabled: true,\n authToken: \"abcdefgh1234567890\",\n authTokenUpdateStrategy: \"ROTATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n replication_group_id=\"example\",\n description=\"example with authentication\",\n node_type=\"cache.t2.micro\",\n num_cache_clusters=1,\n port=6379,\n subnet_group_name=example_aws_elasticache_subnet_group[\"name\"],\n security_group_ids=[example_aws_security_group[\"id\"]],\n parameter_group_name=\"default.redis5.0\",\n engine_version=\"5.0.6\",\n transit_encryption_enabled=True,\n auth_token=\"abcdefgh1234567890\",\n auth_token_update_strategy=\"ROTATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n ReplicationGroupId = \"example\",\n Description = \"example with authentication\",\n NodeType = \"cache.t2.micro\",\n NumCacheClusters = 1,\n Port = 6379,\n SubnetGroupName = exampleAwsElasticacheSubnetGroup.Name,\n SecurityGroupIds = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n ParameterGroupName = \"default.redis5.0\",\n EngineVersion = \"5.0.6\",\n TransitEncryptionEnabled = true,\n AuthToken = \"abcdefgh1234567890\",\n AuthTokenUpdateStrategy = \"ROTATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example\"),\n\t\t\tDescription: pulumi.String(\"example with authentication\"),\n\t\t\tNodeType: pulumi.String(\"cache.t2.micro\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tSubnetGroupName: pulumi.Any(exampleAwsElasticacheSubnetGroup.Name),\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t},\n\t\t\tParameterGroupName: pulumi.String(\"default.redis5.0\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tTransitEncryptionEnabled: pulumi.Bool(true),\n\t\t\tAuthToken: pulumi.String(\"abcdefgh1234567890\"),\n\t\t\tAuthTokenUpdateStrategy: pulumi.String(\"ROTATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example\")\n .description(\"example with authentication\")\n .nodeType(\"cache.t2.micro\")\n .numCacheClusters(1)\n .port(6379)\n .subnetGroupName(exampleAwsElasticacheSubnetGroup.name())\n .securityGroupIds(exampleAwsSecurityGroup.id())\n .parameterGroupName(\"default.redis5.0\")\n .engineVersion(\"5.0.6\")\n .transitEncryptionEnabled(true)\n .authToken(\"abcdefgh1234567890\")\n .authTokenUpdateStrategy(\"ROTATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example\n description: example with authentication\n nodeType: cache.t2.micro\n numCacheClusters: 1\n port: 6379\n subnetGroupName: ${exampleAwsElasticacheSubnetGroup.name}\n securityGroupIds:\n - ${exampleAwsSecurityGroup.id}\n parameterGroupName: default.redis5.0\n engineVersion: 5.0.6\n transitEncryptionEnabled: true\n authToken: abcdefgh1234567890\n authTokenUpdateStrategy: ROTATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e When adding a new `auth_token` to a previously passwordless replication group, using the `ROTATE` update strategy will result in support for **both** the new token and passwordless authentication. To immediately require authorization when adding the initial token, use the `SET` strategy instead. See the [Authenticating with the Redis AUTH command](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html) guide for additional details.\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Replication Groups using the `replication_group_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/replicationGroup:ReplicationGroup my_replication_group replication-group-1\n```\n",
+ "description": "Provides an ElastiCache Replication Group resource.\n\nFor working with a [Memcached cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) or a\n[single-node Redis instance (Cluster Mode Disabled)](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html),\nsee the `aws.elasticache.Cluster` resource.\n\n\u003e **Note:** When you change an attribute, such as `engine_version`, by\ndefault the ElastiCache API applies it in the next maintenance window. Because\nof this, this provider may report a difference in its planning phase because the\nactual modification has not yet taken place. You can use the\n`apply_immediately` flag to instruct the service to apply the change\nimmediately. Using `apply_immediately` can result in a brief downtime as\nservers reboots.\nSee the AWS Documentation on\n[Modifying an ElastiCache Cache Cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Modify.html)\nfor more information.\n\n\u003e **Note:** Any attribute changes that re-create the resource will be applied immediately, regardless of the value of `apply_immediately`.\n\n\u003e **Note:** Be aware of the terminology collision around \"cluster\" for `aws.elasticache.ReplicationGroup`. For example, it is possible to create a [\"Cluster Mode Disabled [Redis] Cluster\"](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Create.CON.Redis.html). With \"Cluster Mode Enabled\", the data will be stored in shards (called \"node groups\"). See [Redis Cluster Configuration](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/cluster-create-determine-requirements.html#redis-cluster-configuration) for a diagram of the differences. To enable cluster mode, use a parameter group that has cluster mode enabled. The default parameter groups provided by AWS end with \".cluster.on\", for example `default.redis6.x.cluster.on`.\n\n## Example Usage\n\n### Redis OSS/Valkey Cluster Mode Disabled\n\nTo create a single shard primary with single read replica:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n automaticFailoverEnabled: true,\n preferredCacheClusterAzs: [\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replicationGroupId: \"tf-rep-group-1\",\n description: \"example description\",\n nodeType: \"cache.m4.large\",\n numCacheClusters: 2,\n parameterGroupName: \"default.redis3.2\",\n port: 6379,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n automatic_failover_enabled=True,\n preferred_cache_cluster_azs=[\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replication_group_id=\"tf-rep-group-1\",\n description=\"example description\",\n node_type=\"cache.m4.large\",\n num_cache_clusters=2,\n parameter_group_name=\"default.redis3.2\",\n port=6379)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n AutomaticFailoverEnabled = true,\n PreferredCacheClusterAzs = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n },\n ReplicationGroupId = \"tf-rep-group-1\",\n Description = \"example description\",\n NodeType = \"cache.m4.large\",\n NumCacheClusters = 2,\n ParameterGroupName = \"default.redis3.2\",\n Port = 6379,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tPreferredCacheClusterAzs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t},\n\t\t\tReplicationGroupId: pulumi.String(\"tf-rep-group-1\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.m4.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(2),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .automaticFailoverEnabled(true)\n .preferredCacheClusterAzs( \n \"us-west-2a\",\n \"us-west-2b\")\n .replicationGroupId(\"tf-rep-group-1\")\n .description(\"example description\")\n .nodeType(\"cache.m4.large\")\n .numCacheClusters(2)\n .parameterGroupName(\"default.redis3.2\")\n .port(6379)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n automaticFailoverEnabled: true\n preferredCacheClusterAzs:\n - us-west-2a\n - us-west-2b\n replicationGroupId: tf-rep-group-1\n description: example description\n nodeType: cache.m4.large\n numCacheClusters: 2\n parameterGroupName: default.redis3.2\n port: 6379\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou have two options for adjusting the number of replicas:\n\n* Adjusting `num_cache_clusters` directly. This will attempt to automatically add or remove replicas, but provides no granular control (e.g., preferred availability zone, cache cluster ID) for the added or removed replicas. This also currently expects cache cluster IDs in the form of `replication_group_id-00#`.\n* Otherwise for fine grained control of the underlying cache clusters, they can be added or removed with the `aws.elasticache.Cluster` resource and its `replication_group_id` attribute. In this situation, you will need to utilize [`ignoreChanges`](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to prevent perpetual differences with the `number_cache_cluster` attribute.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n automaticFailoverEnabled: true,\n preferredCacheClusterAzs: [\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replicationGroupId: \"tf-rep-group-1\",\n description: \"example description\",\n nodeType: \"cache.m4.large\",\n numCacheClusters: 2,\n parameterGroupName: \"default.redis3.2\",\n port: 6379,\n});\nconst replica: aws.elasticache.Cluster[] = [];\nfor (const range = {value: 0}; range.value \u003c 1; range.value++) {\n replica.push(new aws.elasticache.Cluster(`replica-${range.value}`, {\n clusterId: `tf-rep-group-1-${range.value}`,\n replicationGroupId: example.id,\n }));\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n automatic_failover_enabled=True,\n preferred_cache_cluster_azs=[\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replication_group_id=\"tf-rep-group-1\",\n description=\"example description\",\n node_type=\"cache.m4.large\",\n num_cache_clusters=2,\n parameter_group_name=\"default.redis3.2\",\n port=6379)\nreplica = []\nfor range in [{\"value\": i} for i in range(0, 1)]:\n replica.append(aws.elasticache.Cluster(f\"replica-{range['value']}\",\n cluster_id=f\"tf-rep-group-1-{range['value']}\",\n replication_group_id=example.id))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n AutomaticFailoverEnabled = true,\n PreferredCacheClusterAzs = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n },\n ReplicationGroupId = \"tf-rep-group-1\",\n Description = \"example description\",\n NodeType = \"cache.m4.large\",\n NumCacheClusters = 2,\n ParameterGroupName = \"default.redis3.2\",\n Port = 6379,\n });\n\n var replica = new List\u003cAws.ElastiCache.Cluster\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c 1; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n replica.Add(new Aws.ElastiCache.Cluster($\"replica-{range.Value}\", new()\n {\n ClusterId = $\"tf-rep-group-1-{range.Value}\",\n ReplicationGroupId = example.Id,\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tPreferredCacheClusterAzs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t},\n\t\t\tReplicationGroupId: pulumi.String(\"tf-rep-group-1\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.m4.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(2),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar replica []*elasticache.Cluster\n\t\tfor index := 0; index \u003c 1; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := elasticache.NewCluster(ctx, fmt.Sprintf(\"replica-%v\", key0), \u0026elasticache.ClusterArgs{\n\t\t\t\tClusterId: pulumi.Sprintf(\"tf-rep-group-1-%v\", val0),\n\t\t\t\tReplicationGroupId: example.ID(),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treplica = append(replica, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.Cluster;\nimport com.pulumi.aws.elasticache.ClusterArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .automaticFailoverEnabled(true)\n .preferredCacheClusterAzs( \n \"us-west-2a\",\n \"us-west-2b\")\n .replicationGroupId(\"tf-rep-group-1\")\n .description(\"example description\")\n .nodeType(\"cache.m4.large\")\n .numCacheClusters(2)\n .parameterGroupName(\"default.redis3.2\")\n .port(6379)\n .build());\n\n for (var i = 0; i \u003c 1; i++) {\n new Cluster(\"replica-\" + i, ClusterArgs.builder()\n .clusterId(String.format(\"tf-rep-group-1-%s\", range.value()))\n .replicationGroupId(example.id())\n .build());\n\n \n}\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n automaticFailoverEnabled: true\n preferredCacheClusterAzs:\n - us-west-2a\n - us-west-2b\n replicationGroupId: tf-rep-group-1\n description: example description\n nodeType: cache.m4.large\n numCacheClusters: 2\n parameterGroupName: default.redis3.2\n port: 6379\n replica:\n type: aws:elasticache:Cluster\n properties:\n clusterId: tf-rep-group-1-${range.value}\n replicationGroupId: ${example.id}\n options: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis OSS/Valkey Cluster Mode Enabled\n\nTo create two shards with a primary and a single read replica each:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst baz = new aws.elasticache.ReplicationGroup(\"baz\", {\n replicationGroupId: \"tf-redis-cluster\",\n description: \"example description\",\n nodeType: \"cache.t2.small\",\n port: 6379,\n parameterGroupName: \"default.redis3.2.cluster.on\",\n automaticFailoverEnabled: true,\n numNodeGroups: 2,\n replicasPerNodeGroup: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbaz = aws.elasticache.ReplicationGroup(\"baz\",\n replication_group_id=\"tf-redis-cluster\",\n description=\"example description\",\n node_type=\"cache.t2.small\",\n port=6379,\n parameter_group_name=\"default.redis3.2.cluster.on\",\n automatic_failover_enabled=True,\n num_node_groups=2,\n replicas_per_node_group=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var baz = new Aws.ElastiCache.ReplicationGroup(\"baz\", new()\n {\n ReplicationGroupId = \"tf-redis-cluster\",\n Description = \"example description\",\n NodeType = \"cache.t2.small\",\n Port = 6379,\n ParameterGroupName = \"default.redis3.2.cluster.on\",\n AutomaticFailoverEnabled = true,\n NumNodeGroups = 2,\n ReplicasPerNodeGroup = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"baz\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"tf-redis-cluster\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.t2.small\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2.cluster.on\"),\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tNumNodeGroups: pulumi.Int(2),\n\t\t\tReplicasPerNodeGroup: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var baz = new ReplicationGroup(\"baz\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"tf-redis-cluster\")\n .description(\"example description\")\n .nodeType(\"cache.t2.small\")\n .port(6379)\n .parameterGroupName(\"default.redis3.2.cluster.on\")\n .automaticFailoverEnabled(true)\n .numNodeGroups(2)\n .replicasPerNodeGroup(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n baz:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: tf-redis-cluster\n description: example description\n nodeType: cache.t2.small\n port: 6379\n parameterGroupName: default.redis3.2.cluster.on\n automaticFailoverEnabled: true\n numNodeGroups: 2\n replicasPerNodeGroup: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis Log Delivery configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.elasticache.ReplicationGroup(\"test\", {\n replicationGroupId: \"myreplicaciongroup\",\n description: \"test description\",\n nodeType: \"cache.t3.small\",\n port: 6379,\n applyImmediately: true,\n autoMinorVersionUpgrade: false,\n maintenanceWindow: \"tue:06:30-tue:07:30\",\n snapshotWindow: \"01:00-02:00\",\n logDeliveryConfigurations: [\n {\n destination: example.name,\n destinationType: \"cloudwatch-logs\",\n logFormat: \"text\",\n logType: \"slow-log\",\n },\n {\n destination: exampleAwsKinesisFirehoseDeliveryStream.name,\n destinationType: \"kinesis-firehose\",\n logFormat: \"json\",\n logType: \"engine-log\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.elasticache.ReplicationGroup(\"test\",\n replication_group_id=\"myreplicaciongroup\",\n description=\"test description\",\n node_type=\"cache.t3.small\",\n port=6379,\n apply_immediately=True,\n auto_minor_version_upgrade=False,\n maintenance_window=\"tue:06:30-tue:07:30\",\n snapshot_window=\"01:00-02:00\",\n log_delivery_configurations=[\n {\n \"destination\": example[\"name\"],\n \"destination_type\": \"cloudwatch-logs\",\n \"log_format\": \"text\",\n \"log_type\": \"slow-log\",\n },\n {\n \"destination\": example_aws_kinesis_firehose_delivery_stream[\"name\"],\n \"destination_type\": \"kinesis-firehose\",\n \"log_format\": \"json\",\n \"log_type\": \"engine-log\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.ElastiCache.ReplicationGroup(\"test\", new()\n {\n ReplicationGroupId = \"myreplicaciongroup\",\n Description = \"test description\",\n NodeType = \"cache.t3.small\",\n Port = 6379,\n ApplyImmediately = true,\n AutoMinorVersionUpgrade = false,\n MaintenanceWindow = \"tue:06:30-tue:07:30\",\n SnapshotWindow = \"01:00-02:00\",\n LogDeliveryConfigurations = new[]\n {\n new Aws.ElastiCache.Inputs.ReplicationGroupLogDeliveryConfigurationArgs\n {\n Destination = example.Name,\n DestinationType = \"cloudwatch-logs\",\n LogFormat = \"text\",\n LogType = \"slow-log\",\n },\n new Aws.ElastiCache.Inputs.ReplicationGroupLogDeliveryConfigurationArgs\n {\n Destination = exampleAwsKinesisFirehoseDeliveryStream.Name,\n DestinationType = \"kinesis-firehose\",\n LogFormat = \"json\",\n LogType = \"engine-log\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"test\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"myreplicaciongroup\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tNodeType: pulumi.String(\"cache.t3.small\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tApplyImmediately: pulumi.Bool(true),\n\t\t\tAutoMinorVersionUpgrade: pulumi.Bool(false),\n\t\t\tMaintenanceWindow: pulumi.String(\"tue:06:30-tue:07:30\"),\n\t\t\tSnapshotWindow: pulumi.String(\"01:00-02:00\"),\n\t\t\tLogDeliveryConfigurations: elasticache.ReplicationGroupLogDeliveryConfigurationArray{\n\t\t\t\t\u0026elasticache.ReplicationGroupLogDeliveryConfigurationArgs{\n\t\t\t\t\tDestination: pulumi.Any(example.Name),\n\t\t\t\t\tDestinationType: pulumi.String(\"cloudwatch-logs\"),\n\t\t\t\t\tLogFormat: pulumi.String(\"text\"),\n\t\t\t\t\tLogType: pulumi.String(\"slow-log\"),\n\t\t\t\t},\n\t\t\t\t\u0026elasticache.ReplicationGroupLogDeliveryConfigurationArgs{\n\t\t\t\t\tDestination: pulumi.Any(exampleAwsKinesisFirehoseDeliveryStream.Name),\n\t\t\t\t\tDestinationType: pulumi.String(\"kinesis-firehose\"),\n\t\t\t\t\tLogFormat: pulumi.String(\"json\"),\n\t\t\t\t\tLogType: pulumi.String(\"engine-log\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.inputs.ReplicationGroupLogDeliveryConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new ReplicationGroup(\"test\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"myreplicaciongroup\")\n .description(\"test description\")\n .nodeType(\"cache.t3.small\")\n .port(6379)\n .applyImmediately(true)\n .autoMinorVersionUpgrade(false)\n .maintenanceWindow(\"tue:06:30-tue:07:30\")\n .snapshotWindow(\"01:00-02:00\")\n .logDeliveryConfigurations( \n ReplicationGroupLogDeliveryConfigurationArgs.builder()\n .destination(example.name())\n .destinationType(\"cloudwatch-logs\")\n .logFormat(\"text\")\n .logType(\"slow-log\")\n .build(),\n ReplicationGroupLogDeliveryConfigurationArgs.builder()\n .destination(exampleAwsKinesisFirehoseDeliveryStream.name())\n .destinationType(\"kinesis-firehose\")\n .logFormat(\"json\")\n .logType(\"engine-log\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: myreplicaciongroup\n description: test description\n nodeType: cache.t3.small\n port: 6379\n applyImmediately: true\n autoMinorVersionUpgrade: false\n maintenanceWindow: tue:06:30-tue:07:30\n snapshotWindow: 01:00-02:00\n logDeliveryConfigurations:\n - destination: ${example.name}\n destinationType: cloudwatch-logs\n logFormat: text\n logType: slow-log\n - destination: ${exampleAwsKinesisFirehoseDeliveryStream.name}\n destinationType: kinesis-firehose\n logFormat: json\n logType: engine-log\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** We currently do not support passing a `primary_cluster_id` in order to create the Replication Group.\n\n\u003e **Note:** Automatic Failover is unavailable for Redis versions earlier than 2.8.6,\nand unavailable on T1 node types. For T2 node types, it is only available on Redis version 3.2.4 or later with cluster mode enabled. See the [High Availability Using Replication Groups](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Replication.html) guide\nfor full details on using Replication Groups.\n\n### Creating a secondary replication group for a global replication group\n\nA Global Replication Group can have one one two secondary Replication Groups in different regions. These are added to an existing Global Replication Group.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"5.0.6\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"5.0.6\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id)\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"5.0.6\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"5.0.6\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: 5.0.6\n nodeType: cache.m5.large\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis AUTH and In-Transit Encryption Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n replicationGroupId: \"example\",\n description: \"example with authentication\",\n nodeType: \"cache.t2.micro\",\n numCacheClusters: 1,\n port: 6379,\n subnetGroupName: exampleAwsElasticacheSubnetGroup.name,\n securityGroupIds: [exampleAwsSecurityGroup.id],\n parameterGroupName: \"default.redis5.0\",\n engineVersion: \"5.0.6\",\n transitEncryptionEnabled: true,\n authToken: \"abcdefgh1234567890\",\n authTokenUpdateStrategy: \"ROTATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n replication_group_id=\"example\",\n description=\"example with authentication\",\n node_type=\"cache.t2.micro\",\n num_cache_clusters=1,\n port=6379,\n subnet_group_name=example_aws_elasticache_subnet_group[\"name\"],\n security_group_ids=[example_aws_security_group[\"id\"]],\n parameter_group_name=\"default.redis5.0\",\n engine_version=\"5.0.6\",\n transit_encryption_enabled=True,\n auth_token=\"abcdefgh1234567890\",\n auth_token_update_strategy=\"ROTATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n ReplicationGroupId = \"example\",\n Description = \"example with authentication\",\n NodeType = \"cache.t2.micro\",\n NumCacheClusters = 1,\n Port = 6379,\n SubnetGroupName = exampleAwsElasticacheSubnetGroup.Name,\n SecurityGroupIds = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n ParameterGroupName = \"default.redis5.0\",\n EngineVersion = \"5.0.6\",\n TransitEncryptionEnabled = true,\n AuthToken = \"abcdefgh1234567890\",\n AuthTokenUpdateStrategy = \"ROTATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example\"),\n\t\t\tDescription: pulumi.String(\"example with authentication\"),\n\t\t\tNodeType: pulumi.String(\"cache.t2.micro\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tSubnetGroupName: pulumi.Any(exampleAwsElasticacheSubnetGroup.Name),\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t},\n\t\t\tParameterGroupName: pulumi.String(\"default.redis5.0\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tTransitEncryptionEnabled: pulumi.Bool(true),\n\t\t\tAuthToken: pulumi.String(\"abcdefgh1234567890\"),\n\t\t\tAuthTokenUpdateStrategy: pulumi.String(\"ROTATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example\")\n .description(\"example with authentication\")\n .nodeType(\"cache.t2.micro\")\n .numCacheClusters(1)\n .port(6379)\n .subnetGroupName(exampleAwsElasticacheSubnetGroup.name())\n .securityGroupIds(exampleAwsSecurityGroup.id())\n .parameterGroupName(\"default.redis5.0\")\n .engineVersion(\"5.0.6\")\n .transitEncryptionEnabled(true)\n .authToken(\"abcdefgh1234567890\")\n .authTokenUpdateStrategy(\"ROTATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example\n description: example with authentication\n nodeType: cache.t2.micro\n numCacheClusters: 1\n port: 6379\n subnetGroupName: ${exampleAwsElasticacheSubnetGroup.name}\n securityGroupIds:\n - ${exampleAwsSecurityGroup.id}\n parameterGroupName: default.redis5.0\n engineVersion: 5.0.6\n transitEncryptionEnabled: true\n authToken: abcdefgh1234567890\n authTokenUpdateStrategy: ROTATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e When adding a new `auth_token` to a previously passwordless replication group, using the `ROTATE` update strategy will result in support for **both** the new token and passwordless authentication. To immediately require authorization when adding the initial token, use the `SET` strategy instead. See the [Authenticating with the Redis AUTH command](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html) guide for additional details.\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Replication Groups using the `replication_group_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/replicationGroup:ReplicationGroup my_replication_group replication-group-1\n```\n",
"properties": {
"applyImmediately": {
"type": "boolean",
@@ -255065,7 +256164,7 @@
},
"autoMinorVersionUpgrade": {
"type": "boolean",
- "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine type `\"redis\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
+ "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine types `\"redis\"` and `\"valkey\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
},
"automaticFailoverEnabled": {
"type": "boolean",
@@ -255093,7 +256192,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.\n"
+ "description": "Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.\n"
},
"engineVersion": {
"type": "string",
@@ -255124,7 +256223,7 @@
"items": {
"$ref": "#/types/aws:elasticache/ReplicationGroupLogDeliveryConfiguration:ReplicationGroupLogDeliveryConfiguration"
},
- "description": "Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
+ "description": "Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
},
"maintenanceWindow": {
"type": "string",
@@ -255314,7 +256413,7 @@
},
"autoMinorVersionUpgrade": {
"type": "boolean",
- "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine type `\"redis\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
+ "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine types `\"redis\"` and `\"valkey\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
},
"automaticFailoverEnabled": {
"type": "boolean",
@@ -255335,8 +256434,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.\n",
- "willReplaceOnChanges": true
+ "description": "Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.\n"
},
"engineVersion": {
"type": "string",
@@ -255365,7 +256463,7 @@
"items": {
"$ref": "#/types/aws:elasticache/ReplicationGroupLogDeliveryConfiguration:ReplicationGroupLogDeliveryConfiguration"
},
- "description": "Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
+ "description": "Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
},
"maintenanceWindow": {
"type": "string",
@@ -255515,7 +256613,7 @@
},
"autoMinorVersionUpgrade": {
"type": "boolean",
- "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine type `\"redis\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
+ "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine types `\"redis\"` and `\"valkey\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
},
"automaticFailoverEnabled": {
"type": "boolean",
@@ -255544,8 +256642,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.\n",
- "willReplaceOnChanges": true
+ "description": "Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.\n"
},
"engineVersion": {
"type": "string",
@@ -255578,7 +256675,7 @@
"items": {
"$ref": "#/types/aws:elasticache/ReplicationGroupLogDeliveryConfiguration:ReplicationGroupLogDeliveryConfiguration"
},
- "description": "Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
+ "description": "Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
},
"maintenanceWindow": {
"type": "string",
@@ -255912,7 +257009,7 @@
}
},
"aws:elasticache/serverlessCache:ServerlessCache": {
- "description": "Provides an ElastiCache Serverless Cache resource which manages memcached or redis.\n\n## Example Usage\n\n### Memcached Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"memcached\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"1.6\",\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"memcached\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"1.6\",\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"memcached\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"1.6\",\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"memcached\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"1.6\"),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"memcached\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"1.6\")\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"redis\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n dailySnapshotTime: \"09:00\",\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"7\",\n snapshotRetentionLimit: 1,\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"redis\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n daily_snapshot_time=\"09:00\",\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"7\",\n snapshot_retention_limit=1,\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"redis\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n DailySnapshotTime = \"09:00\",\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"7\",\n SnapshotRetentionLimit = 1,\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"redis\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDailySnapshotTime: pulumi.String(\"09:00\"),\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"7\"),\nSnapshotRetentionLimit: pulumi.Int(1),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"redis\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .dailySnapshotTime(\"09:00\")\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"7\")\n .snapshotRetentionLimit(1)\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Serverless Cache using the `name`. For example:\n\n```sh\n$ pulumi import aws:elasticache/serverlessCache:ServerlessCache my_cluster my_cluster\n```\n",
+ "description": "Provides an ElastiCache Serverless Cache resource which manages memcached, redis or valkey.\n\n## Example Usage\n\n### Memcached Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"memcached\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"1.6\",\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"memcached\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"1.6\",\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"memcached\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"1.6\",\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"memcached\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"1.6\"),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"memcached\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"1.6\")\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis OSS Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"redis\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n dailySnapshotTime: \"09:00\",\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"7\",\n snapshotRetentionLimit: 1,\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"redis\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n daily_snapshot_time=\"09:00\",\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"7\",\n snapshot_retention_limit=1,\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"redis\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n DailySnapshotTime = \"09:00\",\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"7\",\n SnapshotRetentionLimit = 1,\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"redis\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDailySnapshotTime: pulumi.String(\"09:00\"),\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"7\"),\nSnapshotRetentionLimit: pulumi.Int(1),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"redis\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .dailySnapshotTime(\"09:00\")\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"7\")\n .snapshotRetentionLimit(1)\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Valkey Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"valkey\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n dailySnapshotTime: \"09:00\",\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"7\",\n snapshotRetentionLimit: 1,\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"valkey\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n daily_snapshot_time=\"09:00\",\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"7\",\n snapshot_retention_limit=1,\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"valkey\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n DailySnapshotTime = \"09:00\",\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"7\",\n SnapshotRetentionLimit = 1,\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"valkey\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDailySnapshotTime: pulumi.String(\"09:00\"),\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"7\"),\nSnapshotRetentionLimit: pulumi.Int(1),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"valkey\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .dailySnapshotTime(\"09:00\")\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"7\")\n .snapshotRetentionLimit(1)\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Serverless Cache using the `name`. For example:\n\n```sh\n$ pulumi import aws:elasticache/serverlessCache:ServerlessCache my_cluster my_cluster\n```\n",
"properties": {
"arn": {
"type": "string",
@@ -255928,7 +257025,7 @@
},
"dailySnapshotTime": {
"type": "string",
- "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `\"redis\"`. Defaults to `0`.\n"
+ "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `\"redis\"` or `\"valkey\"`. Defaults to `0`.\n"
},
"description": {
"type": "string",
@@ -255943,7 +257040,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n"
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.\n"
},
"fullEngineVersion": {
"type": "string",
@@ -256043,7 +257140,7 @@
},
"dailySnapshotTime": {
"type": "string",
- "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `\"redis\"`. Defaults to `0`.\n"
+ "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `\"redis\"` or `\"valkey\"`. Defaults to `0`.\n"
},
"description": {
"type": "string",
@@ -256051,7 +257148,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n"
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.\n"
},
"kmsKeyId": {
"type": "string",
@@ -256125,7 +257222,7 @@
},
"dailySnapshotTime": {
"type": "string",
- "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `\"redis\"`. Defaults to `0`.\n"
+ "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `\"redis\"` or `\"valkey\"`. Defaults to `0`.\n"
},
"description": {
"type": "string",
@@ -256140,7 +257237,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n"
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.\n"
},
"fullEngineVersion": {
"type": "string",
@@ -280046,6 +281143,169 @@
"type": "object"
}
},
+ "aws:imagebuilder/lifecyclePolicy:LifecyclePolicy": {
+ "description": "Manages an Image Builder Lifecycle Policy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getRegion({});\nconst currentGetPartition = aws.getPartition({});\nconst example = new aws.iam.Role(\"example\", {\n assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Action: \"sts:AssumeRole\",\n Effect: \"Allow\",\n Principal: {\n Service: currentGetPartition.then(currentGetPartition =\u003e `imagebuilder.${currentGetPartition.dnsSuffix}`),\n },\n }],\n }),\n name: \"example\",\n});\nconst exampleRolePolicyAttachment = new aws.iam.RolePolicyAttachment(\"example\", {\n policyArn: currentGetPartition.then(currentGetPartition =\u003e `arn:${currentGetPartition.partition}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy`),\n role: example.name,\n});\nconst exampleLifecyclePolicy = new aws.imagebuilder.LifecyclePolicy(\"example\", {\n name: \"name\",\n description: \"Example description\",\n executionRole: example.arn,\n resourceType: \"AMI_IMAGE\",\n policyDetails: [{\n action: {\n type: \"DELETE\",\n },\n filter: {\n type: \"AGE\",\n value: 6,\n retainAtLeast: 10,\n unit: \"YEARS\",\n },\n }],\n resourceSelection: {\n tagMap: {\n key1: \"value1\",\n key2: \"value2\",\n },\n },\n}, {\n dependsOn: [exampleRolePolicyAttachment],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\ncurrent = aws.get_region()\ncurrent_get_partition = aws.get_partition()\nexample = aws.iam.Role(\"example\",\n assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Action\": \"sts:AssumeRole\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": f\"imagebuilder.{current_get_partition.dns_suffix}\",\n },\n }],\n }),\n name=\"example\")\nexample_role_policy_attachment = aws.iam.RolePolicyAttachment(\"example\",\n policy_arn=f\"arn:{current_get_partition.partition}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\",\n role=example.name)\nexample_lifecycle_policy = aws.imagebuilder.LifecyclePolicy(\"example\",\n name=\"name\",\n description=\"Example description\",\n execution_role=example.arn,\n resource_type=\"AMI_IMAGE\",\n policy_details=[{\n \"action\": {\n \"type\": \"DELETE\",\n },\n \"filter\": {\n \"type\": \"AGE\",\n \"value\": 6,\n \"retain_at_least\": 10,\n \"unit\": \"YEARS\",\n },\n }],\n resource_selection={\n \"tag_map\": {\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[example_role_policy_attachment]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetRegion.Invoke();\n\n var currentGetPartition = Aws.GetPartition.Invoke();\n\n var example = new Aws.Iam.Role(\"example\", new()\n {\n AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = \"sts:AssumeRole\",\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = $\"imagebuilder.{currentGetPartition.Apply(getPartitionResult =\u003e getPartitionResult.DnsSuffix)}\",\n },\n },\n },\n }),\n Name = \"example\",\n });\n\n var exampleRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment(\"example\", new()\n {\n PolicyArn = $\"arn:{currentGetPartition.Apply(getPartitionResult =\u003e getPartitionResult.Partition)}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\",\n Role = example.Name,\n });\n\n var exampleLifecyclePolicy = new Aws.ImageBuilder.LifecyclePolicy(\"example\", new()\n {\n Name = \"name\",\n Description = \"Example description\",\n ExecutionRole = example.Arn,\n ResourceType = \"AMI_IMAGE\",\n PolicyDetails = new[]\n {\n new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailArgs\n {\n Action = new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailActionArgs\n {\n Type = \"DELETE\",\n },\n Filter = new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailFilterArgs\n {\n Type = \"AGE\",\n Value = 6,\n RetainAtLeast = 10,\n Unit = \"YEARS\",\n },\n },\n },\n ResourceSelection = new Aws.ImageBuilder.Inputs.LifecyclePolicyResourceSelectionArgs\n {\n TagMap = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleRolePolicyAttachment,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/imagebuilder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetPartition, err := aws.GetPartition(ctx, \u0026aws.GetPartitionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": \"sts:AssumeRole\",\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": fmt.Sprintf(\"imagebuilder.%v\", currentGetPartition.DnsSuffix),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texample, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tAssumeRolePolicy: pulumi.String(json0),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleRolePolicyAttachment, err := iam.NewRolePolicyAttachment(ctx, \"example\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tPolicyArn: pulumi.Sprintf(\"arn:%v:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\", currentGetPartition.Partition),\n\t\t\tRole: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = imagebuilder.NewLifecyclePolicy(ctx, \"example\", \u0026imagebuilder.LifecyclePolicyArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tDescription: pulumi.String(\"Example description\"),\n\t\t\tExecutionRole: example.Arn,\n\t\t\tResourceType: pulumi.String(\"AMI_IMAGE\"),\n\t\t\tPolicyDetails: imagebuilder.LifecyclePolicyPolicyDetailArray{\n\t\t\t\t\u0026imagebuilder.LifecyclePolicyPolicyDetailArgs{\n\t\t\t\t\tAction: \u0026imagebuilder.LifecyclePolicyPolicyDetailActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilter: \u0026imagebuilder.LifecyclePolicyPolicyDetailFilterArgs{\n\t\t\t\t\t\tType: pulumi.String(\"AGE\"),\n\t\t\t\t\t\tValue: pulumi.Int(6),\n\t\t\t\t\t\tRetainAtLeast: pulumi.Int(10),\n\t\t\t\t\t\tUnit: pulumi.String(\"YEARS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tResourceSelection: \u0026imagebuilder.LifecyclePolicyResourceSelectionArgs{\n\t\t\t\tTagMap: pulumi.StringMap{\n\t\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleRolePolicyAttachment,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.inputs.GetPartitionArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport com.pulumi.aws.imagebuilder.LifecyclePolicy;\nimport com.pulumi.aws.imagebuilder.LifecyclePolicyArgs;\nimport com.pulumi.aws.imagebuilder.inputs.LifecyclePolicyPolicyDetailArgs;\nimport com.pulumi.aws.imagebuilder.inputs.LifecyclePolicyPolicyDetailActionArgs;\nimport com.pulumi.aws.imagebuilder.inputs.LifecyclePolicyPolicyDetailFilterArgs;\nimport com.pulumi.aws.imagebuilder.inputs.LifecyclePolicyResourceSelectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getRegion();\n\n final var currentGetPartition = AwsFunctions.getPartition();\n\n var example = new Role(\"example\", RoleArgs.builder()\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Action\", \"sts:AssumeRole\"),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", String.format(\"imagebuilder.%s\", currentGetPartition.applyValue(getPartitionResult -\u003e getPartitionResult.dnsSuffix())))\n ))\n )))\n )))\n .name(\"example\")\n .build());\n\n var exampleRolePolicyAttachment = new RolePolicyAttachment(\"exampleRolePolicyAttachment\", RolePolicyAttachmentArgs.builder()\n .policyArn(String.format(\"arn:%s:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\", currentGetPartition.applyValue(getPartitionResult -\u003e getPartitionResult.partition())))\n .role(example.name())\n .build());\n\n var exampleLifecyclePolicy = new LifecyclePolicy(\"exampleLifecyclePolicy\", LifecyclePolicyArgs.builder()\n .name(\"name\")\n .description(\"Example description\")\n .executionRole(example.arn())\n .resourceType(\"AMI_IMAGE\")\n .policyDetails(LifecyclePolicyPolicyDetailArgs.builder()\n .action(LifecyclePolicyPolicyDetailActionArgs.builder()\n .type(\"DELETE\")\n .build())\n .filter(LifecyclePolicyPolicyDetailFilterArgs.builder()\n .type(\"AGE\")\n .value(6)\n .retainAtLeast(10)\n .unit(\"YEARS\")\n .build())\n .build())\n .resourceSelection(LifecyclePolicyResourceSelectionArgs.builder()\n .tagMap(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(exampleRolePolicyAttachment)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:iam:Role\n properties:\n assumeRolePolicy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action: sts:AssumeRole\n Effect: Allow\n Principal:\n Service: imagebuilder.${currentGetPartition.dnsSuffix}\n name: example\n exampleRolePolicyAttachment:\n type: aws:iam:RolePolicyAttachment\n name: example\n properties:\n policyArn: arn:${currentGetPartition.partition}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\n role: ${example.name}\n exampleLifecyclePolicy:\n type: aws:imagebuilder:LifecyclePolicy\n name: example\n properties:\n name: name\n description: Example description\n executionRole: ${example.arn}\n resourceType: AMI_IMAGE\n policyDetails:\n - action:\n type: DELETE\n filter:\n type: AGE\n value: 6\n retainAtLeast: 10\n unit: YEARS\n resourceSelection:\n tagMap:\n key1: value1\n key2: value2\n options:\n dependson:\n - ${exampleRolePolicyAttachment}\nvariables:\n current:\n fn::invoke:\n Function: aws:getRegion\n Arguments: {}\n currentGetPartition:\n fn::invoke:\n Function: aws:getPartition\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_imagebuilder_lifecycle_policy` using the Amazon Resource Name (ARN). For example:\n\n```sh\n$ pulumi import aws:imagebuilder/lifecyclePolicy:LifecyclePolicy example arn:aws:imagebuilder:us-east-1:123456789012:lifecycle-policy/example\n```\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "Amazon Resource Name (ARN) of the lifecycle policy.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "description for the lifecycle policy.\n"
+ },
+ "executionRole": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the lifecycle policy to create.\n"
+ },
+ "policyDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetail:LifecyclePolicyPolicyDetail"
+ },
+ "description": "Configuration block with policy details. Detailed below.\n"
+ },
+ "resourceSelection": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyResourceSelection:LifecyclePolicyResourceSelection",
+ "description": "Selection criteria for the resources that the lifecycle policy applies to. Detailed below.\n\nThe following arguments are optional:\n"
+ },
+ "resourceType": {
+ "type": "string",
+ "description": "The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the lifecycle policy.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ }
+ },
+ "required": [
+ "arn",
+ "executionRole",
+ "name",
+ "resourceType",
+ "status",
+ "tagsAll"
+ ],
+ "inputProperties": {
+ "description": {
+ "type": "string",
+ "description": "description for the lifecycle policy.\n"
+ },
+ "executionRole": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the lifecycle policy to create.\n"
+ },
+ "policyDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetail:LifecyclePolicyPolicyDetail"
+ },
+ "description": "Configuration block with policy details. Detailed below.\n"
+ },
+ "resourceSelection": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyResourceSelection:LifecyclePolicyResourceSelection",
+ "description": "Selection criteria for the resources that the lifecycle policy applies to. Detailed below.\n\nThe following arguments are optional:\n"
+ },
+ "resourceType": {
+ "type": "string",
+ "description": "The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the lifecycle policy.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
+ }
+ },
+ "requiredInputs": [
+ "executionRole",
+ "resourceType"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering LifecyclePolicy resources.\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "Amazon Resource Name (ARN) of the lifecycle policy.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "description for the lifecycle policy.\n"
+ },
+ "executionRole": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the lifecycle policy to create.\n"
+ },
+ "policyDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetail:LifecyclePolicyPolicyDetail"
+ },
+ "description": "Configuration block with policy details. Detailed below.\n"
+ },
+ "resourceSelection": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyResourceSelection:LifecyclePolicyResourceSelection",
+ "description": "Selection criteria for the resources that the lifecycle policy applies to. Detailed below.\n\nThe following arguments are optional:\n"
+ },
+ "resourceType": {
+ "type": "string",
+ "description": "The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the lifecycle policy.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ }
+ },
+ "type": "object"
+ }
+ },
"aws:imagebuilder/workflow:Workflow": {
"description": "Resource for managing an AWS EC2 Image Builder Workflow.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.imagebuilder.Workflow(\"example\", {\n name: \"example\",\n version: \"1.0.0\",\n type: \"TEST\",\n data: `name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.: \".stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \".parameters.waitForActionAtEnd\"\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.imagebuilder.Workflow(\"example\",\n name=\"example\",\n version=\"1.0.0\",\n type=\"TEST\",\n data=\"\"\"name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ImageBuilder.Workflow(\"example\", new()\n {\n Name = \"example\",\n Version = \"1.0.0\",\n Type = \"TEST\",\n Data = @\"name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"\"ssmAgent\"\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"\"$.stepOutputs.LaunchTestInstance.instanceId\"\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"\"$.parameters.waitForActionAtEnd\"\"\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/imagebuilder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := imagebuilder.NewWorkflow(ctx, \"example\", \u0026imagebuilder.WorkflowArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tVersion: pulumi.String(\"1.0.0\"),\n\t\t\tType: pulumi.String(\"TEST\"),\n\t\t\tData: pulumi.String(`name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.imagebuilder.Workflow;\nimport com.pulumi.aws.imagebuilder.WorkflowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Workflow(\"example\", WorkflowArgs.builder()\n .name(\"example\")\n .version(\"1.0.0\")\n .type(\"TEST\")\n .data(\"\"\"\nname: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:imagebuilder:Workflow\n properties:\n name: example\n version: 1.0.0\n type: TEST\n data: |\n name: example\n description: Workflow to test an image\n schemaVersion: 1.0\n\n parameters:\n - name: waitForActionAtEnd\n type: boolean\n\n steps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EC2 Image Builder Workflow using the `example_id_arg`. For example:\n\n```sh\n$ pulumi import aws:imagebuilder/workflow:Workflow example arn:aws:imagebuilder:us-east-1:aws:workflow/test/example/1.0.1/1\n```\nCertain resource arguments, such as `uri`, cannot be read via the API and imported into Terraform. Terraform will display a difference for these arguments the first run after import if declared in the Terraform configuration for an imported resource.\n\n",
"properties": {
@@ -285235,7 +286495,7 @@
}
},
"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream": {
- "description": "Provides a Kinesis Firehose Delivery Stream resource. Amazon Kinesis Firehose is a fully managed, elastic service to easily deliver real-time data streams to destinations such as Amazon S3 , Amazon Redshift and Snowflake.\n\nFor more details, see the [Amazon Kinesis Firehose Documentation](https://aws.amazon.com/documentation/firehose/).\n\n## Example Usage\n\n### Extended S3 Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst bucket = new aws.s3.BucketV2(\"bucket\", {bucket: \"tf-test-bucket\"});\nconst firehoseAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"firehose.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst firehoseRole = new aws.iam.Role(\"firehose_role\", {\n name: \"firehose_test_role\",\n assumeRolePolicy: firehoseAssumeRole.then(firehoseAssumeRole =\u003e firehoseAssumeRole.json),\n});\nconst lambdaAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst lambdaIam = new aws.iam.Role(\"lambda_iam\", {\n name: \"lambda_iam\",\n assumeRolePolicy: lambdaAssumeRole.then(lambdaAssumeRole =\u003e lambdaAssumeRole.json),\n});\nconst lambdaProcessor = new aws.lambda.Function(\"lambda_processor\", {\n code: new pulumi.asset.FileArchive(\"lambda.zip\"),\n name: \"firehose_lambda_processor\",\n role: lambdaIam.arn,\n handler: \"exports.handler\",\n runtime: aws.lambda.Runtime.NodeJS20dX,\n});\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: pulumi.interpolate`${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\nconst bucketAcl = new aws.s3.BucketAclV2(\"bucket_acl\", {\n bucket: bucket.id,\n acl: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"tf-test-bucket\")\nfirehose_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"firehose.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nfirehose_role = aws.iam.Role(\"firehose_role\",\n name=\"firehose_test_role\",\n assume_role_policy=firehose_assume_role.json)\nlambda_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nlambda_iam = aws.iam.Role(\"lambda_iam\",\n name=\"lambda_iam\",\n assume_role_policy=lambda_assume_role.json)\nlambda_processor = aws.lambda_.Function(\"lambda_processor\",\n code=pulumi.FileArchive(\"lambda.zip\"),\n name=\"firehose_lambda_processor\",\n role=lambda_iam.arn,\n handler=\"exports.handler\",\n runtime=aws.lambda_.Runtime.NODE_JS20D_X)\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role.arn,\n \"bucket_arn\": bucket.arn,\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": lambda_processor.arn.apply(lambda arn: f\"{arn}:$LATEST\"),\n }],\n }],\n },\n })\nbucket_acl = aws.s3.BucketAclV2(\"bucket_acl\",\n bucket=bucket.id,\n acl=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"tf-test-bucket\",\n });\n\n var firehoseAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"firehose.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var firehoseRole = new Aws.Iam.Role(\"firehose_role\", new()\n {\n Name = \"firehose_test_role\",\n AssumeRolePolicy = firehoseAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var lambdaIam = new Aws.Iam.Role(\"lambda_iam\", new()\n {\n Name = \"lambda_iam\",\n AssumeRolePolicy = lambdaAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaProcessor = new Aws.Lambda.Function(\"lambda_processor\", new()\n {\n Code = new FileArchive(\"lambda.zip\"),\n Name = \"firehose_lambda_processor\",\n Role = lambdaIam.Arn,\n Handler = \"exports.handler\",\n Runtime = Aws.Lambda.Runtime.NodeJS20dX,\n });\n\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = lambdaProcessor.Arn.Apply(arn =\u003e $\"{arn}:$LATEST\"),\n },\n },\n },\n },\n },\n },\n });\n\n var bucketAcl = new Aws.S3.BucketAclV2(\"bucket_acl\", new()\n {\n Bucket = bucket.Id,\n Acl = \"private\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"tf-test-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"firehose.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseRole, err := iam.NewRole(ctx, \"firehose_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"firehose_test_role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(firehoseAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"lambda.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaIam, err := iam.NewRole(ctx, \"lambda_iam\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"lambda_iam\"),\n\t\t\tAssumeRolePolicy: pulumi.String(lambdaAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaProcessor, err := lambda.NewFunction(ctx, \"lambda_processor\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"lambda.zip\"),\n\t\t\tName: pulumi.String(\"firehose_lambda_processor\"),\n\t\t\tRole: lambdaIam.Arn,\n\t\t\tHandler: pulumi.String(\"exports.handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeNodeJS20dX),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: firehoseRole.Arn,\n\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: lambdaProcessor.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:$LATEST\", arn), nil\n\t\t\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketAclV2(ctx, \"bucket_acl\", \u0026s3.BucketAclV2Args{\n\t\t\tBucket: bucket.ID(),\n\t\t\tAcl: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport com.pulumi.aws.s3.BucketAclV2;\nimport com.pulumi.aws.s3.BucketAclV2Args;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"tf-test-bucket\")\n .build());\n\n final var firehoseAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"firehose.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var firehoseRole = new Role(\"firehoseRole\", RoleArgs.builder()\n .name(\"firehose_test_role\")\n .assumeRolePolicy(firehoseAssumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n final var lambdaAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"lambda.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var lambdaIam = new Role(\"lambdaIam\", RoleArgs.builder()\n .name(\"lambda_iam\")\n .assumeRolePolicy(lambdaAssumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n var lambdaProcessor = new Function(\"lambdaProcessor\", FunctionArgs.builder()\n .code(new FileArchive(\"lambda.zip\"))\n .name(\"firehose_lambda_processor\")\n .role(lambdaIam.arn())\n .handler(\"exports.handler\")\n .runtime(\"nodejs20.x\")\n .build());\n\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(lambdaProcessor.arn().applyValue(arn -\u003e String.format(\"%s:$LATEST\", arn)))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var bucketAcl = new BucketAclV2(\"bucketAcl\", BucketAclV2Args.builder()\n .bucket(bucket.id())\n .acl(\"private\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: tf-test-bucket\n bucketAcl:\n type: aws:s3:BucketAclV2\n name: bucket_acl\n properties:\n bucket: ${bucket.id}\n acl: private\n firehoseRole:\n type: aws:iam:Role\n name: firehose_role\n properties:\n name: firehose_test_role\n assumeRolePolicy: ${firehoseAssumeRole.json}\n lambdaIam:\n type: aws:iam:Role\n name: lambda_iam\n properties:\n name: lambda_iam\n assumeRolePolicy: ${lambdaAssumeRole.json}\n lambdaProcessor:\n type: aws:lambda:Function\n name: lambda_processor\n properties:\n code:\n fn::FileArchive: lambda.zip\n name: firehose_lambda_processor\n role: ${lambdaIam.arn}\n handler: exports.handler\n runtime: nodejs20.x\nvariables:\n firehoseAssumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - firehose.amazonaws.com\n actions:\n - sts:AssumeRole\n lambdaAssumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Extended S3 Destination with dynamic partitioning\n\nThese examples use built-in Firehose functionality, rather than requiring a lambda.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [\n {\n type: \"RecordDeAggregation\",\n parameters: [{\n parameterName: \"SubRecordType\",\n parameterValue: \"JSON\",\n }],\n },\n {\n type: \"AppendDelimiterToRecord\",\n },\n {\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [\n {\n \"type\": \"RecordDeAggregation\",\n \"parameters\": [{\n \"parameter_name\": \"SubRecordType\",\n \"parameter_value\": \"JSON\",\n }],\n },\n {\n \"type\": \"AppendDelimiterToRecord\",\n },\n {\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"RecordDeAggregation\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"SubRecordType\",\n ParameterValue = \"JSON\",\n },\n },\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"AppendDelimiterToRecord\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"RecordDeAggregation\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"SubRecordType\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JSON\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"AppendDelimiterToRecord\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(\"true\")\n .build())\n .prefix(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"RecordDeAggregation\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"SubRecordType\")\n .parameterValue(\"JSON\")\n .build())\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"AppendDelimiterToRecord\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: RecordDeAggregation\n parameters:\n - parameterName: SubRecordType\n parameterValue: JSON\n - type: AppendDelimiterToRecord\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nMultiple Dynamic Partitioning Keys (maximum of 50) can be added by comma separating the `parameter_value`.\n\nThe following example adds the Dynamic Partitioning Keys: `store_id` and `customer_id` to the S3 prefix.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{store_id:.store_id,customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(\"true\")\n .build())\n .prefix(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{store_id:.store_id,customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{store_id:.store_id,customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redshift Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.redshift.Cluster(\"test_cluster\", {\n clusterIdentifier: \"tf-redshift-cluster\",\n databaseName: \"test\",\n masterUsername: \"testuser\",\n masterPassword: \"T3stPass\",\n nodeType: \"dc1.large\",\n clusterType: \"single-node\",\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"redshift\",\n redshiftConfiguration: {\n roleArn: firehoseRole.arn,\n clusterJdbcurl: pulumi.interpolate`jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}`,\n username: \"testuser\",\n password: \"T3stPass\",\n dataTableName: \"test-table\",\n copyOptions: \"delimiter '|'\",\n dataTableColumns: \"test-col\",\n s3BackupMode: \"Enabled\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n s3BackupConfiguration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 15,\n bufferingInterval: 300,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.redshift.Cluster(\"test_cluster\",\n cluster_identifier=\"tf-redshift-cluster\",\n database_name=\"test\",\n master_username=\"testuser\",\n master_password=\"T3stPass\",\n node_type=\"dc1.large\",\n cluster_type=\"single-node\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"redshift\",\n redshift_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"cluster_jdbcurl\": pulumi.Output.all(\n endpoint=test_cluster.endpoint,\n database_name=test_cluster.database_name\n).apply(lambda resolved_outputs: f\"jdbc:redshift://{resolved_outputs['endpoint']}/{resolved_outputs['database_name']}\")\n,\n \"username\": \"testuser\",\n \"password\": \"T3stPass\",\n \"data_table_name\": \"test-table\",\n \"copy_options\": \"delimiter '|'\",\n \"data_table_columns\": \"test-col\",\n \"s3_backup_mode\": \"Enabled\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"s3_backup_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 15,\n \"buffering_interval\": 300,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.RedShift.Cluster(\"test_cluster\", new()\n {\n ClusterIdentifier = \"tf-redshift-cluster\",\n DatabaseName = \"test\",\n MasterUsername = \"testuser\",\n MasterPassword = \"T3stPass\",\n NodeType = \"dc1.large\",\n ClusterType = \"single-node\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"redshift\",\n RedshiftConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n ClusterJdbcurl = Output.Tuple(testCluster.Endpoint, testCluster.DatabaseName).Apply(values =\u003e\n {\n var endpoint = values.Item1;\n var databaseName = values.Item2;\n return $\"jdbc:redshift://{endpoint}/{databaseName}\";\n }),\n Username = \"testuser\",\n Password = \"T3stPass\",\n DataTableName = \"test-table\",\n CopyOptions = \"delimiter '|'\",\n DataTableColumns = \"test-col\",\n S3BackupMode = \"Enabled\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n S3BackupConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 15,\n BufferingInterval = 300,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/redshift\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := redshift.NewCluster(ctx, \"test_cluster\", \u0026redshift.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"tf-redshift-cluster\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tMasterUsername: pulumi.String(\"testuser\"),\n\t\t\tMasterPassword: pulumi.String(\"T3stPass\"),\n\t\t\tNodeType: pulumi.String(\"dc1.large\"),\n\t\t\tClusterType: pulumi.String(\"single-node\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"redshift\"),\n\t\t\tRedshiftConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tClusterJdbcurl: pulumi.All(testCluster.Endpoint, testCluster.DatabaseName).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tendpoint := _args[0].(string)\n\t\t\t\t\tdatabaseName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"jdbc:redshift://%v/%v\", endpoint, databaseName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUsername: pulumi.String(\"testuser\"),\n\t\t\t\tPassword: pulumi.String(\"T3stPass\"),\n\t\t\t\tDataTableName: pulumi.String(\"test-table\"),\n\t\t\t\tCopyOptions: pulumi.String(\"delimiter '|'\"),\n\t\t\t\tDataTableColumns: pulumi.String(\"test-col\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"Enabled\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tS3BackupConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\t\tBufferingInterval: pulumi.Int(300),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.redshift.Cluster;\nimport com.pulumi.aws.redshift.ClusterArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Cluster(\"testCluster\", ClusterArgs.builder()\n .clusterIdentifier(\"tf-redshift-cluster\")\n .databaseName(\"test\")\n .masterUsername(\"testuser\")\n .masterPassword(\"T3stPass\")\n .nodeType(\"dc1.large\")\n .clusterType(\"single-node\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"redshift\")\n .redshiftConfiguration(FirehoseDeliveryStreamRedshiftConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .clusterJdbcurl(Output.tuple(testCluster.endpoint(), testCluster.databaseName()).applyValue(values -\u003e {\n var endpoint = values.t1;\n var databaseName = values.t2;\n return String.format(\"jdbc:redshift://%s/%s\", endpoint,databaseName);\n }))\n .username(\"testuser\")\n .password(\"T3stPass\")\n .dataTableName(\"test-table\")\n .copyOptions(\"delimiter '|'\")\n .dataTableColumns(\"test-col\")\n .s3BackupMode(\"Enabled\")\n .s3Configuration(FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .s3BackupConfiguration(FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(15)\n .bufferingInterval(300)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:redshift:Cluster\n name: test_cluster\n properties:\n clusterIdentifier: tf-redshift-cluster\n databaseName: test\n masterUsername: testuser\n masterPassword: T3stPass\n nodeType: dc1.large\n clusterType: single-node\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: redshift\n redshiftConfiguration:\n roleArn: ${firehoseRole.arn}\n clusterJdbcurl: jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}\n username: testuser\n password: T3stPass\n dataTableName: test-table\n copyOptions: delimiter '|'\n dataTableColumns: test-col\n s3BackupMode: Enabled\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n s3BackupConfiguration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 15\n bufferingInterval: 300\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {domainName: \"firehose-es-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\", domain_name=\"firehose-es-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-es-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-es-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-es-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-es-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"t2.small.elasticsearch\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose-elasticsearch = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"es:*\"],\n resources: [\n testCluster.arn,\n pulumi.interpolate`${testCluster.arn}/*`,\n ],\n },\n {\n effect: \"Allow\",\n actions: [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n resources: [\"*\"],\n },\n ],\n});\nconst firehose_elasticsearchRolePolicy = new aws.iam.RolePolicy(\"firehose-elasticsearch\", {\n name: \"elasticsearch\",\n role: firehose.id,\n policy: firehose_elasticsearch.apply(firehose_elasticsearch =\u003e firehose_elasticsearch.json),\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"kinesis-firehose-es\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_elasticsearchRolePolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"t2.small.elasticsearch\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_elasticsearch = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"es:*\"],\n \"resources\": [\n test_cluster.arn,\n test_cluster.arn.apply(lambda arn: f\"{arn}/*\"),\n ],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n \"resources\": [\"*\"],\n },\n])\nfirehose_elasticsearch_role_policy = aws.iam.RolePolicy(\"firehose-elasticsearch\",\n name=\"elasticsearch\",\n role=firehose[\"id\"],\n policy=firehose_elasticsearch.json)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"kinesis-firehose-es\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_elasticsearch_role_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"t2.small.elasticsearch\",\n },\n EbsOptions = new Aws.ElasticSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.ElasticSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_elasticsearch = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"es:*\",\n },\n Resources = new[]\n {\n testCluster.Arn,\n $\"{testCluster.Arn}/*\",\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var firehose_elasticsearchRolePolicy = new Aws.Iam.RolePolicy(\"firehose-elasticsearch\", new()\n {\n Name = \"elasticsearch\",\n Role = firehose.Id,\n Policy = firehose_elasticsearch.Apply(firehose_elasticsearch =\u003e firehose_elasticsearch.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json)),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"kinesis-firehose-es\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_elasticsearchRolePolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"t2.small.elasticsearch\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026elasticsearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026elasticsearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehose_elasticsearch := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"es:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\ttestCluster.Arn,\n\t\t\t\t\t\ttestCluster.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v/*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcs\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcAttribute\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSubnets\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSecurityGroups\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeNetworkInterfaces\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterface\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterfacePermission\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DeleteNetworkInterface\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = iam.NewRolePolicy(ctx, \"firehose-elasticsearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"elasticsearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.String(firehose_elasticsearch.ApplyT(func(firehose_elasticsearch iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026firehose_elasticsearch.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-es\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_elasticsearchRolePolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"t2.small.elasticsearch\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n final var firehose-elasticsearch = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"es:*\")\n .resources( \n testCluster.arn(),\n testCluster.arn().applyValue(arn -\u003e String.format(\"%s/*\", arn)))\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions( \n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\")\n .resources(\"*\")\n .build())\n .build());\n\n var firehose_elasticsearchRolePolicy = new RolePolicy(\"firehose-elasticsearchRolePolicy\", RolePolicyArgs.builder()\n .name(\"elasticsearch\")\n .role(firehose.id())\n .policy(firehose_elasticsearch.applyValue(firehose_elasticsearch -\u003e firehose_elasticsearch.json()))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-es\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_elasticsearchRolePolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: t2.small.elasticsearch\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-elasticsearchRolePolicy:\n type: aws:iam:RolePolicy\n name: firehose-elasticsearch\n properties:\n name: elasticsearch\n role: ${firehose.id}\n policy: ${[\"firehose-elasticsearch\"].json}\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: kinesis-firehose-es\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependson:\n - ${[\"firehose-elasticsearchRolePolicy\"]}\nvariables:\n firehose-elasticsearch:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n actions:\n - es:*\n resources:\n - ${testCluster.arn}\n - ${testCluster.arn}/*\n - effect: Allow\n actions:\n - ec2:DescribeVpcs\n - ec2:DescribeVpcAttribute\n - ec2:DescribeSubnets\n - ec2:DescribeSecurityGroups\n - ec2:DescribeNetworkInterfaces\n - ec2:CreateNetworkInterface\n - ec2:CreateNetworkInterfacePermission\n - ec2:DeleteNetworkInterface\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {domainName: \"firehose-os-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\", domain_name=\"firehose-os-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-os-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-os-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-os-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-os-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"m4.large.search\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose_opensearch = new aws.iam.RolePolicy(\"firehose-opensearch\", {\n name: \"opensearch\",\n role: firehose.id,\n policy: pulumi.interpolate`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`,\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"pulumi-kinesis-firehose-os\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_opensearch],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"m4.large.search\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_opensearch = aws.iam.RolePolicy(\"firehose-opensearch\",\n name=\"opensearch\",\n role=firehose[\"id\"],\n policy=pulumi.Output.all(\n testClusterArn=test_cluster.arn,\n testClusterArn1=test_cluster.arn\n).apply(lambda resolved_outputs: f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"{resolved_outputs['testClusterArn']}\",\n \"{resolved_outputs['testClusterArn1']}/*\"\n ]\n }},\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }}\n ]\n}}\n\"\"\")\n)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"pulumi-kinesis-firehose-os\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_opensearch]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.OpenSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"m4.large.search\",\n },\n EbsOptions = new Aws.OpenSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.OpenSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_opensearch = new Aws.Iam.RolePolicy(\"firehose-opensearch\", new()\n {\n Name = \"opensearch\",\n Role = firehose.Id,\n Policy = Output.Tuple(testCluster.Arn, testCluster.Arn).Apply(values =\u003e\n {\n var testClusterArn = values.Item1;\n var testClusterArn1 = values.Item2;\n return @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"es:*\"\"\n ],\n \"\"Resource\"\": [\n \"\"{testClusterArn}\"\",\n \"\"{testClusterArn1}/*\"\"\n ]\n }},\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"ec2:DescribeVpcs\"\",\n \"\"ec2:DescribeVpcAttribute\"\",\n \"\"ec2:DescribeSubnets\"\",\n \"\"ec2:DescribeSecurityGroups\"\",\n \"\"ec2:DescribeNetworkInterfaces\"\",\n \"\"ec2:CreateNetworkInterface\"\",\n \"\"ec2:CreateNetworkInterfacePermission\"\",\n \"\"ec2:DeleteNetworkInterface\"\"\n ],\n \"\"Resource\"\": [\n \"\"*\"\"\n ]\n }}\n ]\n}}\n\";\n }),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"pulumi-kinesis-firehose-os\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_opensearch,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026opensearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"m4.large.search\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026opensearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026opensearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicy(ctx, \"firehose-opensearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"opensearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.All(testCluster.Arn, testCluster.Arn).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\ttestClusterArn := _args[0].(string)\n\t\t\t\ttestClusterArn1 := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%v\",\n \"%v/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`, testClusterArn, testClusterArn1), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"pulumi-kinesis-firehose-os\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_opensearch,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"m4.large.search\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n var firehose_opensearch = new RolePolicy(\"firehose-opensearch\", RolePolicyArgs.builder()\n .name(\"opensearch\")\n .role(firehose.id())\n .policy(Output.tuple(testCluster.arn(), testCluster.arn()).applyValue(values -\u003e {\n var testClusterArn = values.t1;\n var testClusterArn1 = values.t2;\n return \"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%s\",\n \"%s/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n\", testClusterArn,testClusterArn1);\n }))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"pulumi-kinesis-firehose-os\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_opensearch)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: m4.large.search\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-opensearch:\n type: aws:iam:RolePolicy\n properties:\n name: opensearch\n role: ${firehose.id}\n policy: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n }\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: pulumi-kinesis-firehose-os\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependson:\n - ${[\"firehose-opensearch\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Serverless Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCollection = new aws.opensearch.ServerlessCollection(\"test_collection\", {name: \"firehose-osserverless-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearchserverless\",\n opensearchserverlessConfiguration: {\n collectionEndpoint: testCollection.collectionEndpoint,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_collection = aws.opensearch.ServerlessCollection(\"test_collection\", name=\"firehose-osserverless-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearchserverless\",\n opensearchserverless_configuration={\n \"collection_endpoint\": test_collection.collection_endpoint,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCollection = new Aws.OpenSearch.ServerlessCollection(\"test_collection\", new()\n {\n Name = \"firehose-osserverless-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearchserverless\",\n OpensearchserverlessConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs\n {\n CollectionEndpoint = testCollection.CollectionEndpoint,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCollection, err := opensearch.NewServerlessCollection(ctx, \"test_collection\", \u0026opensearch.ServerlessCollectionArgs{\n\t\t\tName: pulumi.String(\"firehose-osserverless-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearchserverless\"),\n\t\t\tOpensearchserverlessConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs{\n\t\t\t\tCollectionEndpoint: testCollection.CollectionEndpoint,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.ServerlessCollection;\nimport com.pulumi.aws.opensearch.ServerlessCollectionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCollection = new ServerlessCollection(\"testCollection\", ServerlessCollectionArgs.builder()\n .name(\"firehose-osserverless-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearchserverless\")\n .opensearchserverlessConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs.builder()\n .collectionEndpoint(testCollection.collectionEndpoint())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCollection:\n type: aws:opensearch:ServerlessCollection\n name: test_collection\n properties:\n name: firehose-osserverless-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearchserverless\n opensearchserverlessConfiguration:\n collectionEndpoint: ${testCollection.collectionEndpoint}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Splunk Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"splunk\",\n splunkConfiguration: {\n hecEndpoint: \"https://http-inputs-mydomain.splunkcloud.com:443\",\n hecToken: \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n hecAcknowledgmentTimeout: 600,\n hecEndpointType: \"Event\",\n s3BackupMode: \"FailedEventsOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"splunk\",\n splunk_configuration={\n \"hec_endpoint\": \"https://http-inputs-mydomain.splunkcloud.com:443\",\n \"hec_token\": \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n \"hec_acknowledgment_timeout\": 600,\n \"hec_endpoint_type\": \"Event\",\n \"s3_backup_mode\": \"FailedEventsOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"splunk\",\n SplunkConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationArgs\n {\n HecEndpoint = \"https://http-inputs-mydomain.splunkcloud.com:443\",\n HecToken = \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n HecAcknowledgmentTimeout = 600,\n HecEndpointType = \"Event\",\n S3BackupMode = \"FailedEventsOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"splunk\"),\n\t\t\tSplunkConfiguration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationArgs{\n\t\t\t\tHecEndpoint: pulumi.String(\"https://http-inputs-mydomain.splunkcloud.com:443\"),\n\t\t\t\tHecToken: pulumi.String(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\"),\n\t\t\t\tHecAcknowledgmentTimeout: pulumi.Int(600),\n\t\t\t\tHecEndpointType: pulumi.String(\"Event\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedEventsOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"splunk\")\n .splunkConfiguration(FirehoseDeliveryStreamSplunkConfigurationArgs.builder()\n .hecEndpoint(\"https://http-inputs-mydomain.splunkcloud.com:443\")\n .hecToken(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\")\n .hecAcknowledgmentTimeout(600)\n .hecEndpointType(\"Event\")\n .s3BackupMode(\"FailedEventsOnly\")\n .s3Configuration(FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: splunk\n splunkConfiguration:\n hecEndpoint: https://http-inputs-mydomain.splunkcloud.com:443\n hecToken: 51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\n hecAcknowledgmentTimeout: 600\n hecEndpointType: Event\n s3BackupMode: FailedEventsOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### HTTP Endpoint (e.g., New Relic) Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"http_endpoint\",\n httpEndpointConfiguration: {\n url: \"https://aws-api.newrelic.com/firehose/v1\",\n name: \"New Relic\",\n accessKey: \"my-key\",\n bufferingSize: 15,\n bufferingInterval: 600,\n roleArn: firehose.arn,\n s3BackupMode: \"FailedDataOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n requestConfiguration: {\n contentEncoding: \"GZIP\",\n commonAttributes: [\n {\n name: \"testname\",\n value: \"testvalue\",\n },\n {\n name: \"testname2\",\n value: \"testvalue2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"http_endpoint\",\n http_endpoint_configuration={\n \"url\": \"https://aws-api.newrelic.com/firehose/v1\",\n \"name\": \"New Relic\",\n \"access_key\": \"my-key\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"role_arn\": firehose[\"arn\"],\n \"s3_backup_mode\": \"FailedDataOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"request_configuration\": {\n \"content_encoding\": \"GZIP\",\n \"common_attributes\": [\n {\n \"name\": \"testname\",\n \"value\": \"testvalue\",\n },\n {\n \"name\": \"testname2\",\n \"value\": \"testvalue2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"http_endpoint\",\n HttpEndpointConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs\n {\n Url = \"https://aws-api.newrelic.com/firehose/v1\",\n Name = \"New Relic\",\n AccessKey = \"my-key\",\n BufferingSize = 15,\n BufferingInterval = 600,\n RoleArn = firehose.Arn,\n S3BackupMode = \"FailedDataOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n RequestConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs\n {\n ContentEncoding = \"GZIP\",\n CommonAttributes = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname\",\n Value = \"testvalue\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname2\",\n Value = \"testvalue2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"http_endpoint\"),\n\t\t\tHttpEndpointConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationArgs{\n\t\t\t\tUrl: pulumi.String(\"https://aws-api.newrelic.com/firehose/v1\"),\n\t\t\t\tName: pulumi.String(\"New Relic\"),\n\t\t\t\tAccessKey: pulumi.String(\"my-key\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedDataOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tRequestConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs{\n\t\t\t\t\tContentEncoding: pulumi.String(\"GZIP\"),\n\t\t\t\t\tCommonAttributes: kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname2\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"http_endpoint\")\n .httpEndpointConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationArgs.builder()\n .url(\"https://aws-api.newrelic.com/firehose/v1\")\n .name(\"New Relic\")\n .accessKey(\"my-key\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .roleArn(firehose.arn())\n .s3BackupMode(\"FailedDataOnly\")\n .s3Configuration(FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .requestConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs.builder()\n .contentEncoding(\"GZIP\")\n .commonAttributes( \n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname\")\n .value(\"testvalue\")\n .build(),\n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname2\")\n .value(\"testvalue2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: http_endpoint\n httpEndpointConfiguration:\n url: https://aws-api.newrelic.com/firehose/v1\n name: New Relic\n accessKey: my-key\n bufferingSize: 15\n bufferingInterval: 600\n roleArn: ${firehose.arn}\n s3BackupMode: FailedDataOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n requestConfiguration:\n contentEncoding: GZIP\n commonAttributes:\n - name: testname\n value: testvalue\n - name: testname2\n value: testvalue2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snowflake Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleSnowflakeDestination = new aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", {\n name: \"example-snowflake-destination\",\n destination: \"snowflake\",\n snowflakeConfiguration: {\n accountUrl: \"https://example.snowflakecomputing.com\",\n bufferingSize: 15,\n bufferingInterval: 600,\n database: \"example-db\",\n privateKey: \"...\",\n roleArn: firehose.arn,\n schema: \"example-schema\",\n table: \"example-table\",\n user: \"example-usr\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_snowflake_destination = aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\",\n name=\"example-snowflake-destination\",\n destination=\"snowflake\",\n snowflake_configuration={\n \"account_url\": \"https://example.snowflakecomputing.com\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"database\": \"example-db\",\n \"private_key\": \"...\",\n \"role_arn\": firehose[\"arn\"],\n \"schema\": \"example-schema\",\n \"table\": \"example-table\",\n \"user\": \"example-usr\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleSnowflakeDestination = new Aws.Kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", new()\n {\n Name = \"example-snowflake-destination\",\n Destination = \"snowflake\",\n SnowflakeConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs\n {\n AccountUrl = \"https://example.snowflakecomputing.com\",\n BufferingSize = 15,\n BufferingInterval = 600,\n Database = \"example-db\",\n PrivateKey = \"...\",\n RoleArn = firehose.Arn,\n Schema = \"example-schema\",\n Table = \"example-table\",\n User = \"example-usr\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"example_snowflake_destination\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"example-snowflake-destination\"),\n\t\t\tDestination: pulumi.String(\"snowflake\"),\n\t\t\tSnowflakeConfiguration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationArgs{\n\t\t\t\tAccountUrl: pulumi.String(\"https://example.snowflakecomputing.com\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tDatabase: pulumi.String(\"example-db\"),\n\t\t\t\tPrivateKey: pulumi.String(\"...\"),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tSchema: pulumi.String(\"example-schema\"),\n\t\t\t\tTable: pulumi.String(\"example-table\"),\n\t\t\t\tUser: pulumi.String(\"example-usr\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleSnowflakeDestination = new FirehoseDeliveryStream(\"exampleSnowflakeDestination\", FirehoseDeliveryStreamArgs.builder()\n .name(\"example-snowflake-destination\")\n .destination(\"snowflake\")\n .snowflakeConfiguration(FirehoseDeliveryStreamSnowflakeConfigurationArgs.builder()\n .accountUrl(\"https://example.snowflakecomputing.com\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .database(\"example-db\")\n .privateKey(\"...\")\n .roleArn(firehose.arn())\n .schema(\"example-schema\")\n .table(\"example-table\")\n .user(\"example-usr\")\n .s3Configuration(FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleSnowflakeDestination:\n type: aws:kinesis:FirehoseDeliveryStream\n name: example_snowflake_destination\n properties:\n name: example-snowflake-destination\n destination: snowflake\n snowflakeConfiguration:\n accountUrl: https://example.snowflakecomputing.com\n bufferingSize: 15\n bufferingInterval: 600\n database: example-db\n privateKey: '...'\n roleArn: ${firehose.arn}\n schema: example-schema\n table: example-table\n user: example-usr\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Kinesis Firehose Delivery streams using the stream ARN. For example:\n\n```sh\n$ pulumi import aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream foo arn:aws:firehose:us-east-1:XXX:deliverystream/example\n```\nNote: Import does not work for stream destination `s3`. Consider using `extended_s3` since `s3` destination is deprecated.\n\n",
+ "description": "Provides a Kinesis Firehose Delivery Stream resource. Amazon Kinesis Firehose is a fully managed, elastic service to easily deliver real-time data streams to destinations such as Amazon S3 , Amazon Redshift and Snowflake.\n\nFor more details, see the [Amazon Kinesis Firehose Documentation](https://aws.amazon.com/documentation/firehose/).\n\n## Example Usage\n\n### Extended S3 Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst bucket = new aws.s3.BucketV2(\"bucket\", {bucket: \"tf-test-bucket\"});\nconst firehoseAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"firehose.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst firehoseRole = new aws.iam.Role(\"firehose_role\", {\n name: \"firehose_test_role\",\n assumeRolePolicy: firehoseAssumeRole.then(firehoseAssumeRole =\u003e firehoseAssumeRole.json),\n});\nconst lambdaAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst lambdaIam = new aws.iam.Role(\"lambda_iam\", {\n name: \"lambda_iam\",\n assumeRolePolicy: lambdaAssumeRole.then(lambdaAssumeRole =\u003e lambdaAssumeRole.json),\n});\nconst lambdaProcessor = new aws.lambda.Function(\"lambda_processor\", {\n code: new pulumi.asset.FileArchive(\"lambda.zip\"),\n name: \"firehose_lambda_processor\",\n role: lambdaIam.arn,\n handler: \"exports.handler\",\n runtime: aws.lambda.Runtime.NodeJS20dX,\n});\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: pulumi.interpolate`${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\nconst bucketAcl = new aws.s3.BucketAclV2(\"bucket_acl\", {\n bucket: bucket.id,\n acl: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"tf-test-bucket\")\nfirehose_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"firehose.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nfirehose_role = aws.iam.Role(\"firehose_role\",\n name=\"firehose_test_role\",\n assume_role_policy=firehose_assume_role.json)\nlambda_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nlambda_iam = aws.iam.Role(\"lambda_iam\",\n name=\"lambda_iam\",\n assume_role_policy=lambda_assume_role.json)\nlambda_processor = aws.lambda_.Function(\"lambda_processor\",\n code=pulumi.FileArchive(\"lambda.zip\"),\n name=\"firehose_lambda_processor\",\n role=lambda_iam.arn,\n handler=\"exports.handler\",\n runtime=aws.lambda_.Runtime.NODE_JS20D_X)\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role.arn,\n \"bucket_arn\": bucket.arn,\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": lambda_processor.arn.apply(lambda arn: f\"{arn}:$LATEST\"),\n }],\n }],\n },\n })\nbucket_acl = aws.s3.BucketAclV2(\"bucket_acl\",\n bucket=bucket.id,\n acl=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"tf-test-bucket\",\n });\n\n var firehoseAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"firehose.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var firehoseRole = new Aws.Iam.Role(\"firehose_role\", new()\n {\n Name = \"firehose_test_role\",\n AssumeRolePolicy = firehoseAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var lambdaIam = new Aws.Iam.Role(\"lambda_iam\", new()\n {\n Name = \"lambda_iam\",\n AssumeRolePolicy = lambdaAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaProcessor = new Aws.Lambda.Function(\"lambda_processor\", new()\n {\n Code = new FileArchive(\"lambda.zip\"),\n Name = \"firehose_lambda_processor\",\n Role = lambdaIam.Arn,\n Handler = \"exports.handler\",\n Runtime = Aws.Lambda.Runtime.NodeJS20dX,\n });\n\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = lambdaProcessor.Arn.Apply(arn =\u003e $\"{arn}:$LATEST\"),\n },\n },\n },\n },\n },\n },\n });\n\n var bucketAcl = new Aws.S3.BucketAclV2(\"bucket_acl\", new()\n {\n Bucket = bucket.Id,\n Acl = \"private\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"tf-test-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"firehose.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseRole, err := iam.NewRole(ctx, \"firehose_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"firehose_test_role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(firehoseAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"lambda.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaIam, err := iam.NewRole(ctx, \"lambda_iam\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"lambda_iam\"),\n\t\t\tAssumeRolePolicy: pulumi.String(lambdaAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaProcessor, err := lambda.NewFunction(ctx, \"lambda_processor\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"lambda.zip\"),\n\t\t\tName: pulumi.String(\"firehose_lambda_processor\"),\n\t\t\tRole: lambdaIam.Arn,\n\t\t\tHandler: pulumi.String(\"exports.handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeNodeJS20dX),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: firehoseRole.Arn,\n\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: lambdaProcessor.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:$LATEST\", arn), nil\n\t\t\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketAclV2(ctx, \"bucket_acl\", \u0026s3.BucketAclV2Args{\n\t\t\tBucket: bucket.ID(),\n\t\t\tAcl: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport com.pulumi.aws.s3.BucketAclV2;\nimport com.pulumi.aws.s3.BucketAclV2Args;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"tf-test-bucket\")\n .build());\n\n final var firehoseAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"firehose.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var firehoseRole = new Role(\"firehoseRole\", RoleArgs.builder()\n .name(\"firehose_test_role\")\n .assumeRolePolicy(firehoseAssumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n final var lambdaAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"lambda.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var lambdaIam = new Role(\"lambdaIam\", RoleArgs.builder()\n .name(\"lambda_iam\")\n .assumeRolePolicy(lambdaAssumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n var lambdaProcessor = new Function(\"lambdaProcessor\", FunctionArgs.builder()\n .code(new FileArchive(\"lambda.zip\"))\n .name(\"firehose_lambda_processor\")\n .role(lambdaIam.arn())\n .handler(\"exports.handler\")\n .runtime(\"nodejs20.x\")\n .build());\n\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(lambdaProcessor.arn().applyValue(arn -\u003e String.format(\"%s:$LATEST\", arn)))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var bucketAcl = new BucketAclV2(\"bucketAcl\", BucketAclV2Args.builder()\n .bucket(bucket.id())\n .acl(\"private\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: tf-test-bucket\n bucketAcl:\n type: aws:s3:BucketAclV2\n name: bucket_acl\n properties:\n bucket: ${bucket.id}\n acl: private\n firehoseRole:\n type: aws:iam:Role\n name: firehose_role\n properties:\n name: firehose_test_role\n assumeRolePolicy: ${firehoseAssumeRole.json}\n lambdaIam:\n type: aws:iam:Role\n name: lambda_iam\n properties:\n name: lambda_iam\n assumeRolePolicy: ${lambdaAssumeRole.json}\n lambdaProcessor:\n type: aws:lambda:Function\n name: lambda_processor\n properties:\n code:\n fn::FileArchive: lambda.zip\n name: firehose_lambda_processor\n role: ${lambdaIam.arn}\n handler: exports.handler\n runtime: nodejs20.x\nvariables:\n firehoseAssumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - firehose.amazonaws.com\n actions:\n - sts:AssumeRole\n lambdaAssumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Extended S3 Destination with dynamic partitioning\n\nThese examples use built-in Firehose functionality, rather than requiring a lambda.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [\n {\n type: \"RecordDeAggregation\",\n parameters: [{\n parameterName: \"SubRecordType\",\n parameterValue: \"JSON\",\n }],\n },\n {\n type: \"AppendDelimiterToRecord\",\n },\n {\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [\n {\n \"type\": \"RecordDeAggregation\",\n \"parameters\": [{\n \"parameter_name\": \"SubRecordType\",\n \"parameter_value\": \"JSON\",\n }],\n },\n {\n \"type\": \"AppendDelimiterToRecord\",\n },\n {\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"RecordDeAggregation\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"SubRecordType\",\n ParameterValue = \"JSON\",\n },\n },\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"AppendDelimiterToRecord\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"RecordDeAggregation\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"SubRecordType\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JSON\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"AppendDelimiterToRecord\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(\"true\")\n .build())\n .prefix(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"RecordDeAggregation\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"SubRecordType\")\n .parameterValue(\"JSON\")\n .build())\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"AppendDelimiterToRecord\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: RecordDeAggregation\n parameters:\n - parameterName: SubRecordType\n parameterValue: JSON\n - type: AppendDelimiterToRecord\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nMultiple Dynamic Partitioning Keys (maximum of 50) can be added by comma separating the `parameter_value`.\n\nThe following example adds the Dynamic Partitioning Keys: `store_id` and `customer_id` to the S3 prefix.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{store_id:.store_id,customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(\"true\")\n .build())\n .prefix(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{store_id:.store_id,customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{store_id:.store_id,customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redshift Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.redshift.Cluster(\"test_cluster\", {\n clusterIdentifier: \"tf-redshift-cluster\",\n databaseName: \"test\",\n masterUsername: \"testuser\",\n masterPassword: \"T3stPass\",\n nodeType: \"dc1.large\",\n clusterType: \"single-node\",\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"redshift\",\n redshiftConfiguration: {\n roleArn: firehoseRole.arn,\n clusterJdbcurl: pulumi.interpolate`jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}`,\n username: \"testuser\",\n password: \"T3stPass\",\n dataTableName: \"test-table\",\n copyOptions: \"delimiter '|'\",\n dataTableColumns: \"test-col\",\n s3BackupMode: \"Enabled\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n s3BackupConfiguration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 15,\n bufferingInterval: 300,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.redshift.Cluster(\"test_cluster\",\n cluster_identifier=\"tf-redshift-cluster\",\n database_name=\"test\",\n master_username=\"testuser\",\n master_password=\"T3stPass\",\n node_type=\"dc1.large\",\n cluster_type=\"single-node\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"redshift\",\n redshift_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"cluster_jdbcurl\": pulumi.Output.all(\n endpoint=test_cluster.endpoint,\n database_name=test_cluster.database_name\n).apply(lambda resolved_outputs: f\"jdbc:redshift://{resolved_outputs['endpoint']}/{resolved_outputs['database_name']}\")\n,\n \"username\": \"testuser\",\n \"password\": \"T3stPass\",\n \"data_table_name\": \"test-table\",\n \"copy_options\": \"delimiter '|'\",\n \"data_table_columns\": \"test-col\",\n \"s3_backup_mode\": \"Enabled\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"s3_backup_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 15,\n \"buffering_interval\": 300,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.RedShift.Cluster(\"test_cluster\", new()\n {\n ClusterIdentifier = \"tf-redshift-cluster\",\n DatabaseName = \"test\",\n MasterUsername = \"testuser\",\n MasterPassword = \"T3stPass\",\n NodeType = \"dc1.large\",\n ClusterType = \"single-node\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"redshift\",\n RedshiftConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n ClusterJdbcurl = Output.Tuple(testCluster.Endpoint, testCluster.DatabaseName).Apply(values =\u003e\n {\n var endpoint = values.Item1;\n var databaseName = values.Item2;\n return $\"jdbc:redshift://{endpoint}/{databaseName}\";\n }),\n Username = \"testuser\",\n Password = \"T3stPass\",\n DataTableName = \"test-table\",\n CopyOptions = \"delimiter '|'\",\n DataTableColumns = \"test-col\",\n S3BackupMode = \"Enabled\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n S3BackupConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 15,\n BufferingInterval = 300,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/redshift\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := redshift.NewCluster(ctx, \"test_cluster\", \u0026redshift.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"tf-redshift-cluster\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tMasterUsername: pulumi.String(\"testuser\"),\n\t\t\tMasterPassword: pulumi.String(\"T3stPass\"),\n\t\t\tNodeType: pulumi.String(\"dc1.large\"),\n\t\t\tClusterType: pulumi.String(\"single-node\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"redshift\"),\n\t\t\tRedshiftConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tClusterJdbcurl: pulumi.All(testCluster.Endpoint, testCluster.DatabaseName).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tendpoint := _args[0].(string)\n\t\t\t\t\tdatabaseName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"jdbc:redshift://%v/%v\", endpoint, databaseName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUsername: pulumi.String(\"testuser\"),\n\t\t\t\tPassword: pulumi.String(\"T3stPass\"),\n\t\t\t\tDataTableName: pulumi.String(\"test-table\"),\n\t\t\t\tCopyOptions: pulumi.String(\"delimiter '|'\"),\n\t\t\t\tDataTableColumns: pulumi.String(\"test-col\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"Enabled\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tS3BackupConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\t\tBufferingInterval: pulumi.Int(300),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.redshift.Cluster;\nimport com.pulumi.aws.redshift.ClusterArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Cluster(\"testCluster\", ClusterArgs.builder()\n .clusterIdentifier(\"tf-redshift-cluster\")\n .databaseName(\"test\")\n .masterUsername(\"testuser\")\n .masterPassword(\"T3stPass\")\n .nodeType(\"dc1.large\")\n .clusterType(\"single-node\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"redshift\")\n .redshiftConfiguration(FirehoseDeliveryStreamRedshiftConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .clusterJdbcurl(Output.tuple(testCluster.endpoint(), testCluster.databaseName()).applyValue(values -\u003e {\n var endpoint = values.t1;\n var databaseName = values.t2;\n return String.format(\"jdbc:redshift://%s/%s\", endpoint,databaseName);\n }))\n .username(\"testuser\")\n .password(\"T3stPass\")\n .dataTableName(\"test-table\")\n .copyOptions(\"delimiter '|'\")\n .dataTableColumns(\"test-col\")\n .s3BackupMode(\"Enabled\")\n .s3Configuration(FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .s3BackupConfiguration(FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(15)\n .bufferingInterval(300)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:redshift:Cluster\n name: test_cluster\n properties:\n clusterIdentifier: tf-redshift-cluster\n databaseName: test\n masterUsername: testuser\n masterPassword: T3stPass\n nodeType: dc1.large\n clusterType: single-node\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: redshift\n redshiftConfiguration:\n roleArn: ${firehoseRole.arn}\n clusterJdbcurl: jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}\n username: testuser\n password: T3stPass\n dataTableName: test-table\n copyOptions: delimiter '|'\n dataTableColumns: test-col\n s3BackupMode: Enabled\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n s3BackupConfiguration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 15\n bufferingInterval: 300\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {domainName: \"firehose-es-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\", domain_name=\"firehose-es-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-es-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-es-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-es-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-es-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"t2.small.elasticsearch\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose-elasticsearch = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"es:*\"],\n resources: [\n testCluster.arn,\n pulumi.interpolate`${testCluster.arn}/*`,\n ],\n },\n {\n effect: \"Allow\",\n actions: [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n resources: [\"*\"],\n },\n ],\n});\nconst firehose_elasticsearchRolePolicy = new aws.iam.RolePolicy(\"firehose-elasticsearch\", {\n name: \"elasticsearch\",\n role: firehose.id,\n policy: firehose_elasticsearch.apply(firehose_elasticsearch =\u003e firehose_elasticsearch.json),\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"kinesis-firehose-es\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_elasticsearchRolePolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"t2.small.elasticsearch\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_elasticsearch = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"es:*\"],\n \"resources\": [\n test_cluster.arn,\n test_cluster.arn.apply(lambda arn: f\"{arn}/*\"),\n ],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n \"resources\": [\"*\"],\n },\n])\nfirehose_elasticsearch_role_policy = aws.iam.RolePolicy(\"firehose-elasticsearch\",\n name=\"elasticsearch\",\n role=firehose[\"id\"],\n policy=firehose_elasticsearch.json)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"kinesis-firehose-es\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_elasticsearch_role_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"t2.small.elasticsearch\",\n },\n EbsOptions = new Aws.ElasticSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.ElasticSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_elasticsearch = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"es:*\",\n },\n Resources = new[]\n {\n testCluster.Arn,\n $\"{testCluster.Arn}/*\",\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var firehose_elasticsearchRolePolicy = new Aws.Iam.RolePolicy(\"firehose-elasticsearch\", new()\n {\n Name = \"elasticsearch\",\n Role = firehose.Id,\n Policy = firehose_elasticsearch.Apply(firehose_elasticsearch =\u003e firehose_elasticsearch.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json)),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"kinesis-firehose-es\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_elasticsearchRolePolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"t2.small.elasticsearch\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026elasticsearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026elasticsearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehose_elasticsearch := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"es:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\ttestCluster.Arn,\n\t\t\t\t\t\ttestCluster.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v/*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcs\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcAttribute\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSubnets\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSecurityGroups\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeNetworkInterfaces\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterface\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterfacePermission\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DeleteNetworkInterface\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = iam.NewRolePolicy(ctx, \"firehose-elasticsearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"elasticsearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.String(firehose_elasticsearch.ApplyT(func(firehose_elasticsearch iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026firehose_elasticsearch.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-es\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_elasticsearchRolePolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"t2.small.elasticsearch\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n final var firehose-elasticsearch = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"es:*\")\n .resources( \n testCluster.arn(),\n testCluster.arn().applyValue(arn -\u003e String.format(\"%s/*\", arn)))\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions( \n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\")\n .resources(\"*\")\n .build())\n .build());\n\n var firehose_elasticsearchRolePolicy = new RolePolicy(\"firehose-elasticsearchRolePolicy\", RolePolicyArgs.builder()\n .name(\"elasticsearch\")\n .role(firehose.id())\n .policy(firehose_elasticsearch.applyValue(firehose_elasticsearch -\u003e firehose_elasticsearch.json()))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-es\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_elasticsearchRolePolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: t2.small.elasticsearch\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-elasticsearchRolePolicy:\n type: aws:iam:RolePolicy\n name: firehose-elasticsearch\n properties:\n name: elasticsearch\n role: ${firehose.id}\n policy: ${[\"firehose-elasticsearch\"].json}\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: kinesis-firehose-es\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependson:\n - ${[\"firehose-elasticsearchRolePolicy\"]}\nvariables:\n firehose-elasticsearch:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n actions:\n - es:*\n resources:\n - ${testCluster.arn}\n - ${testCluster.arn}/*\n - effect: Allow\n actions:\n - ec2:DescribeVpcs\n - ec2:DescribeVpcAttribute\n - ec2:DescribeSubnets\n - ec2:DescribeSecurityGroups\n - ec2:DescribeNetworkInterfaces\n - ec2:CreateNetworkInterface\n - ec2:CreateNetworkInterfacePermission\n - ec2:DeleteNetworkInterface\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {domainName: \"firehose-os-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\", domain_name=\"firehose-os-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-os-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-os-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-os-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-os-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"m4.large.search\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose_opensearch = new aws.iam.RolePolicy(\"firehose-opensearch\", {\n name: \"opensearch\",\n role: firehose.id,\n policy: pulumi.interpolate`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`,\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"pulumi-kinesis-firehose-os\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_opensearch],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"m4.large.search\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_opensearch = aws.iam.RolePolicy(\"firehose-opensearch\",\n name=\"opensearch\",\n role=firehose[\"id\"],\n policy=pulumi.Output.all(\n testClusterArn=test_cluster.arn,\n testClusterArn1=test_cluster.arn\n).apply(lambda resolved_outputs: f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"{resolved_outputs['testClusterArn']}\",\n \"{resolved_outputs['testClusterArn1']}/*\"\n ]\n }},\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }}\n ]\n}}\n\"\"\")\n)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"pulumi-kinesis-firehose-os\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_opensearch]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.OpenSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"m4.large.search\",\n },\n EbsOptions = new Aws.OpenSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.OpenSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_opensearch = new Aws.Iam.RolePolicy(\"firehose-opensearch\", new()\n {\n Name = \"opensearch\",\n Role = firehose.Id,\n Policy = Output.Tuple(testCluster.Arn, testCluster.Arn).Apply(values =\u003e\n {\n var testClusterArn = values.Item1;\n var testClusterArn1 = values.Item2;\n return @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"es:*\"\"\n ],\n \"\"Resource\"\": [\n \"\"{testClusterArn}\"\",\n \"\"{testClusterArn1}/*\"\"\n ]\n }},\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"ec2:DescribeVpcs\"\",\n \"\"ec2:DescribeVpcAttribute\"\",\n \"\"ec2:DescribeSubnets\"\",\n \"\"ec2:DescribeSecurityGroups\"\",\n \"\"ec2:DescribeNetworkInterfaces\"\",\n \"\"ec2:CreateNetworkInterface\"\",\n \"\"ec2:CreateNetworkInterfacePermission\"\",\n \"\"ec2:DeleteNetworkInterface\"\"\n ],\n \"\"Resource\"\": [\n \"\"*\"\"\n ]\n }}\n ]\n}}\n\";\n }),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"pulumi-kinesis-firehose-os\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_opensearch,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026opensearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"m4.large.search\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026opensearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026opensearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicy(ctx, \"firehose-opensearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"opensearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.All(testCluster.Arn, testCluster.Arn).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\ttestClusterArn := _args[0].(string)\n\t\t\t\ttestClusterArn1 := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%v\",\n \"%v/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`, testClusterArn, testClusterArn1), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"pulumi-kinesis-firehose-os\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_opensearch,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"m4.large.search\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n var firehose_opensearch = new RolePolicy(\"firehose-opensearch\", RolePolicyArgs.builder()\n .name(\"opensearch\")\n .role(firehose.id())\n .policy(Output.tuple(testCluster.arn(), testCluster.arn()).applyValue(values -\u003e {\n var testClusterArn = values.t1;\n var testClusterArn1 = values.t2;\n return \"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%s\",\n \"%s/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n\", testClusterArn,testClusterArn1);\n }))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"pulumi-kinesis-firehose-os\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_opensearch)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: m4.large.search\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-opensearch:\n type: aws:iam:RolePolicy\n properties:\n name: opensearch\n role: ${firehose.id}\n policy: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n }\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: pulumi-kinesis-firehose-os\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependson:\n - ${[\"firehose-opensearch\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Serverless Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCollection = new aws.opensearch.ServerlessCollection(\"test_collection\", {name: \"firehose-osserverless-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearchserverless\",\n opensearchserverlessConfiguration: {\n collectionEndpoint: testCollection.collectionEndpoint,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_collection = aws.opensearch.ServerlessCollection(\"test_collection\", name=\"firehose-osserverless-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearchserverless\",\n opensearchserverless_configuration={\n \"collection_endpoint\": test_collection.collection_endpoint,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCollection = new Aws.OpenSearch.ServerlessCollection(\"test_collection\", new()\n {\n Name = \"firehose-osserverless-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearchserverless\",\n OpensearchserverlessConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs\n {\n CollectionEndpoint = testCollection.CollectionEndpoint,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCollection, err := opensearch.NewServerlessCollection(ctx, \"test_collection\", \u0026opensearch.ServerlessCollectionArgs{\n\t\t\tName: pulumi.String(\"firehose-osserverless-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearchserverless\"),\n\t\t\tOpensearchserverlessConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs{\n\t\t\t\tCollectionEndpoint: testCollection.CollectionEndpoint,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.ServerlessCollection;\nimport com.pulumi.aws.opensearch.ServerlessCollectionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCollection = new ServerlessCollection(\"testCollection\", ServerlessCollectionArgs.builder()\n .name(\"firehose-osserverless-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearchserverless\")\n .opensearchserverlessConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs.builder()\n .collectionEndpoint(testCollection.collectionEndpoint())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCollection:\n type: aws:opensearch:ServerlessCollection\n name: test_collection\n properties:\n name: firehose-osserverless-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearchserverless\n opensearchserverlessConfiguration:\n collectionEndpoint: ${testCollection.collectionEndpoint}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Iceberg Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getCallerIdentity({});\nconst currentGetPartition = aws.getPartition({});\nconst currentGetRegion = aws.getRegion({});\nconst bucket = new aws.s3.BucketV2(\"bucket\", {\n bucket: \"test-bucket\",\n forceDestroy: true,\n});\nconst test = new aws.glue.CatalogDatabase(\"test\", {name: \"test\"});\nconst testCatalogTable = new aws.glue.CatalogTable(\"test\", {\n name: \"test\",\n databaseName: test.name,\n parameters: {\n format: \"parquet\",\n },\n tableType: \"EXTERNAL_TABLE\",\n openTableFormatInput: {\n icebergInput: {\n metadataOperation: \"CREATE\",\n version: \"2\",\n },\n },\n storageDescriptor: {\n location: pulumi.interpolate`s3://${bucket.id}`,\n columns: [{\n name: \"my_column_1\",\n type: \"int\",\n }],\n },\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"iceberg\",\n icebergConfiguration: {\n roleArn: firehoseRole.arn,\n catalogArn: Promise.all([currentGetPartition, currentGetRegion, current]).then(([currentGetPartition, currentGetRegion, current]) =\u003e `arn:${currentGetPartition.partition}:glue:${currentGetRegion.name}:${current.accountId}:catalog`),\n bufferingSize: 10,\n bufferingInterval: 400,\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n },\n destinationTableConfigurations: [{\n databaseName: test.name,\n tableName: testCatalogTable.name,\n }],\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\ncurrent_get_partition = aws.get_partition()\ncurrent_get_region = aws.get_region()\nbucket = aws.s3.BucketV2(\"bucket\",\n bucket=\"test-bucket\",\n force_destroy=True)\ntest = aws.glue.CatalogDatabase(\"test\", name=\"test\")\ntest_catalog_table = aws.glue.CatalogTable(\"test\",\n name=\"test\",\n database_name=test.name,\n parameters={\n \"format\": \"parquet\",\n },\n table_type=\"EXTERNAL_TABLE\",\n open_table_format_input={\n \"iceberg_input\": {\n \"metadata_operation\": \"CREATE\",\n \"version\": \"2\",\n },\n },\n storage_descriptor={\n \"location\": bucket.id.apply(lambda id: f\"s3://{id}\"),\n \"columns\": [{\n \"name\": \"my_column_1\",\n \"type\": \"int\",\n }],\n })\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"iceberg\",\n iceberg_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"catalog_arn\": f\"arn:{current_get_partition.partition}:glue:{current_get_region.name}:{current.account_id}:catalog\",\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket.arn,\n },\n \"destination_table_configurations\": [{\n \"database_name\": test.name,\n \"table_name\": test_catalog_table.name,\n }],\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetCallerIdentity.Invoke();\n\n var currentGetPartition = Aws.GetPartition.Invoke();\n\n var currentGetRegion = Aws.GetRegion.Invoke();\n\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"test-bucket\",\n ForceDestroy = true,\n });\n\n var test = new Aws.Glue.CatalogDatabase(\"test\", new()\n {\n Name = \"test\",\n });\n\n var testCatalogTable = new Aws.Glue.CatalogTable(\"test\", new()\n {\n Name = \"test\",\n DatabaseName = test.Name,\n Parameters = \n {\n { \"format\", \"parquet\" },\n },\n TableType = \"EXTERNAL_TABLE\",\n OpenTableFormatInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputArgs\n {\n IcebergInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputIcebergInputArgs\n {\n MetadataOperation = \"CREATE\",\n Version = \"2\",\n },\n },\n StorageDescriptor = new Aws.Glue.Inputs.CatalogTableStorageDescriptorArgs\n {\n Location = bucket.Id.Apply(id =\u003e $\"s3://{id}\"),\n Columns = new[]\n {\n new Aws.Glue.Inputs.CatalogTableStorageDescriptorColumnArgs\n {\n Name = \"my_column_1\",\n Type = \"int\",\n },\n },\n },\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"iceberg\",\n IcebergConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n CatalogArn = Output.Tuple(currentGetPartition, currentGetRegion, current).Apply(values =\u003e\n {\n var currentGetPartition = values.Item1;\n var currentGetRegion = values.Item2;\n var current = values.Item3;\n return $\"arn:{currentGetPartition.Apply(getPartitionResult =\u003e getPartitionResult.Partition)}:glue:{currentGetRegion.Apply(getRegionResult =\u003e getRegionResult.Name)}:{current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}:catalog\";\n }),\n BufferingSize = 10,\n BufferingInterval = 400,\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n },\n DestinationTableConfigurations = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs\n {\n DatabaseName = test.Name,\n TableName = testCatalogTable.Name,\n },\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetPartition, err := aws.GetPartition(ctx, \u0026aws.GetPartitionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetRegion, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"test-bucket\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := glue.NewCatalogDatabase(ctx, \"test\", \u0026glue.CatalogDatabaseArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestCatalogTable, err := glue.NewCatalogTable(ctx, \"test\", \u0026glue.CatalogTableArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDatabaseName: test.Name,\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"format\": pulumi.String(\"parquet\"),\n\t\t\t},\n\t\t\tTableType: pulumi.String(\"EXTERNAL_TABLE\"),\n\t\t\tOpenTableFormatInput: \u0026glue.CatalogTableOpenTableFormatInputArgs{\n\t\t\t\tIcebergInput: \u0026glue.CatalogTableOpenTableFormatInputIcebergInputArgs{\n\t\t\t\t\tMetadataOperation: pulumi.String(\"CREATE\"),\n\t\t\t\t\tVersion: pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorageDescriptor: \u0026glue.CatalogTableStorageDescriptorArgs{\n\t\t\t\tLocation: bucket.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"s3://%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tColumns: glue.CatalogTableStorageDescriptorColumnArray{\n\t\t\t\t\t\u0026glue.CatalogTableStorageDescriptorColumnArgs{\n\t\t\t\t\t\tName: pulumi.String(\"my_column_1\"),\n\t\t\t\t\t\tType: pulumi.String(\"int\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"iceberg\"),\n\t\t\tIcebergConfiguration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tCatalogArn: pulumi.Sprintf(\"arn:%v:glue:%v:%v:catalog\", currentGetPartition.Partition, currentGetRegion.Name, current.AccountId),\n\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\t},\n\t\t\t\tDestinationTableConfigurations: kinesis.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArray{\n\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs{\n\t\t\t\t\t\tDatabaseName: test.Name,\n\t\t\t\t\t\tTableName: testCatalogTable.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.inputs.GetPartitionArgs;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.glue.CatalogDatabase;\nimport com.pulumi.aws.glue.CatalogDatabaseArgs;\nimport com.pulumi.aws.glue.CatalogTable;\nimport com.pulumi.aws.glue.CatalogTableArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOpenTableFormatInputArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOpenTableFormatInputIcebergInputArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableStorageDescriptorArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getCallerIdentity();\n\n final var currentGetPartition = AwsFunctions.getPartition();\n\n final var currentGetRegion = AwsFunctions.getRegion();\n\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"test-bucket\")\n .forceDestroy(true)\n .build());\n\n var test = new CatalogDatabase(\"test\", CatalogDatabaseArgs.builder()\n .name(\"test\")\n .build());\n\n var testCatalogTable = new CatalogTable(\"testCatalogTable\", CatalogTableArgs.builder()\n .name(\"test\")\n .databaseName(test.name())\n .parameters(Map.of(\"format\", \"parquet\"))\n .tableType(\"EXTERNAL_TABLE\")\n .openTableFormatInput(CatalogTableOpenTableFormatInputArgs.builder()\n .icebergInput(CatalogTableOpenTableFormatInputIcebergInputArgs.builder()\n .metadataOperation(\"CREATE\")\n .version(2)\n .build())\n .build())\n .storageDescriptor(CatalogTableStorageDescriptorArgs.builder()\n .location(bucket.id().applyValue(id -\u003e String.format(\"s3://%s\", id)))\n .columns(CatalogTableStorageDescriptorColumnArgs.builder()\n .name(\"my_column_1\")\n .type(\"int\")\n .build())\n .build())\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"iceberg\")\n .icebergConfiguration(FirehoseDeliveryStreamIcebergConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .catalogArn(String.format(\"arn:%s:glue:%s:%s:catalog\", currentGetPartition.applyValue(getPartitionResult -\u003e getPartitionResult.partition()),currentGetRegion.applyValue(getRegionResult -\u003e getRegionResult.name()),current.applyValue(getCallerIdentityResult -\u003e getCallerIdentityResult.accountId())))\n .bufferingSize(10)\n .bufferingInterval(400)\n .s3Configuration(FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .build())\n .destinationTableConfigurations(FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs.builder()\n .databaseName(test.name())\n .tableName(testCatalogTable.name())\n .build())\n .processingConfiguration(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: test-bucket\n forceDestroy: true\n test:\n type: aws:glue:CatalogDatabase\n properties:\n name: test\n testCatalogTable:\n type: aws:glue:CatalogTable\n name: test\n properties:\n name: test\n databaseName: ${test.name}\n parameters:\n format: parquet\n tableType: EXTERNAL_TABLE\n openTableFormatInput:\n icebergInput:\n metadataOperation: CREATE\n version: 2\n storageDescriptor:\n location: s3://${bucket.id}\n columns:\n - name: my_column_1\n type: int\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: iceberg\n icebergConfiguration:\n roleArn: ${firehoseRole.arn}\n catalogArn: arn:${currentGetPartition.partition}:glue:${currentGetRegion.name}:${current.accountId}:catalog\n bufferingSize: 10\n bufferingInterval: 400\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n destinationTableConfigurations:\n - databaseName: ${test.name}\n tableName: ${testCatalogTable.name}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\nvariables:\n current:\n fn::invoke:\n Function: aws:getCallerIdentity\n Arguments: {}\n currentGetPartition:\n fn::invoke:\n Function: aws:getPartition\n Arguments: {}\n currentGetRegion:\n fn::invoke:\n Function: aws:getRegion\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Splunk Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"splunk\",\n splunkConfiguration: {\n hecEndpoint: \"https://http-inputs-mydomain.splunkcloud.com:443\",\n hecToken: \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n hecAcknowledgmentTimeout: 600,\n hecEndpointType: \"Event\",\n s3BackupMode: \"FailedEventsOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"splunk\",\n splunk_configuration={\n \"hec_endpoint\": \"https://http-inputs-mydomain.splunkcloud.com:443\",\n \"hec_token\": \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n \"hec_acknowledgment_timeout\": 600,\n \"hec_endpoint_type\": \"Event\",\n \"s3_backup_mode\": \"FailedEventsOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"splunk\",\n SplunkConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationArgs\n {\n HecEndpoint = \"https://http-inputs-mydomain.splunkcloud.com:443\",\n HecToken = \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n HecAcknowledgmentTimeout = 600,\n HecEndpointType = \"Event\",\n S3BackupMode = \"FailedEventsOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"splunk\"),\n\t\t\tSplunkConfiguration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationArgs{\n\t\t\t\tHecEndpoint: pulumi.String(\"https://http-inputs-mydomain.splunkcloud.com:443\"),\n\t\t\t\tHecToken: pulumi.String(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\"),\n\t\t\t\tHecAcknowledgmentTimeout: pulumi.Int(600),\n\t\t\t\tHecEndpointType: pulumi.String(\"Event\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedEventsOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"splunk\")\n .splunkConfiguration(FirehoseDeliveryStreamSplunkConfigurationArgs.builder()\n .hecEndpoint(\"https://http-inputs-mydomain.splunkcloud.com:443\")\n .hecToken(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\")\n .hecAcknowledgmentTimeout(600)\n .hecEndpointType(\"Event\")\n .s3BackupMode(\"FailedEventsOnly\")\n .s3Configuration(FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: splunk\n splunkConfiguration:\n hecEndpoint: https://http-inputs-mydomain.splunkcloud.com:443\n hecToken: 51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\n hecAcknowledgmentTimeout: 600\n hecEndpointType: Event\n s3BackupMode: FailedEventsOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### HTTP Endpoint (e.g., New Relic) Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"http_endpoint\",\n httpEndpointConfiguration: {\n url: \"https://aws-api.newrelic.com/firehose/v1\",\n name: \"New Relic\",\n accessKey: \"my-key\",\n bufferingSize: 15,\n bufferingInterval: 600,\n roleArn: firehose.arn,\n s3BackupMode: \"FailedDataOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n requestConfiguration: {\n contentEncoding: \"GZIP\",\n commonAttributes: [\n {\n name: \"testname\",\n value: \"testvalue\",\n },\n {\n name: \"testname2\",\n value: \"testvalue2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"http_endpoint\",\n http_endpoint_configuration={\n \"url\": \"https://aws-api.newrelic.com/firehose/v1\",\n \"name\": \"New Relic\",\n \"access_key\": \"my-key\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"role_arn\": firehose[\"arn\"],\n \"s3_backup_mode\": \"FailedDataOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"request_configuration\": {\n \"content_encoding\": \"GZIP\",\n \"common_attributes\": [\n {\n \"name\": \"testname\",\n \"value\": \"testvalue\",\n },\n {\n \"name\": \"testname2\",\n \"value\": \"testvalue2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"http_endpoint\",\n HttpEndpointConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs\n {\n Url = \"https://aws-api.newrelic.com/firehose/v1\",\n Name = \"New Relic\",\n AccessKey = \"my-key\",\n BufferingSize = 15,\n BufferingInterval = 600,\n RoleArn = firehose.Arn,\n S3BackupMode = \"FailedDataOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n RequestConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs\n {\n ContentEncoding = \"GZIP\",\n CommonAttributes = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname\",\n Value = \"testvalue\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname2\",\n Value = \"testvalue2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"http_endpoint\"),\n\t\t\tHttpEndpointConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationArgs{\n\t\t\t\tUrl: pulumi.String(\"https://aws-api.newrelic.com/firehose/v1\"),\n\t\t\t\tName: pulumi.String(\"New Relic\"),\n\t\t\t\tAccessKey: pulumi.String(\"my-key\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedDataOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tRequestConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs{\n\t\t\t\t\tContentEncoding: pulumi.String(\"GZIP\"),\n\t\t\t\t\tCommonAttributes: kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname2\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"http_endpoint\")\n .httpEndpointConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationArgs.builder()\n .url(\"https://aws-api.newrelic.com/firehose/v1\")\n .name(\"New Relic\")\n .accessKey(\"my-key\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .roleArn(firehose.arn())\n .s3BackupMode(\"FailedDataOnly\")\n .s3Configuration(FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .requestConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs.builder()\n .contentEncoding(\"GZIP\")\n .commonAttributes( \n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname\")\n .value(\"testvalue\")\n .build(),\n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname2\")\n .value(\"testvalue2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: http_endpoint\n httpEndpointConfiguration:\n url: https://aws-api.newrelic.com/firehose/v1\n name: New Relic\n accessKey: my-key\n bufferingSize: 15\n bufferingInterval: 600\n roleArn: ${firehose.arn}\n s3BackupMode: FailedDataOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n requestConfiguration:\n contentEncoding: GZIP\n commonAttributes:\n - name: testname\n value: testvalue\n - name: testname2\n value: testvalue2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snowflake Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleSnowflakeDestination = new aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", {\n name: \"example-snowflake-destination\",\n destination: \"snowflake\",\n snowflakeConfiguration: {\n accountUrl: \"https://example.snowflakecomputing.com\",\n bufferingSize: 15,\n bufferingInterval: 600,\n database: \"example-db\",\n privateKey: \"...\",\n roleArn: firehose.arn,\n schema: \"example-schema\",\n table: \"example-table\",\n user: \"example-usr\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_snowflake_destination = aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\",\n name=\"example-snowflake-destination\",\n destination=\"snowflake\",\n snowflake_configuration={\n \"account_url\": \"https://example.snowflakecomputing.com\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"database\": \"example-db\",\n \"private_key\": \"...\",\n \"role_arn\": firehose[\"arn\"],\n \"schema\": \"example-schema\",\n \"table\": \"example-table\",\n \"user\": \"example-usr\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleSnowflakeDestination = new Aws.Kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", new()\n {\n Name = \"example-snowflake-destination\",\n Destination = \"snowflake\",\n SnowflakeConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs\n {\n AccountUrl = \"https://example.snowflakecomputing.com\",\n BufferingSize = 15,\n BufferingInterval = 600,\n Database = \"example-db\",\n PrivateKey = \"...\",\n RoleArn = firehose.Arn,\n Schema = \"example-schema\",\n Table = \"example-table\",\n User = \"example-usr\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"example_snowflake_destination\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"example-snowflake-destination\"),\n\t\t\tDestination: pulumi.String(\"snowflake\"),\n\t\t\tSnowflakeConfiguration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationArgs{\n\t\t\t\tAccountUrl: pulumi.String(\"https://example.snowflakecomputing.com\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tDatabase: pulumi.String(\"example-db\"),\n\t\t\t\tPrivateKey: pulumi.String(\"...\"),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tSchema: pulumi.String(\"example-schema\"),\n\t\t\t\tTable: pulumi.String(\"example-table\"),\n\t\t\t\tUser: pulumi.String(\"example-usr\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleSnowflakeDestination = new FirehoseDeliveryStream(\"exampleSnowflakeDestination\", FirehoseDeliveryStreamArgs.builder()\n .name(\"example-snowflake-destination\")\n .destination(\"snowflake\")\n .snowflakeConfiguration(FirehoseDeliveryStreamSnowflakeConfigurationArgs.builder()\n .accountUrl(\"https://example.snowflakecomputing.com\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .database(\"example-db\")\n .privateKey(\"...\")\n .roleArn(firehose.arn())\n .schema(\"example-schema\")\n .table(\"example-table\")\n .user(\"example-usr\")\n .s3Configuration(FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleSnowflakeDestination:\n type: aws:kinesis:FirehoseDeliveryStream\n name: example_snowflake_destination\n properties:\n name: example-snowflake-destination\n destination: snowflake\n snowflakeConfiguration:\n accountUrl: https://example.snowflakecomputing.com\n bufferingSize: 15\n bufferingInterval: 600\n database: example-db\n privateKey: '...'\n roleArn: ${firehose.arn}\n schema: example-schema\n table: example-table\n user: example-usr\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Kinesis Firehose Delivery streams using the stream ARN. For example:\n\n```sh\n$ pulumi import aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream foo arn:aws:firehose:us-east-1:XXX:deliverystream/example\n```\nNote: Import does not work for stream destination `s3`. Consider using `extended_s3` since `s3` destination is deprecated.\n\n",
"properties": {
"arn": {
"type": "string",
@@ -285260,6 +286520,10 @@
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamHttpEndpointConfiguration:FirehoseDeliveryStreamHttpEndpointConfiguration",
"description": "Configuration options when `destination` is `http_endpoint`. Requires the user to also specify an `s3_configuration` block. See `http_endpoint_configuration` block below for details.\n"
},
+ "icebergConfiguration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfiguration:FirehoseDeliveryStreamIcebergConfiguration",
+ "description": "Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.\n"
+ },
"kinesisSourceConfiguration": {
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamKinesisSourceConfiguration:FirehoseDeliveryStreamKinesisSourceConfiguration",
"description": "The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.\n"
@@ -285348,6 +286612,10 @@
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamHttpEndpointConfiguration:FirehoseDeliveryStreamHttpEndpointConfiguration",
"description": "Configuration options when `destination` is `http_endpoint`. Requires the user to also specify an `s3_configuration` block. See `http_endpoint_configuration` block below for details.\n"
},
+ "icebergConfiguration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfiguration:FirehoseDeliveryStreamIcebergConfiguration",
+ "description": "Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.\n"
+ },
"kinesisSourceConfiguration": {
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamKinesisSourceConfiguration:FirehoseDeliveryStreamKinesisSourceConfiguration",
"description": "The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.\n",
@@ -285428,6 +286696,10 @@
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamHttpEndpointConfiguration:FirehoseDeliveryStreamHttpEndpointConfiguration",
"description": "Configuration options when `destination` is `http_endpoint`. Requires the user to also specify an `s3_configuration` block. See `http_endpoint_configuration` block below for details.\n"
},
+ "icebergConfiguration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfiguration:FirehoseDeliveryStreamIcebergConfiguration",
+ "description": "Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.\n"
+ },
"kinesisSourceConfiguration": {
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamKinesisSourceConfiguration:FirehoseDeliveryStreamKinesisSourceConfiguration",
"description": "The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.\n",
@@ -287536,7 +288808,7 @@
}
},
"aws:lakeformation/dataLakeSettings:DataLakeSettings": {
- "description": "Manages Lake Formation principals designated as data lake administrators and lists of principal permission entries for default create database and default create table permissions.\n\n\u003e **NOTE:** Lake Formation introduces fine-grained access control for data in your data lake. Part of the changes include the `IAMAllowedPrincipals` principal in order to make Lake Formation backwards compatible with existing IAM and Glue permissions. For more information, see [Changing the Default Security Settings for Your Data Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) and [Upgrading AWS Glue Data Permissions to the AWS Lake Formation Model](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html).\n\n## Example Usage\n\n### Data Lake Admins\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {admins: [\n test.arn,\n testAwsIamRole.arn,\n]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\", admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create Default Permissions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {\n admins: [\n test.arn,\n testAwsIamRole.arn,\n ],\n createDatabaseDefaultPermissions: [{\n permissions: [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n principal: test.arn,\n }],\n createTableDefaultPermissions: [{\n permissions: [\"ALL\"],\n principal: testAwsIamRole.arn,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\",\n admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n ],\n create_database_default_permissions=[{\n \"permissions\": [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n \"principal\": test[\"arn\"],\n }],\n create_table_default_permissions=[{\n \"permissions\": [\"ALL\"],\n \"principal\": test_aws_iam_role[\"arn\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n CreateDatabaseDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n },\n Principal = test.Arn,\n },\n },\n CreateTableDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"ALL\",\n },\n Principal = testAwsIamRole.Arn,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t\tCreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\t\t\tpulumi.String(\"ALTER\"),\n\t\t\t\t\t\tpulumi.String(\"DROP\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(test.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(testAwsIamRole.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()\n .permissions( \n \"SELECT\",\n \"ALTER\",\n \"DROP\")\n .principal(test.arn())\n .build())\n .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()\n .permissions(\"ALL\")\n .principal(testAwsIamRole.arn())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n createDatabaseDefaultPermissions:\n - permissions:\n - SELECT\n - ALTER\n - DROP\n principal: ${test.arn}\n createTableDefaultPermissions:\n - permissions:\n - ALL\n principal: ${testAwsIamRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable EMR access to LakeFormation resources\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {\n admins: [\n test.arn,\n testAwsIamRole.arn,\n ],\n createDatabaseDefaultPermissions: [{\n permissions: [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n principal: test.arn,\n }],\n createTableDefaultPermissions: [{\n permissions: [\"ALL\"],\n principal: testAwsIamRole.arn,\n }],\n allowExternalDataFiltering: true,\n externalDataFilteringAllowLists: [\n current.accountId,\n thirdParty.accountId,\n ],\n authorizedSessionTagValueLists: [\"Amazon EMR\"],\n allowFullTableExternalDataAccess: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\",\n admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n ],\n create_database_default_permissions=[{\n \"permissions\": [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n \"principal\": test[\"arn\"],\n }],\n create_table_default_permissions=[{\n \"permissions\": [\"ALL\"],\n \"principal\": test_aws_iam_role[\"arn\"],\n }],\n allow_external_data_filtering=True,\n external_data_filtering_allow_lists=[\n current[\"accountId\"],\n third_party[\"accountId\"],\n ],\n authorized_session_tag_value_lists=[\"Amazon EMR\"],\n allow_full_table_external_data_access=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n CreateDatabaseDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n },\n Principal = test.Arn,\n },\n },\n CreateTableDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"ALL\",\n },\n Principal = testAwsIamRole.Arn,\n },\n },\n AllowExternalDataFiltering = true,\n ExternalDataFilteringAllowLists = new[]\n {\n current.AccountId,\n thirdParty.AccountId,\n },\n AuthorizedSessionTagValueLists = new[]\n {\n \"Amazon EMR\",\n },\n AllowFullTableExternalDataAccess = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t\tCreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\t\t\tpulumi.String(\"ALTER\"),\n\t\t\t\t\t\tpulumi.String(\"DROP\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(test.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(testAwsIamRole.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllowExternalDataFiltering: pulumi.Bool(true),\n\t\t\tExternalDataFilteringAllowLists: pulumi.StringArray{\n\t\t\t\tcurrent.AccountId,\n\t\t\t\tthirdParty.AccountId,\n\t\t\t},\n\t\t\tAuthorizedSessionTagValueLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Amazon EMR\"),\n\t\t\t},\n\t\t\tAllowFullTableExternalDataAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()\n .permissions( \n \"SELECT\",\n \"ALTER\",\n \"DROP\")\n .principal(test.arn())\n .build())\n .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()\n .permissions(\"ALL\")\n .principal(testAwsIamRole.arn())\n .build())\n .allowExternalDataFiltering(true)\n .externalDataFilteringAllowLists( \n current.accountId(),\n thirdParty.accountId())\n .authorizedSessionTagValueLists(\"Amazon EMR\")\n .allowFullTableExternalDataAccess(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n createDatabaseDefaultPermissions:\n - permissions:\n - SELECT\n - ALTER\n - DROP\n principal: ${test.arn}\n createTableDefaultPermissions:\n - permissions:\n - ALL\n principal: ${testAwsIamRole.arn}\n allowExternalDataFiltering: true\n externalDataFilteringAllowLists:\n - ${current.accountId}\n - ${thirdParty.accountId}\n authorizedSessionTagValueLists:\n - Amazon EMR\n allowFullTableExternalDataAccess: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "description": "Manages Lake Formation principals designated as data lake administrators and lists of principal permission entries for default create database and default create table permissions.\n\n\u003e **NOTE:** Lake Formation introduces fine-grained access control for data in your data lake. Part of the changes include the `IAMAllowedPrincipals` principal in order to make Lake Formation backwards compatible with existing IAM and Glue permissions. For more information, see [Changing the Default Security Settings for Your Data Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) and [Upgrading AWS Glue Data Permissions to the AWS Lake Formation Model](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html).\n\n## Example Usage\n\n### Data Lake Admins\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {admins: [\n test.arn,\n testAwsIamRole.arn,\n]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\", admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create Default Permissions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {\n admins: [\n test.arn,\n testAwsIamRole.arn,\n ],\n createDatabaseDefaultPermissions: [{\n permissions: [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n principal: test.arn,\n }],\n createTableDefaultPermissions: [{\n permissions: [\"ALL\"],\n principal: testAwsIamRole.arn,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\",\n admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n ],\n create_database_default_permissions=[{\n \"permissions\": [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n \"principal\": test[\"arn\"],\n }],\n create_table_default_permissions=[{\n \"permissions\": [\"ALL\"],\n \"principal\": test_aws_iam_role[\"arn\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n CreateDatabaseDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n },\n Principal = test.Arn,\n },\n },\n CreateTableDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"ALL\",\n },\n Principal = testAwsIamRole.Arn,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t\tCreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\t\t\tpulumi.String(\"ALTER\"),\n\t\t\t\t\t\tpulumi.String(\"DROP\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(test.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(testAwsIamRole.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()\n .permissions( \n \"SELECT\",\n \"ALTER\",\n \"DROP\")\n .principal(test.arn())\n .build())\n .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()\n .permissions(\"ALL\")\n .principal(testAwsIamRole.arn())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n createDatabaseDefaultPermissions:\n - permissions:\n - SELECT\n - ALTER\n - DROP\n principal: ${test.arn}\n createTableDefaultPermissions:\n - permissions:\n - ALL\n principal: ${testAwsIamRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable EMR access to LakeFormation resources\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {\n admins: [\n test.arn,\n testAwsIamRole.arn,\n ],\n createDatabaseDefaultPermissions: [{\n permissions: [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n principal: test.arn,\n }],\n createTableDefaultPermissions: [{\n permissions: [\"ALL\"],\n principal: testAwsIamRole.arn,\n }],\n allowExternalDataFiltering: true,\n externalDataFilteringAllowLists: [\n current.accountId,\n thirdParty.accountId,\n ],\n authorizedSessionTagValueLists: [\"Amazon EMR\"],\n allowFullTableExternalDataAccess: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\",\n admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n ],\n create_database_default_permissions=[{\n \"permissions\": [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n \"principal\": test[\"arn\"],\n }],\n create_table_default_permissions=[{\n \"permissions\": [\"ALL\"],\n \"principal\": test_aws_iam_role[\"arn\"],\n }],\n allow_external_data_filtering=True,\n external_data_filtering_allow_lists=[\n current[\"accountId\"],\n third_party[\"accountId\"],\n ],\n authorized_session_tag_value_lists=[\"Amazon EMR\"],\n allow_full_table_external_data_access=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n CreateDatabaseDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n },\n Principal = test.Arn,\n },\n },\n CreateTableDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"ALL\",\n },\n Principal = testAwsIamRole.Arn,\n },\n },\n AllowExternalDataFiltering = true,\n ExternalDataFilteringAllowLists = new[]\n {\n current.AccountId,\n thirdParty.AccountId,\n },\n AuthorizedSessionTagValueLists = new[]\n {\n \"Amazon EMR\",\n },\n AllowFullTableExternalDataAccess = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t\tCreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\t\t\tpulumi.String(\"ALTER\"),\n\t\t\t\t\t\tpulumi.String(\"DROP\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(test.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(testAwsIamRole.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllowExternalDataFiltering: pulumi.Bool(true),\n\t\t\tExternalDataFilteringAllowLists: pulumi.StringArray{\n\t\t\t\tcurrent.AccountId,\n\t\t\t\tthirdParty.AccountId,\n\t\t\t},\n\t\t\tAuthorizedSessionTagValueLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Amazon EMR\"),\n\t\t\t},\n\t\t\tAllowFullTableExternalDataAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()\n .permissions( \n \"SELECT\",\n \"ALTER\",\n \"DROP\")\n .principal(test.arn())\n .build())\n .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()\n .permissions(\"ALL\")\n .principal(testAwsIamRole.arn())\n .build())\n .allowExternalDataFiltering(true)\n .externalDataFilteringAllowLists( \n current.accountId(),\n thirdParty.accountId())\n .authorizedSessionTagValueLists(\"Amazon EMR\")\n .allowFullTableExternalDataAccess(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n createDatabaseDefaultPermissions:\n - permissions:\n - SELECT\n - ALTER\n - DROP\n principal: ${test.arn}\n createTableDefaultPermissions:\n - permissions:\n - ALL\n principal: ${testAwsIamRole.arn}\n allowExternalDataFiltering: true\n externalDataFilteringAllowLists:\n - ${current.accountId}\n - ${thirdParty.accountId}\n authorizedSessionTagValueLists:\n - Amazon EMR\n allowFullTableExternalDataAccess: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Change Cross Account Version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {parameters: {\n CROSS_ACCOUNT_VERSION: \"3\",\n}});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\", parameters={\n \"CROSS_ACCOUNT_VERSION\": \"3\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Parameters = \n {\n { \"CROSS_ACCOUNT_VERSION\", \"3\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"CROSS_ACCOUNT_VERSION\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .parameters(Map.of(\"CROSS_ACCOUNT_VERSION\", \"3\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n parameters:\n CROSS_ACCOUNT_VERSION: '3'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"properties": {
"admins": {
"type": "array",
@@ -287551,7 +288823,7 @@
},
"allowFullTableExternalDataAccess": {
"type": "boolean",
- "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
+ "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n"
},
"authorizedSessionTagValueLists": {
"type": "array",
@@ -287585,6 +288857,13 @@
},
"description": "A list of the account IDs of Amazon Web Services accounts with Amazon EMR clusters that are to perform data filtering.\n"
},
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `\"1\"`, `\"2\"`, `\"3\"`, or `\"4\"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `\"1\"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `\"1\"`.\n"
+ },
"readOnlyAdmins": {
"type": "array",
"items": {
@@ -287597,7 +288876,7 @@
"items": {
"type": "string"
},
- "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n"
+ "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
}
},
"required": [
@@ -287606,6 +288885,7 @@
"createDatabaseDefaultPermissions",
"createTableDefaultPermissions",
"externalDataFilteringAllowLists",
+ "parameters",
"readOnlyAdmins",
"trustedResourceOwners"
],
@@ -287623,7 +288903,7 @@
},
"allowFullTableExternalDataAccess": {
"type": "boolean",
- "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
+ "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n"
},
"authorizedSessionTagValueLists": {
"type": "array",
@@ -287658,6 +288938,13 @@
},
"description": "A list of the account IDs of Amazon Web Services accounts with Amazon EMR clusters that are to perform data filtering.\n"
},
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `\"1\"`, `\"2\"`, `\"3\"`, or `\"4\"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `\"1\"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `\"1\"`.\n"
+ },
"readOnlyAdmins": {
"type": "array",
"items": {
@@ -287670,7 +288957,7 @@
"items": {
"type": "string"
},
- "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n"
+ "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
}
},
"stateInputs": {
@@ -287689,7 +288976,7 @@
},
"allowFullTableExternalDataAccess": {
"type": "boolean",
- "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
+ "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n"
},
"authorizedSessionTagValueLists": {
"type": "array",
@@ -287724,6 +289011,13 @@
},
"description": "A list of the account IDs of Amazon Web Services accounts with Amazon EMR clusters that are to perform data filtering.\n"
},
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `\"1\"`, `\"2\"`, `\"3\"`, or `\"4\"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `\"1\"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `\"1\"`.\n"
+ },
"readOnlyAdmins": {
"type": "array",
"items": {
@@ -287736,7 +289030,7 @@
"items": {
"type": "string"
},
- "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n"
+ "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
}
},
"type": "object"
@@ -291123,6 +292417,10 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"required": [
@@ -291177,6 +292475,10 @@
"type": "string"
},
"description": "A 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.\n"
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"requiredInputs": [
@@ -291240,6 +292542,10 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"type": "object"
@@ -291515,155 +292821,163 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
- "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
- "type": "string",
- "description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
- },
- "idleTimeout": {
- "type": "integer",
- "description": "Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60.\n"
- },
- "internal": {
- "type": "boolean",
- "description": "If true, the LB will be internal. Defaults to `false`.\n"
- },
- "ipAddressType": {
- "type": "string",
- "description": "Type of IP addresses used by the subnets for your load balancer. The possible values depend upon the load balancer type: `ipv4` (all load balancer types), `dualstack` (all load balancer types), and `dualstack-without-public-ipv4` (type `application` only).\n"
- },
- "loadBalancerType": {
- "type": "string",
- "description": "Type of load balancer to create. Possible values are `application`, `gateway`, or `network`. The default value is `application`.\n"
- },
- "name": {
- "type": "string",
- "description": "Name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified, this provider will autogenerate a name beginning with `tf-lb`.\n"
- },
- "namePrefix": {
- "type": "string",
- "description": "Creates a unique name beginning with the specified prefix. Conflicts with `name`.\n"
- },
- "preserveHostHeader": {
- "type": "boolean",
- "description": "Whether the Application Load Balancer should preserve the Host header in the HTTP request and send it to the target without any change. Defaults to `false`.\n"
- },
- "securityGroups": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` security groups cannot be added if none are currently present, and cannot all be removed once added. If either of these conditions are met, this will force a recreation of the resource.\n"
- },
- "subnetMappings": {
- "type": "array",
- "items": {
- "$ref": "#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping"
- },
- "description": "Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added.\n"
- },
- "subnets": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of subnet IDs to attach to the LB. For Load Balancers of type `network` subnets can only be added (see [Availability Zones](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#availability-zones)), deleting a subnet for load balancers of type `network` will force a recreation of the resource.\n"
- },
- "tags": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- },
- "description": "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.\n"
- },
- "tagsAll": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- },
- "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
- "deprecationMessage": "Please use `tags` instead."
- },
- "vpcId": {
- "type": "string"
- },
- "xffHeaderProcessingMode": {
- "type": "string",
- "description": "Determines how the load balancer modifies the `X-Forwarded-For` header in the HTTP request before sending the request to the target. The possible values are `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`.\n"
- },
- "zoneId": {
- "type": "string",
- "description": "Canonical hosted zone ID of the load balancer (to be used in a Route 53 Alias record).\n"
- }
- },
- "required": [
- "arn",
- "arnSuffix",
- "dnsName",
- "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
- "internal",
- "ipAddressType",
- "name",
- "namePrefix",
- "securityGroups",
- "subnetMappings",
- "subnets",
- "tagsAll",
- "vpcId",
- "zoneId"
- ],
- "inputProperties": {
- "accessLogs": {
- "$ref": "#/types/aws:lb/LoadBalancerAccessLogs:LoadBalancerAccessLogs",
- "description": "Access Logs block. See below.\n"
- },
- "clientKeepAlive": {
- "type": "integer",
- "description": "Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n"
- },
- "connectionLogs": {
- "$ref": "#/types/aws:lb/LoadBalancerConnectionLogs:LoadBalancerConnectionLogs",
- "description": "Connection Logs block. See below. Only valid for Load Balancers of type `application`.\n"
- },
- "customerOwnedIpv4Pool": {
- "type": "string",
- "description": "ID of the customer owned ipv4 pool to use for this load balancer.\n",
- "willReplaceOnChanges": true
- },
- "desyncMitigationMode": {
- "type": "string",
- "description": "How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`.\n"
- },
- "dnsRecordClientRoutingPolicy": {
- "type": "string",
- "description": "How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. See [Availability Zone DNS affinity](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#zonal-dns-affinity) for additional details. Only valid for `network` type load balancers.\n"
- },
- "dropInvalidHeaderFields": {
- "type": "boolean",
- "description": "Whether HTTP headers with header fields that are not valid are removed by the load balancer (true) or routed to targets (false). The default is false. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens. Only valid for Load Balancers of type `application`.\n"
- },
- "enableCrossZoneLoadBalancing": {
- "type": "boolean",
- "description": "If true, cross-zone load balancing of the load balancer will be enabled. For `network` and `gateway` type load balancers, this feature is disabled by default (`false`). For `application` load balancer this feature is always enabled (`true`) and cannot be disabled. Defaults to `false`.\n"
- },
- "enableDeletionProtection": {
- "type": "boolean",
- "description": "If true, deletion of the load balancer will be disabled via the AWS API. This will prevent this provider from deleting the load balancer. Defaults to `false`.\n"
- },
- "enableHttp2": {
- "type": "boolean",
- "description": "Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`.\n"
- },
- "enableTlsVersionAndCipherSuiteHeaders": {
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
+ "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
+ "type": "string",
+ "description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
+ },
+ "idleTimeout": {
+ "type": "integer",
+ "description": "Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60.\n"
+ },
+ "internal": {
+ "type": "boolean",
+ "description": "If true, the LB will be internal. Defaults to `false`.\n"
+ },
+ "ipAddressType": {
+ "type": "string",
+ "description": "Type of IP addresses used by the subnets for your load balancer. The possible values depend upon the load balancer type: `ipv4` (all load balancer types), `dualstack` (all load balancer types), and `dualstack-without-public-ipv4` (type `application` only).\n"
+ },
+ "loadBalancerType": {
+ "type": "string",
+ "description": "Type of load balancer to create. Possible values are `application`, `gateway`, or `network`. The default value is `application`.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified, this provider will autogenerate a name beginning with `tf-lb`.\n"
+ },
+ "namePrefix": {
+ "type": "string",
+ "description": "Creates a unique name beginning with the specified prefix. Conflicts with `name`.\n"
+ },
+ "preserveHostHeader": {
+ "type": "boolean",
+ "description": "Whether the Application Load Balancer should preserve the Host header in the HTTP request and send it to the target without any change. Defaults to `false`.\n"
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` security groups cannot be added if none are currently present, and cannot all be removed once added. If either of these conditions are met, this will force a recreation of the resource.\n"
+ },
+ "subnetMappings": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping"
+ },
+ "description": "Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added.\n"
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of subnet IDs to attach to the LB. For Load Balancers of type `network` subnets can only be added (see [Availability Zones](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#availability-zones)), deleting a subnet for load balancers of type `network` will force a recreation of the resource.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "vpcId": {
+ "type": "string"
+ },
+ "xffHeaderProcessingMode": {
+ "type": "string",
+ "description": "Determines how the load balancer modifies the `X-Forwarded-For` header in the HTTP request before sending the request to the target. The possible values are `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`.\n"
+ },
+ "zoneId": {
+ "type": "string",
+ "description": "Canonical hosted zone ID of the load balancer (to be used in a Route 53 Alias record).\n"
+ }
+ },
+ "required": [
+ "arn",
+ "arnSuffix",
+ "dnsName",
+ "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
+ "internal",
+ "ipAddressType",
+ "name",
+ "namePrefix",
+ "securityGroups",
+ "subnetMappings",
+ "subnets",
+ "tagsAll",
+ "vpcId",
+ "zoneId"
+ ],
+ "inputProperties": {
+ "accessLogs": {
+ "$ref": "#/types/aws:lb/LoadBalancerAccessLogs:LoadBalancerAccessLogs",
+ "description": "Access Logs block. See below.\n"
+ },
+ "clientKeepAlive": {
+ "type": "integer",
+ "description": "Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n"
+ },
+ "connectionLogs": {
+ "$ref": "#/types/aws:lb/LoadBalancerConnectionLogs:LoadBalancerConnectionLogs",
+ "description": "Connection Logs block. See below. Only valid for Load Balancers of type `application`.\n"
+ },
+ "customerOwnedIpv4Pool": {
+ "type": "string",
+ "description": "ID of the customer owned ipv4 pool to use for this load balancer.\n",
+ "willReplaceOnChanges": true
+ },
+ "desyncMitigationMode": {
+ "type": "string",
+ "description": "How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`.\n"
+ },
+ "dnsRecordClientRoutingPolicy": {
+ "type": "string",
+ "description": "How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. See [Availability Zone DNS affinity](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#zonal-dns-affinity) for additional details. Only valid for `network` type load balancers.\n"
+ },
+ "dropInvalidHeaderFields": {
+ "type": "boolean",
+ "description": "Whether HTTP headers with header fields that are not valid are removed by the load balancer (true) or routed to targets (false). The default is false. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens. Only valid for Load Balancers of type `application`.\n"
+ },
+ "enableCrossZoneLoadBalancing": {
+ "type": "boolean",
+ "description": "If true, cross-zone load balancing of the load balancer will be enabled. For `network` and `gateway` type load balancers, this feature is disabled by default (`false`). For `application` load balancer this feature is always enabled (`true`) and cannot be disabled. Defaults to `false`.\n"
+ },
+ "enableDeletionProtection": {
+ "type": "boolean",
+ "description": "If true, deletion of the load balancer will be disabled via the AWS API. This will prevent this provider from deleting the load balancer. Defaults to `false`.\n"
+ },
+ "enableHttp2": {
+ "type": "boolean",
+ "description": "Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`.\n"
+ },
+ "enableTlsVersionAndCipherSuiteHeaders": {
+ "type": "boolean",
+ "description": "Whether the two headers (`x-amzn-tls-version` and `x-amzn-tls-cipher-suite`), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. Only valid for Load Balancers of type `application`. Defaults to `false`\n"
+ },
+ "enableWafFailOpen": {
+ "type": "boolean",
+ "description": "Whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. Defaults to `false`.\n"
+ },
+ "enableXffClientPort": {
+ "type": "boolean",
+ "description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
+ },
+ "enableZonalShift": {
"type": "boolean",
- "description": "Whether the two headers (`x-amzn-tls-version` and `x-amzn-tls-cipher-suite`), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. Only valid for Load Balancers of type `application`. Defaults to `false`\n"
- },
- "enableWafFailOpen": {
- "type": "boolean",
- "description": "Whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. Defaults to `false`.\n"
- },
- "enableXffClientPort": {
- "type": "boolean",
- "description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
},
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
@@ -291802,6 +293116,10 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
"description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
@@ -335318,6 +336636,152 @@
"type": "object"
}
},
+ "aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy": {
+ "description": "Resource for managing an AWS Resilience Hub Resiliency Policy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:resiliencehub:ResiliencyPolicy\n properties:\n policyName: testexample\n policyDescription: testexample\n tier: NonCritical\n dataLocationConstraint: AnyLocation\n policy:\n - region:\n - rpo: 24h\n rto: 24h\n az:\n - rpo: 24h\n rto: 24h\n hardware:\n - rpo: 24h\n rto: 24h\n software:\n - rpo: 24h\n rto: 24h\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Resilience Hub Resiliency Policy using the `arn`. For example:\n\n```sh\n$ pulumi import aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy example arn:aws:resiliencehub:us-east-1:123456789012:resiliency-policy/8c1cfa29-d1dd-4421-aa68-c9f64cced4c2\n```\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "ARN of the Resiliency Policy.\n"
+ },
+ "dataLocationConstraint": {
+ "type": "string",
+ "description": "Data Location Constraint of the Policy.\nValid values are `AnyLocation`, `SameContinent`, and `SameCountry`.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description of Resiliency Policy.\n"
+ },
+ "estimatedCostTier": {
+ "type": "string",
+ "description": "Estimated Cost Tier of the Resiliency Policy.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of Resiliency Policy.\nMust be between 2 and 60 characters long.\nMust start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.\n"
+ },
+ "policy": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicy:ResiliencyPolicyPolicy",
+ "description": "The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.\n\nThe following arguments are optional:\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "tier": {
+ "type": "string",
+ "description": "Resiliency Policy Tier.\nValid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.\n"
+ },
+ "timeouts": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyTimeouts:ResiliencyPolicyTimeouts"
+ }
+ },
+ "required": [
+ "arn",
+ "dataLocationConstraint",
+ "estimatedCostTier",
+ "name",
+ "tagsAll",
+ "tier"
+ ],
+ "inputProperties": {
+ "dataLocationConstraint": {
+ "type": "string",
+ "description": "Data Location Constraint of the Policy.\nValid values are `AnyLocation`, `SameContinent`, and `SameCountry`.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description of Resiliency Policy.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of Resiliency Policy.\nMust be between 2 and 60 characters long.\nMust start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.\n"
+ },
+ "policy": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicy:ResiliencyPolicyPolicy",
+ "description": "The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.\n\nThe following arguments are optional:\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tier": {
+ "type": "string",
+ "description": "Resiliency Policy Tier.\nValid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.\n"
+ },
+ "timeouts": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyTimeouts:ResiliencyPolicyTimeouts"
+ }
+ },
+ "requiredInputs": [
+ "tier"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering ResiliencyPolicy resources.\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "ARN of the Resiliency Policy.\n"
+ },
+ "dataLocationConstraint": {
+ "type": "string",
+ "description": "Data Location Constraint of the Policy.\nValid values are `AnyLocation`, `SameContinent`, and `SameCountry`.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description of Resiliency Policy.\n"
+ },
+ "estimatedCostTier": {
+ "type": "string",
+ "description": "Estimated Cost Tier of the Resiliency Policy.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of Resiliency Policy.\nMust be between 2 and 60 characters long.\nMust start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.\n"
+ },
+ "policy": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicy:ResiliencyPolicyPolicy",
+ "description": "The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.\n\nThe following arguments are optional:\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "tier": {
+ "type": "string",
+ "description": "Resiliency Policy Tier.\nValid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.\n"
+ },
+ "timeouts": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyTimeouts:ResiliencyPolicyTimeouts"
+ }
+ },
+ "type": "object"
+ }
+ },
"aws:resourceexplorer/index:Index": {
"description": "Provides a resource to manage a Resource Explorer index in the current AWS Region.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.resourceexplorer.Index(\"example\", {type: \"LOCAL\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.resourceexplorer.Index(\"example\", type=\"LOCAL\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ResourceExplorer.Index(\"example\", new()\n {\n Type = \"LOCAL\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/resourceexplorer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := resourceexplorer.NewIndex(ctx, \"example\", \u0026resourceexplorer.IndexArgs{\n\t\t\tType: pulumi.String(\"LOCAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.resourceexplorer.Index;\nimport com.pulumi.aws.resourceexplorer.IndexArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Index(\"example\", IndexArgs.builder()\n .type(\"LOCAL\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:resourceexplorer:Index\n properties:\n type: LOCAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Resource Explorer indexes using the `arn`. For example:\n\n```sh\n$ pulumi import aws:resourceexplorer/index:Index example arn:aws:resource-explorer-2:us-east-1:123456789012:index/6047ac4e-207e-4487-9bcf-cb53bb0ff5cc\n```\n",
"properties": {
@@ -336729,7 +338193,7 @@
},
"name": {
"type": "string",
- "description": "Name of the Profile Association.\n"
+ "description": "Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\\\-_' ']+)`.\n"
},
"ownerId": {
"type": "string"
@@ -336744,7 +338208,7 @@
},
"status": {
"type": "string",
- "description": "Status of the Profile Association. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)\n"
+ "description": "Status of the Profile Association. See the [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html) for valid values.\n"
},
"statusMessage": {
"type": "string",
@@ -336780,7 +338244,7 @@
"inputProperties": {
"name": {
"type": "string",
- "description": "Name of the Profile Association.\n"
+ "description": "Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\\\-_' ']+)`.\n"
},
"profileId": {
"type": "string",
@@ -336812,7 +338276,7 @@
},
"name": {
"type": "string",
- "description": "Name of the Profile Association.\n"
+ "description": "Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\\\-_' ']+)`.\n"
},
"ownerId": {
"type": "string"
@@ -336827,7 +338291,7 @@
},
"status": {
"type": "string",
- "description": "Status of the Profile Association. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)\n"
+ "description": "Status of the Profile Association. See the [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html) for valid values.\n"
},
"statusMessage": {
"type": "string",
@@ -346898,6 +348362,10 @@
},
"description": "The VPC subnets that Studio uses for communication.\n"
},
+ "tagPropagation": {
+ "type": "string",
+ "description": "Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.\n"
+ },
"tags": {
"type": "object",
"additionalProperties": {
@@ -346939,13 +348407,11 @@
"inputProperties": {
"appNetworkAccessType": {
"type": "string",
- "description": "Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.\n",
- "willReplaceOnChanges": true
+ "description": "Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.\n"
},
"appSecurityGroupManagement": {
"type": "string",
- "description": "The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.\n",
- "willReplaceOnChanges": true
+ "description": "The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.\n"
},
"authMode": {
"type": "string",
@@ -346987,6 +348453,10 @@
"description": "The VPC subnets that Studio uses for communication.\n",
"willReplaceOnChanges": true
},
+ "tagPropagation": {
+ "type": "string",
+ "description": "Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.\n"
+ },
"tags": {
"type": "object",
"additionalProperties": {
@@ -347012,13 +348482,11 @@
"properties": {
"appNetworkAccessType": {
"type": "string",
- "description": "Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.\n",
- "willReplaceOnChanges": true
+ "description": "Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.\n"
},
"appSecurityGroupManagement": {
"type": "string",
- "description": "The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.\n",
- "willReplaceOnChanges": true
+ "description": "The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.\n"
},
"arn": {
"type": "string",
@@ -347080,6 +348548,10 @@
"description": "The VPC subnets that Studio uses for communication.\n",
"willReplaceOnChanges": true
},
+ "tagPropagation": {
+ "type": "string",
+ "description": "Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.\n"
+ },
"tags": {
"type": "object",
"additionalProperties": {
@@ -347449,6 +348921,9 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "throughputConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupThroughputConfig:FeatureGroupThroughputConfig"
}
},
"required": [
@@ -347458,7 +348933,8 @@
"featureGroupName",
"recordIdentifierFeatureName",
"roleArn",
- "tagsAll"
+ "tagsAll",
+ "throughputConfig"
],
"inputProperties": {
"description": {
@@ -347510,6 +348986,9 @@
"type": "string"
},
"description": "Map of resource tags for the resource. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
+ },
+ "throughputConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupThroughputConfig:FeatureGroupThroughputConfig"
}
},
"requiredInputs": [
@@ -347583,6 +349062,9 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "throughputConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupThroughputConfig:FeatureGroupThroughputConfig"
}
},
"type": "object"
@@ -347744,6 +349226,147 @@
"type": "object"
}
},
+ "aws:sagemaker/hub:Hub": {
+ "description": "Provides a SageMaker Hub resource.\n\n## Example Usage\n\n### Basic usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.Hub(\"example\", {\n hubName: \"example\",\n hubDescription: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.Hub(\"example\",\n hub_name=\"example\",\n hub_description=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.Hub(\"example\", new()\n {\n HubName = \"example\",\n HubDescription = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewHub(ctx, \"example\", \u0026sagemaker.HubArgs{\n\t\t\tHubName: pulumi.String(\"example\"),\n\t\t\tHubDescription: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.Hub;\nimport com.pulumi.aws.sagemaker.HubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Hub(\"example\", HubArgs.builder()\n .hubName(\"example\")\n .hubDescription(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:Hub\n properties:\n hubName: example\n hubDescription: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker Hubs using the `name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/hub:Hub test_hub my-code-repo\n```\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) assigned by AWS to this Hub.\n"
+ },
+ "hubDescription": {
+ "type": "string",
+ "description": "A description of the hub.\n"
+ },
+ "hubDisplayName": {
+ "type": "string",
+ "description": "The display name of the hub.\n"
+ },
+ "hubName": {
+ "type": "string",
+ "description": "The name of the hub.\n"
+ },
+ "hubSearchKeywords": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The searchable keywords for the hub.\n"
+ },
+ "s3StorageConfig": {
+ "$ref": "#/types/aws:sagemaker/HubS3StorageConfig:HubS3StorageConfig",
+ "description": "The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ }
+ },
+ "required": [
+ "arn",
+ "hubDescription",
+ "hubName",
+ "tagsAll"
+ ],
+ "inputProperties": {
+ "hubDescription": {
+ "type": "string",
+ "description": "A description of the hub.\n"
+ },
+ "hubDisplayName": {
+ "type": "string",
+ "description": "The display name of the hub.\n"
+ },
+ "hubName": {
+ "type": "string",
+ "description": "The name of the hub.\n",
+ "willReplaceOnChanges": true
+ },
+ "hubSearchKeywords": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The searchable keywords for the hub.\n"
+ },
+ "s3StorageConfig": {
+ "$ref": "#/types/aws:sagemaker/HubS3StorageConfig:HubS3StorageConfig",
+ "description": "The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.\n",
+ "willReplaceOnChanges": true
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ }
+ },
+ "requiredInputs": [
+ "hubDescription",
+ "hubName"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering Hub resources.\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) assigned by AWS to this Hub.\n"
+ },
+ "hubDescription": {
+ "type": "string",
+ "description": "A description of the hub.\n"
+ },
+ "hubDisplayName": {
+ "type": "string",
+ "description": "The display name of the hub.\n"
+ },
+ "hubName": {
+ "type": "string",
+ "description": "The name of the hub.\n",
+ "willReplaceOnChanges": true
+ },
+ "hubSearchKeywords": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The searchable keywords for the hub.\n"
+ },
+ "s3StorageConfig": {
+ "$ref": "#/types/aws:sagemaker/HubS3StorageConfig:HubS3StorageConfig",
+ "description": "The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.\n",
+ "willReplaceOnChanges": true
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ }
+ },
+ "type": "object"
+ }
+ },
"aws:sagemaker/humanTaskUI:HumanTaskUI": {
"description": "Provides a SageMaker Human Task UI resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.sagemaker.HumanTaskUI(\"example\", {\n humanTaskUiName: \"example\",\n uiTemplate: {\n content: std.file({\n input: \"sagemaker-human-task-ui-template.html\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.sagemaker.HumanTaskUI(\"example\",\n human_task_ui_name=\"example\",\n ui_template={\n \"content\": std.file(input=\"sagemaker-human-task-ui-template.html\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.HumanTaskUI(\"example\", new()\n {\n HumanTaskUiName = \"example\",\n UiTemplate = new Aws.Sagemaker.Inputs.HumanTaskUIUiTemplateArgs\n {\n Content = Std.File.Invoke(new()\n {\n Input = \"sagemaker-human-task-ui-template.html\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"sagemaker-human-task-ui-template.html\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sagemaker.NewHumanTaskUI(ctx, \"example\", \u0026sagemaker.HumanTaskUIArgs{\n\t\t\tHumanTaskUiName: pulumi.String(\"example\"),\n\t\t\tUiTemplate: \u0026sagemaker.HumanTaskUIUiTemplateArgs{\n\t\t\t\tContent: pulumi.String(invokeFile.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.HumanTaskUI;\nimport com.pulumi.aws.sagemaker.HumanTaskUIArgs;\nimport com.pulumi.aws.sagemaker.inputs.HumanTaskUIUiTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HumanTaskUI(\"example\", HumanTaskUIArgs.builder()\n .humanTaskUiName(\"example\")\n .uiTemplate(HumanTaskUIUiTemplateArgs.builder()\n .content(StdFunctions.file(FileArgs.builder()\n .input(\"sagemaker-human-task-ui-template.html\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:HumanTaskUI\n properties:\n humanTaskUiName: example\n uiTemplate:\n content:\n fn::invoke:\n Function: std:file\n Arguments:\n input: sagemaker-human-task-ui-template.html\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker Human Task UIs using the `human_task_ui_name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/humanTaskUI:HumanTaskUI example example\n```\n",
"properties": {
@@ -348043,6 +349666,177 @@
"type": "object"
}
},
+ "aws:sagemaker/mlflowTrackingServer:MlflowTrackingServer": {
+ "description": "Provides a SageMaker MLFlow Tracking Server resource.\n\n## Example Usage\n\n### Cognito Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.MlflowTrackingServer(\"example\", {\n trackingServerName: \"example\",\n roleArn: exampleAwsIamRole.arn,\n artifactStoreUri: `s3://${exampleAwsS3Bucket.bucket}/path`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.MlflowTrackingServer(\"example\",\n tracking_server_name=\"example\",\n role_arn=example_aws_iam_role[\"arn\"],\n artifact_store_uri=f\"s3://{example_aws_s3_bucket['bucket']}/path\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.MlflowTrackingServer(\"example\", new()\n {\n TrackingServerName = \"example\",\n RoleArn = exampleAwsIamRole.Arn,\n ArtifactStoreUri = $\"s3://{exampleAwsS3Bucket.Bucket}/path\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewMlflowTrackingServer(ctx, \"example\", \u0026sagemaker.MlflowTrackingServerArgs{\n\t\t\tTrackingServerName: pulumi.String(\"example\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tArtifactStoreUri: pulumi.Sprintf(\"s3://%v/path\", exampleAwsS3Bucket.Bucket),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.MlflowTrackingServer;\nimport com.pulumi.aws.sagemaker.MlflowTrackingServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new MlflowTrackingServer(\"example\", MlflowTrackingServerArgs.builder()\n .trackingServerName(\"example\")\n .roleArn(exampleAwsIamRole.arn())\n .artifactStoreUri(String.format(\"s3://%s/path\", exampleAwsS3Bucket.bucket()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:MlflowTrackingServer\n properties:\n trackingServerName: example\n roleArn: ${exampleAwsIamRole.arn}\n artifactStoreUri: s3://${exampleAwsS3Bucket.bucket}/path\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker MLFlow Tracking Servers using the `workteam_name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/mlflowTrackingServer:MlflowTrackingServer example example\n```\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) assigned by AWS to this MLFlow Tracking Server.\n"
+ },
+ "artifactStoreUri": {
+ "type": "string",
+ "description": "The S3 URI for a general purpose bucket to use as the MLflow Tracking Server artifact store.\n"
+ },
+ "automaticModelRegistration": {
+ "type": "boolean",
+ "description": "A list of Member Definitions that contains objects that identify the workers that make up the work team.\n"
+ },
+ "mlflowVersion": {
+ "type": "string",
+ "description": "The version of MLflow that the tracking server uses. To see which MLflow versions are available to use, see [How it works](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html#mlflow-create-tracking-server-how-it-works).\n"
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for an IAM role in your account that the MLflow Tracking Server uses to access the artifact store in Amazon S3. The role should have AmazonS3FullAccess permissions. For more information on IAM permissions for tracking server creation, see [Set up IAM permissions for MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-iam.html).\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "trackingServerName": {
+ "type": "string",
+ "description": "A unique string identifying the tracking server name. This string is part of the tracking server ARN.\n"
+ },
+ "trackingServerSize": {
+ "type": "string",
+ "description": "The size of the tracking server you want to create. You can choose between \"Small\", \"Medium\", and \"Large\". The default MLflow Tracking Server configuration size is \"Small\". You can choose a size depending on the projected use of the tracking server such as the volume of data logged, number of users, and frequency of use.\n"
+ },
+ "trackingServerUrl": {
+ "type": "string",
+ "description": "The URL to connect to the MLflow user interface for the described tracking server.\n"
+ },
+ "weeklyMaintenanceWindowStart": {
+ "type": "string",
+ "description": "The day and time of the week in Coordinated Universal Time (UTC) 24-hour standard time that weekly maintenance updates are scheduled. For example: TUE:03:30.\n"
+ }
+ },
+ "required": [
+ "arn",
+ "artifactStoreUri",
+ "mlflowVersion",
+ "roleArn",
+ "tagsAll",
+ "trackingServerName",
+ "trackingServerUrl",
+ "weeklyMaintenanceWindowStart"
+ ],
+ "inputProperties": {
+ "artifactStoreUri": {
+ "type": "string",
+ "description": "The S3 URI for a general purpose bucket to use as the MLflow Tracking Server artifact store.\n"
+ },
+ "automaticModelRegistration": {
+ "type": "boolean",
+ "description": "A list of Member Definitions that contains objects that identify the workers that make up the work team.\n"
+ },
+ "mlflowVersion": {
+ "type": "string",
+ "description": "The version of MLflow that the tracking server uses. To see which MLflow versions are available to use, see [How it works](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html#mlflow-create-tracking-server-how-it-works).\n",
+ "willReplaceOnChanges": true
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for an IAM role in your account that the MLflow Tracking Server uses to access the artifact store in Amazon S3. The role should have AmazonS3FullAccess permissions. For more information on IAM permissions for tracking server creation, see [Set up IAM permissions for MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-iam.html).\n",
+ "willReplaceOnChanges": true
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "trackingServerName": {
+ "type": "string",
+ "description": "A unique string identifying the tracking server name. This string is part of the tracking server ARN.\n",
+ "willReplaceOnChanges": true
+ },
+ "trackingServerSize": {
+ "type": "string",
+ "description": "The size of the tracking server you want to create. You can choose between \"Small\", \"Medium\", and \"Large\". The default MLflow Tracking Server configuration size is \"Small\". You can choose a size depending on the projected use of the tracking server such as the volume of data logged, number of users, and frequency of use.\n"
+ },
+ "weeklyMaintenanceWindowStart": {
+ "type": "string",
+ "description": "The day and time of the week in Coordinated Universal Time (UTC) 24-hour standard time that weekly maintenance updates are scheduled. For example: TUE:03:30.\n"
+ }
+ },
+ "requiredInputs": [
+ "artifactStoreUri",
+ "roleArn",
+ "trackingServerName"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering MlflowTrackingServer resources.\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) assigned by AWS to this MLFlow Tracking Server.\n"
+ },
+ "artifactStoreUri": {
+ "type": "string",
+ "description": "The S3 URI for a general purpose bucket to use as the MLflow Tracking Server artifact store.\n"
+ },
+ "automaticModelRegistration": {
+ "type": "boolean",
+ "description": "A list of Member Definitions that contains objects that identify the workers that make up the work team.\n"
+ },
+ "mlflowVersion": {
+ "type": "string",
+ "description": "The version of MLflow that the tracking server uses. To see which MLflow versions are available to use, see [How it works](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html#mlflow-create-tracking-server-how-it-works).\n",
+ "willReplaceOnChanges": true
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for an IAM role in your account that the MLflow Tracking Server uses to access the artifact store in Amazon S3. The role should have AmazonS3FullAccess permissions. For more information on IAM permissions for tracking server creation, see [Set up IAM permissions for MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-iam.html).\n",
+ "willReplaceOnChanges": true
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "trackingServerName": {
+ "type": "string",
+ "description": "A unique string identifying the tracking server name. This string is part of the tracking server ARN.\n",
+ "willReplaceOnChanges": true
+ },
+ "trackingServerSize": {
+ "type": "string",
+ "description": "The size of the tracking server you want to create. You can choose between \"Small\", \"Medium\", and \"Large\". The default MLflow Tracking Server configuration size is \"Small\". You can choose a size depending on the projected use of the tracking server such as the volume of data logged, number of users, and frequency of use.\n"
+ },
+ "trackingServerUrl": {
+ "type": "string",
+ "description": "The URL to connect to the MLflow user interface for the described tracking server.\n"
+ },
+ "weeklyMaintenanceWindowStart": {
+ "type": "string",
+ "description": "The day and time of the week in Coordinated Universal Time (UTC) 24-hour standard time that weekly maintenance updates are scheduled. For example: TUE:03:30.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
"aws:sagemaker/model:Model": {
"description": "Provides a SageMaker model resource.\n\n## Example Usage\n\nBasic usage:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n actions: [\"sts:AssumeRole\"],\n principals: [{\n type: \"Service\",\n identifiers: [\"sagemaker.amazonaws.com\"],\n }],\n }],\n});\nconst exampleRole = new aws.iam.Role(\"example\", {assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json)});\nconst test = aws.sagemaker.getPrebuiltEcrImage({\n repositoryName: \"kmeans\",\n});\nconst example = new aws.sagemaker.Model(\"example\", {\n name: \"my-model\",\n executionRoleArn: exampleRole.arn,\n primaryContainer: {\n image: test.then(test =\u003e test.registryPath),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"actions\": [\"sts:AssumeRole\"],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"sagemaker.amazonaws.com\"],\n }],\n}])\nexample_role = aws.iam.Role(\"example\", assume_role_policy=assume_role.json)\ntest = aws.sagemaker.get_prebuilt_ecr_image(repository_name=\"kmeans\")\nexample = aws.sagemaker.Model(\"example\",\n name=\"my-model\",\n execution_role_arn=example_role.arn,\n primary_container={\n \"image\": test.registry_path,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"sagemaker.amazonaws.com\",\n },\n },\n },\n },\n },\n });\n\n var exampleRole = new Aws.Iam.Role(\"example\", new()\n {\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var test = Aws.Sagemaker.GetPrebuiltEcrImage.Invoke(new()\n {\n RepositoryName = \"kmeans\",\n });\n\n var example = new Aws.Sagemaker.Model(\"example\", new()\n {\n Name = \"my-model\",\n ExecutionRoleArn = exampleRole.Arn,\n PrimaryContainer = new Aws.Sagemaker.Inputs.ModelPrimaryContainerArgs\n {\n Image = test.Apply(getPrebuiltEcrImageResult =\u003e getPrebuiltEcrImageResult.RegistryPath),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"sagemaker.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleRole, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := sagemaker.GetPrebuiltEcrImage(ctx, \u0026sagemaker.GetPrebuiltEcrImageArgs{\n\t\t\tRepositoryName: \"kmeans\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sagemaker.NewModel(ctx, \"example\", \u0026sagemaker.ModelArgs{\n\t\t\tName: pulumi.String(\"my-model\"),\n\t\t\tExecutionRoleArn: exampleRole.Arn,\n\t\t\tPrimaryContainer: \u0026sagemaker.ModelPrimaryContainerArgs{\n\t\t\t\tImage: pulumi.String(test.RegistryPath),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.sagemaker.SagemakerFunctions;\nimport com.pulumi.aws.sagemaker.inputs.GetPrebuiltEcrImageArgs;\nimport com.pulumi.aws.sagemaker.Model;\nimport com.pulumi.aws.sagemaker.ModelArgs;\nimport com.pulumi.aws.sagemaker.inputs.ModelPrimaryContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"sts:AssumeRole\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"sagemaker.amazonaws.com\")\n .build())\n .build())\n .build());\n\n var exampleRole = new Role(\"exampleRole\", RoleArgs.builder()\n .assumeRolePolicy(assumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n final var test = SagemakerFunctions.getPrebuiltEcrImage(GetPrebuiltEcrImageArgs.builder()\n .repositoryName(\"kmeans\")\n .build());\n\n var example = new Model(\"example\", ModelArgs.builder()\n .name(\"my-model\")\n .executionRoleArn(exampleRole.arn())\n .primaryContainer(ModelPrimaryContainerArgs.builder()\n .image(test.applyValue(getPrebuiltEcrImageResult -\u003e getPrebuiltEcrImageResult.registryPath()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:Model\n properties:\n name: my-model\n executionRoleArn: ${exampleRole.arn}\n primaryContainer:\n image: ${test.registryPath}\n exampleRole:\n type: aws:iam:Role\n name: example\n properties:\n assumeRolePolicy: ${assumeRole.json}\nvariables:\n assumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - actions:\n - sts:AssumeRole\n principals:\n - type: Service\n identifiers:\n - sagemaker.amazonaws.com\n test:\n fn::invoke:\n Function: aws:sagemaker:getPrebuiltEcrImage\n Arguments:\n repositoryName: kmeans\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Inference Execution Config\n\n* `mode` - (Required) How containers in a multi-container are run. The following values are valid `Serial` and `Direct`.\n\n## Import\n\nUsing `pulumi import`, import models using the `name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/model:Model test_model model-foo\n```\n",
"properties": {
@@ -351926,7 +353720,7 @@
"properties": {
"standardsArn": {
"type": "string",
- "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n"
+ "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| CIS AWS Foundations Benchmark v3.0.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/3.0.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n"
}
},
"required": [
@@ -351935,7 +353729,7 @@
"inputProperties": {
"standardsArn": {
"type": "string",
- "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n",
+ "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| CIS AWS Foundations Benchmark v3.0.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/3.0.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n",
"willReplaceOnChanges": true
}
},
@@ -351947,7 +353741,7 @@
"properties": {
"standardsArn": {
"type": "string",
- "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n",
+ "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| CIS AWS Foundations Benchmark v3.0.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/3.0.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n",
"willReplaceOnChanges": true
}
},
@@ -369173,7 +370967,7 @@
}
},
"aws:verifiedaccess/group:Group": {
- "description": "Resource for managing a Verified Access Group.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.verifiedaccess.Group(\"example\", {verifiedaccessInstanceId: exampleAwsVerifiedaccessInstance.id});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.verifiedaccess.Group(\"example\", verifiedaccess_instance_id=example_aws_verifiedaccess_instance[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.VerifiedAccess.Group(\"example\", new()\n {\n VerifiedaccessInstanceId = exampleAwsVerifiedaccessInstance.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/verifiedaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := verifiedaccess.NewGroup(ctx, \"example\", \u0026verifiedaccess.GroupArgs{\n\t\t\tVerifiedaccessInstanceId: pulumi.Any(exampleAwsVerifiedaccessInstance.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.verifiedaccess.Group;\nimport com.pulumi.aws.verifiedaccess.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Group(\"example\", GroupArgs.builder()\n .verifiedaccessInstanceId(exampleAwsVerifiedaccessInstance.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:verifiedaccess:Group\n properties:\n verifiedaccessInstanceId: ${exampleAwsVerifiedaccessInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage with KMS Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n testKey:\n type: aws:kms:Key\n name: test_key\n properties:\n description: KMS key for Verified Access Group test\n test:\n type: aws:verifiedaccess:Group\n properties:\n verifiedaccessInstanceId: ${testAwsVerifiedaccessInstanceTrustProviderAttachment.verifiedaccessInstanceId}\n serverSideEncryptionConfiguration:\n - kmsKeyArn: ${testKey.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "description": "Resource for managing a Verified Access Group.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.verifiedaccess.Group(\"example\", {verifiedaccessInstanceId: exampleAwsVerifiedaccessInstance.id});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.verifiedaccess.Group(\"example\", verifiedaccess_instance_id=example_aws_verifiedaccess_instance[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.VerifiedAccess.Group(\"example\", new()\n {\n VerifiedaccessInstanceId = exampleAwsVerifiedaccessInstance.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/verifiedaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := verifiedaccess.NewGroup(ctx, \"example\", \u0026verifiedaccess.GroupArgs{\n\t\t\tVerifiedaccessInstanceId: pulumi.Any(exampleAwsVerifiedaccessInstance.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.verifiedaccess.Group;\nimport com.pulumi.aws.verifiedaccess.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Group(\"example\", GroupArgs.builder()\n .verifiedaccessInstanceId(exampleAwsVerifiedaccessInstance.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:verifiedaccess:Group\n properties:\n verifiedaccessInstanceId: ${exampleAwsVerifiedaccessInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage with KMS Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testKey = new aws.kms.Key(\"test_key\", {description: \"KMS key for Verified Access Group test\"});\nconst test = new aws.verifiedaccess.Group(\"test\", {\n verifiedaccessInstanceId: testAwsVerifiedaccessInstanceTrustProviderAttachment.verifiedaccessInstanceId,\n sseConfiguration: {\n kmsKeyArn: testKey.arn,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_key = aws.kms.Key(\"test_key\", description=\"KMS key for Verified Access Group test\")\ntest = aws.verifiedaccess.Group(\"test\",\n verifiedaccess_instance_id=test_aws_verifiedaccess_instance_trust_provider_attachment[\"verifiedaccessInstanceId\"],\n sse_configuration={\n \"kms_key_arn\": test_key.arn,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testKey = new Aws.Kms.Key(\"test_key\", new()\n {\n Description = \"KMS key for Verified Access Group test\",\n });\n\n var test = new Aws.VerifiedAccess.Group(\"test\", new()\n {\n VerifiedaccessInstanceId = testAwsVerifiedaccessInstanceTrustProviderAttachment.VerifiedaccessInstanceId,\n SseConfiguration = new Aws.VerifiedAccess.Inputs.GroupSseConfigurationArgs\n {\n KmsKeyArn = testKey.Arn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/verifiedaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestKey, err := kms.NewKey(ctx, \"test_key\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"KMS key for Verified Access Group test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = verifiedaccess.NewGroup(ctx, \"test\", \u0026verifiedaccess.GroupArgs{\n\t\t\tVerifiedaccessInstanceId: pulumi.Any(testAwsVerifiedaccessInstanceTrustProviderAttachment.VerifiedaccessInstanceId),\n\t\t\tSseConfiguration: \u0026verifiedaccess.GroupSseConfigurationArgs{\n\t\t\t\tKmsKeyArn: testKey.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.verifiedaccess.Group;\nimport com.pulumi.aws.verifiedaccess.GroupArgs;\nimport com.pulumi.aws.verifiedaccess.inputs.GroupSseConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testKey = new Key(\"testKey\", KeyArgs.builder()\n .description(\"KMS key for Verified Access Group test\")\n .build());\n\n var test = new Group(\"test\", GroupArgs.builder()\n .verifiedaccessInstanceId(testAwsVerifiedaccessInstanceTrustProviderAttachment.verifiedaccessInstanceId())\n .sseConfiguration(GroupSseConfigurationArgs.builder()\n .kmsKeyArn(testKey.arn())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testKey:\n type: aws:kms:Key\n name: test_key\n properties:\n description: KMS key for Verified Access Group test\n test:\n type: aws:verifiedaccess:Group\n properties:\n verifiedaccessInstanceId: ${testAwsVerifiedaccessInstanceTrustProviderAttachment.verifiedaccessInstanceId}\n sseConfiguration:\n kmsKeyArn: ${testKey.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"properties": {
"creationTime": {
"type": "string",
@@ -376201,6 +377995,9 @@
"enableXffClientPort": {
"type": "boolean"
},
+ "enableZonalShift": {
+ "type": "boolean"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string"
},
@@ -376277,6 +378074,7 @@
"enableTlsVersionAndCipherSuiteHeaders",
"enableWafFailOpen",
"enableXffClientPort",
+ "enableZonalShift",
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
"idleTimeout",
"internal",
@@ -391523,7 +393321,7 @@
}
},
"aws:ec2/getSubnet:getSubnet": {
- "description": "`aws.ec2.Subnet` provides details about a specific VPC subnet.\n\nThis resource can prove useful when a module accepts a subnet ID as an input variable and needs to, for example, determine the ID of the VPC that the subnet belongs to.\n\n## Example Usage\n\nThe following example shows how one might accept a subnet ID as a variable and use this data source to obtain the data necessary to create a security group that allows connections from hosts in that subnet.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst subnetId = config.requireObject(\"subnetId\");\nconst selected = aws.ec2.getSubnet({\n id: subnetId,\n});\nconst subnet = new aws.ec2.SecurityGroup(\"subnet\", {\n vpcId: selected.then(selected =\u003e selected.vpcId),\n ingress: [{\n cidrBlocks: [selected.then(selected =\u003e selected.cidrBlock)],\n fromPort: 80,\n toPort: 80,\n protocol: \"tcp\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nsubnet_id = config.require_object(\"subnetId\")\nselected = aws.ec2.get_subnet(id=subnet_id)\nsubnet = aws.ec2.SecurityGroup(\"subnet\",\n vpc_id=selected.vpc_id,\n ingress=[{\n \"cidr_blocks\": [selected.cidr_block],\n \"from_port\": 80,\n \"to_port\": 80,\n \"protocol\": \"tcp\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var subnetId = config.RequireObject\u003cdynamic\u003e(\"subnetId\");\n var selected = Aws.Ec2.GetSubnet.Invoke(new()\n {\n Id = subnetId,\n });\n\n var subnet = new Aws.Ec2.SecurityGroup(\"subnet\", new()\n {\n VpcId = selected.Apply(getSubnetResult =\u003e getSubnetResult.VpcId),\n Ingress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupIngressArgs\n {\n CidrBlocks = new[]\n {\n selected.Apply(getSubnetResult =\u003e getSubnetResult.CidrBlock),\n },\n FromPort = 80,\n ToPort = 80,\n Protocol = \"tcp\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tsubnetId := cfg.RequireObject(\"subnetId\")\n\t\tselected, err := ec2.LookupSubnet(ctx, \u0026ec2.LookupSubnetArgs{\n\t\t\tId: pulumi.StringRef(subnetId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewSecurityGroup(ctx, \"subnet\", \u0026ec2.SecurityGroupArgs{\n\t\t\tVpcId: pulumi.String(selected.VpcId),\n\t\t\tIngress: ec2.SecurityGroupIngressArray{\n\t\t\t\t\u0026ec2.SecurityGroupIngressArgs{\n\t\t\t\t\tCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(selected.CidrBlock),\n\t\t\t\t\t},\n\t\t\t\t\tFromPort: pulumi.Int(80),\n\t\t\t\t\tToPort: pulumi.Int(80),\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupIngressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var subnetId = config.get(\"subnetId\");\n final var selected = Ec2Functions.getSubnet(GetSubnetArgs.builder()\n .id(subnetId)\n .build());\n\n var subnet = new SecurityGroup(\"subnet\", SecurityGroupArgs.builder()\n .vpcId(selected.applyValue(getSubnetResult -\u003e getSubnetResult.vpcId()))\n .ingress(SecurityGroupIngressArgs.builder()\n .cidrBlocks(selected.applyValue(getSubnetResult -\u003e getSubnetResult.cidrBlock()))\n .fromPort(80)\n .toPort(80)\n .protocol(\"tcp\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n subnetId:\n type: dynamic\nresources:\n subnet:\n type: aws:ec2:SecurityGroup\n properties:\n vpcId: ${selected.vpcId}\n ingress:\n - cidrBlocks:\n - ${selected.cidrBlock}\n fromPort: 80\n toPort: 80\n protocol: tcp\nvariables:\n selected:\n fn::invoke:\n Function: aws:ec2:getSubnet\n Arguments:\n id: ${subnetId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Filter Example\n\nIf you want to match against tag `Name`, use:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst selected = aws.ec2.getSubnet({\n filters: [{\n name: \"tag:Name\",\n values: [\"yakdriver\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nselected = aws.ec2.get_subnet(filters=[{\n \"name\": \"tag:Name\",\n \"values\": [\"yakdriver\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var selected = Aws.Ec2.GetSubnet.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ec2.Inputs.GetSubnetFilterInputArgs\n {\n Name = \"tag:Name\",\n Values = new[]\n {\n \"yakdriver\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.LookupSubnet(ctx, \u0026ec2.LookupSubnetArgs{\n\t\t\tFilters: []ec2.GetSubnetFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"tag:Name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"yakdriver\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var selected = Ec2Functions.getSubnet(GetSubnetArgs.builder()\n .filters(GetSubnetFilterArgs.builder()\n .name(\"tag:Name\")\n .values(\"yakdriver\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n selected:\n fn::invoke:\n Function: aws:ec2:getSubnet\n Arguments:\n filters:\n - name: tag:Name\n values:\n - yakdriver\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "description": "`aws.ec2.Subnet` provides details about a specific VPC subnet.\n\nThis resource can prove useful when a module accepts a subnet ID as an input variable and needs to, for example, determine the ID of the VPC that the subnet belongs to.\n\n## Example Usage\n\nThe following example shows how one might accept a subnet ID as a variable and use this data source to obtain the data necessary to create a security group that allows connections from hosts in that subnet.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst subnetId = config.requireObject(\"subnetId\");\nconst selected = aws.ec2.getSubnet({\n id: subnetId,\n});\nconst subnetSecurityGroup = new aws.ec2.SecurityGroup(\"subnet_security_group\", {\n vpcId: selected.then(selected =\u003e selected.vpcId),\n ingress: [{\n cidrBlocks: [selected.then(selected =\u003e selected.cidrBlock)],\n fromPort: 80,\n toPort: 80,\n protocol: \"tcp\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nsubnet_id = config.require_object(\"subnetId\")\nselected = aws.ec2.get_subnet(id=subnet_id)\nsubnet_security_group = aws.ec2.SecurityGroup(\"subnet_security_group\",\n vpc_id=selected.vpc_id,\n ingress=[{\n \"cidr_blocks\": [selected.cidr_block],\n \"from_port\": 80,\n \"to_port\": 80,\n \"protocol\": \"tcp\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var subnetId = config.RequireObject\u003cdynamic\u003e(\"subnetId\");\n var selected = Aws.Ec2.GetSubnet.Invoke(new()\n {\n Id = subnetId,\n });\n\n var subnetSecurityGroup = new Aws.Ec2.SecurityGroup(\"subnet_security_group\", new()\n {\n VpcId = selected.Apply(getSubnetResult =\u003e getSubnetResult.VpcId),\n Ingress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupIngressArgs\n {\n CidrBlocks = new[]\n {\n selected.Apply(getSubnetResult =\u003e getSubnetResult.CidrBlock),\n },\n FromPort = 80,\n ToPort = 80,\n Protocol = \"tcp\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tsubnetId := cfg.RequireObject(\"subnetId\")\n\t\tselected, err := ec2.LookupSubnet(ctx, \u0026ec2.LookupSubnetArgs{\n\t\t\tId: pulumi.StringRef(subnetId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewSecurityGroup(ctx, \"subnet_security_group\", \u0026ec2.SecurityGroupArgs{\n\t\t\tVpcId: pulumi.String(selected.VpcId),\n\t\t\tIngress: ec2.SecurityGroupIngressArray{\n\t\t\t\t\u0026ec2.SecurityGroupIngressArgs{\n\t\t\t\t\tCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(selected.CidrBlock),\n\t\t\t\t\t},\n\t\t\t\t\tFromPort: pulumi.Int(80),\n\t\t\t\t\tToPort: pulumi.Int(80),\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupIngressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var subnetId = config.get(\"subnetId\");\n final var selected = Ec2Functions.getSubnet(GetSubnetArgs.builder()\n .id(subnetId)\n .build());\n\n var subnetSecurityGroup = new SecurityGroup(\"subnetSecurityGroup\", SecurityGroupArgs.builder()\n .vpcId(selected.applyValue(getSubnetResult -\u003e getSubnetResult.vpcId()))\n .ingress(SecurityGroupIngressArgs.builder()\n .cidrBlocks(selected.applyValue(getSubnetResult -\u003e getSubnetResult.cidrBlock()))\n .fromPort(80)\n .toPort(80)\n .protocol(\"tcp\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n subnetId:\n type: dynamic\nresources:\n subnetSecurityGroup:\n type: aws:ec2:SecurityGroup\n name: subnet_security_group\n properties:\n vpcId: ${selected.vpcId}\n ingress:\n - cidrBlocks:\n - ${selected.cidrBlock}\n fromPort: 80\n toPort: 80\n protocol: tcp\nvariables:\n selected:\n fn::invoke:\n Function: aws:ec2:getSubnet\n Arguments:\n id: ${subnetId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Filter Example\n\nIf you want to match against tag `Name`, use:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst selected = aws.ec2.getSubnet({\n filters: [{\n name: \"tag:Name\",\n values: [\"yakdriver\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nselected = aws.ec2.get_subnet(filters=[{\n \"name\": \"tag:Name\",\n \"values\": [\"yakdriver\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var selected = Aws.Ec2.GetSubnet.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ec2.Inputs.GetSubnetFilterInputArgs\n {\n Name = \"tag:Name\",\n Values = new[]\n {\n \"yakdriver\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.LookupSubnet(ctx, \u0026ec2.LookupSubnetArgs{\n\t\t\tFilters: []ec2.GetSubnetFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"tag:Name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"yakdriver\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var selected = Ec2Functions.getSubnet(GetSubnetArgs.builder()\n .filters(GetSubnetFilterArgs.builder()\n .name(\"tag:Name\")\n .values(\"yakdriver\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n selected:\n fn::invoke:\n Function: aws:ec2:getSubnet\n Arguments:\n filters:\n - name: tag:Name\n values:\n - yakdriver\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
"description": "A collection of arguments for invoking getSubnet.\n",
"properties": {
@@ -396979,7 +398777,7 @@
},
"productDescription": {
"type": "string",
- "description": "Engine type for the reserved cache node.\nValid values are `redis` and `memcached`.\n"
+ "description": "Engine type for the reserved cache node.\nValid values are `redis`, `valkey` and `memcached`.\n"
}
},
"type": "object",
@@ -397061,7 +398859,7 @@
"type": "string"
},
"dailySnapshotTime": {
- "description": "The daily time that snapshots will be created from the new serverless cache. Only available for engine type `\"redis\"`.\n",
+ "description": "The daily time that snapshots will be created from the new serverless cache. Only available for engine types `\"redis\"` and `\"valkey\"`.\n",
"type": "string"
},
"description": {
@@ -401073,6 +402871,7 @@
"owner",
"parentImage",
"platform",
+ "tags",
"targetRepositories",
"version",
"workingDirectory",
@@ -401680,6 +403479,7 @@
"owner",
"parentImage",
"platform",
+ "tags",
"userDataBase64",
"version",
"workingDirectory",
@@ -404151,6 +405951,13 @@
"description": "The provider-assigned unique ID for this managed resource.\n",
"type": "string"
},
+ "parameters": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of additional configuration. `CROSS_ACCOUNT_VERSION` will be set to values `\"1\"`, `\"2\"`, `\"3\"`, or `\"4\"`. `SET_CONTEXT` will also be returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `\"1\"`.\n",
+ "type": "object"
+ },
"readOnlyAdmins": {
"description": "List of ARNs of AWS Lake Formation principals (IAM users or roles) with only view access to the resources.\n",
"items": {
@@ -404174,6 +405981,7 @@
"createDatabaseDefaultPermissions",
"createTableDefaultPermissions",
"externalDataFilteringAllowLists",
+ "parameters",
"readOnlyAdmins",
"trustedResourceOwners",
"id"
@@ -405225,6 +407033,9 @@
"enableXffClientPort": {
"type": "boolean"
},
+ "enableZonalShift": {
+ "type": "boolean"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string"
},
@@ -405301,6 +407112,7 @@
"enableTlsVersionAndCipherSuiteHeaders",
"enableWafFailOpen",
"enableXffClientPort",
+ "enableZonalShift",
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
"idleTimeout",
"internal",
@@ -419643,6 +421455,56 @@
"type": "object"
}
},
+ "aws:ssm/getPatchBaselines:getPatchBaselines": {
+ "description": "Data source for retrieving AWS SSM (Systems Manager) Patch Baselines.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.ssm.getPatchBaselines({});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.get_patch_baselines()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Ssm.GetPatchBaselines.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.GetPatchBaselines(ctx, \u0026ssm.GetPatchBaselinesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.SsmFunctions;\nimport com.pulumi.aws.ssm.inputs.GetPatchBaselinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = SsmFunctions.getPatchBaselines();\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: aws:ssm:getPatchBaselines\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Filters\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.ssm.getPatchBaselines({\n filters: [\n {\n key: \"OWNER\",\n values: [\"AWS\"],\n },\n {\n key: \"OPERATING_SYSTEM\",\n values: [\"WINDOWS\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.get_patch_baselines(filters=[\n {\n \"key\": \"OWNER\",\n \"values\": [\"AWS\"],\n },\n {\n \"key\": \"OPERATING_SYSTEM\",\n \"values\": [\"WINDOWS\"],\n },\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Ssm.GetPatchBaselines.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ssm.Inputs.GetPatchBaselinesFilterInputArgs\n {\n Key = \"OWNER\",\n Values = new[]\n {\n \"AWS\",\n },\n },\n new Aws.Ssm.Inputs.GetPatchBaselinesFilterInputArgs\n {\n Key = \"OPERATING_SYSTEM\",\n Values = new[]\n {\n \"WINDOWS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.GetPatchBaselines(ctx, \u0026ssm.GetPatchBaselinesArgs{\n\t\t\tFilters: []ssm.GetPatchBaselinesFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"OWNER\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"AWS\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"OPERATING_SYSTEM\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"WINDOWS\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.SsmFunctions;\nimport com.pulumi.aws.ssm.inputs.GetPatchBaselinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = SsmFunctions.getPatchBaselines(GetPatchBaselinesArgs.builder()\n .filters( \n GetPatchBaselinesFilterArgs.builder()\n .key(\"OWNER\")\n .values(\"AWS\")\n .build(),\n GetPatchBaselinesFilterArgs.builder()\n .key(\"OPERATING_SYSTEM\")\n .values(\"WINDOWS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: aws:ssm:getPatchBaselines\n Arguments:\n filters:\n - key: OWNER\n values:\n - AWS\n - key: OPERATING_SYSTEM\n values:\n - WINDOWS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "inputs": {
+ "description": "A collection of arguments for invoking getPatchBaselines.\n",
+ "properties": {
+ "defaultBaselines": {
+ "type": "boolean",
+ "description": "Only return baseline identities where `default_baseline` is `true`.\n"
+ },
+ "filters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:ssm/getPatchBaselinesFilter:getPatchBaselinesFilter"
+ },
+ "description": "Key-value pairs used to filter the results. See `filter` below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "outputs": {
+ "description": "A collection of values returned by getPatchBaselines.\n",
+ "properties": {
+ "baselineIdentities": {
+ "description": "List of baseline identities. See `baseline_identities` below.\n",
+ "items": {
+ "$ref": "#/types/aws:ssm/getPatchBaselinesBaselineIdentity:getPatchBaselinesBaselineIdentity"
+ },
+ "type": "array"
+ },
+ "defaultBaselines": {
+ "type": "boolean"
+ },
+ "filters": {
+ "items": {
+ "$ref": "#/types/aws:ssm/getPatchBaselinesFilter:getPatchBaselinesFilter"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "The provider-assigned unique ID for this managed resource.\n",
+ "type": "string"
+ }
+ },
+ "required": [
+ "baselineIdentities",
+ "id"
+ ],
+ "type": "object"
+ }
+ },
"aws:ssmcontacts/getContact:getContact": {
"description": "Data source for managing an AWS SSM Contact.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.ssmcontacts.getContact({\n arn: \"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssmcontacts.get_contact(arn=\"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.SsmContacts.GetContact.Invoke(new()\n {\n Arn = \"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssmcontacts\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssmcontacts.LookupContact(ctx, \u0026ssmcontacts.LookupContactArgs{\n\t\t\tArn: \"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssmcontacts.SsmcontactsFunctions;\nimport com.pulumi.aws.ssmcontacts.inputs.GetContactArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = SsmcontactsFunctions.getContact(GetContactArgs.builder()\n .arn(\"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: aws:ssmcontacts:getContact\n Arguments:\n arn: arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
diff --git a/provider/cmd/pulumi-resource-aws/schema.json b/provider/cmd/pulumi-resource-aws/schema.json
index 6a71acc17d4..e31aa3f6621 100644
--- a/provider/cmd/pulumi-resource-aws/schema.json
+++ b/provider/cmd/pulumi-resource-aws/schema.json
@@ -184,6 +184,7 @@
"redshiftdata": "RedshiftData",
"redshiftserverless": "RedshiftServerless",
"rekognition": "Rekognition",
+ "resiliencehub": "ResilienceHub",
"resourceexplorer": "ResourceExplorer",
"resourcegroups": "ResourceGroups",
"resourcegroupstaggingapi": "ResourceGroupsTaggingApi",
@@ -30019,6 +30020,41 @@
},
"type": "object"
},
+ "aws:codedeploy/DeploymentConfigZonalConfig:DeploymentConfigZonalConfig": {
+ "properties": {
+ "firstZoneMonitorDurationInSeconds": {
+ "type": "integer",
+ "description": "The period of time, in seconds, that CodeDeploy must wait after completing a deployment to the first Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the second Availability Zone. If you don't specify a value for `first_zone_monitor_duration_in_seconds`, then CodeDeploy uses the `monitor_duration_in_seconds` value for the first Availability Zone.\n",
+ "willReplaceOnChanges": true
+ },
+ "minimumHealthyHostsPerZone": {
+ "$ref": "#/types/aws:codedeploy/DeploymentConfigZonalConfigMinimumHealthyHostsPerZone:DeploymentConfigZonalConfigMinimumHealthyHostsPerZone",
+ "description": "The number or percentage of instances that must remain available per Availability Zone during a deployment. If you don't specify a value under `minimum_healthy_hosts_per_zone`, then CodeDeploy uses a default value of 0 percent. This block is more documented below.\n",
+ "willReplaceOnChanges": true
+ },
+ "monitorDurationInSeconds": {
+ "type": "integer",
+ "description": "The period of time, in seconds, that CodeDeploy must wait after completing a deployment to an Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the next Availability Zone. If you don't specify a `monitor_duration_in_seconds`, CodeDeploy starts deploying to the next Availability Zone immediately.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
+ "aws:codedeploy/DeploymentConfigZonalConfigMinimumHealthyHostsPerZone:DeploymentConfigZonalConfigMinimumHealthyHostsPerZone": {
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "The type can either be `FLEET_PERCENT` or `HOST_COUNT`.\n",
+ "willReplaceOnChanges": true
+ },
+ "value": {
+ "type": "integer",
+ "description": "The value when the type is `FLEET_PERCENT` represents the minimum number of healthy instances as a percentage of the total number of instances in the Availability Zone during a deployment. If you specify FLEET_PERCENT, at the start of the deployment, AWS CodeDeploy converts the percentage to the equivalent number of instance and rounds up fractional instances. When the type is `HOST_COUNT`, the value represents the minimum number of healthy instances in the Availability Zone as an absolute value.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
"aws:codedeploy/DeploymentGroupAlarmConfiguration:DeploymentGroupAlarmConfiguration": {
"properties": {
"alarms": {
@@ -35941,14 +35977,14 @@
},
"not": {
"$ref": "#/types/aws:costexplorer/AnomalySubscriptionThresholdExpressionNot:AnomalySubscriptionThresholdExpressionNot",
- "description": "Return results that match both Dimension object.\n"
+ "description": "Return results that do not match the Dimension object.\n"
},
"ors": {
"type": "array",
"items": {
"$ref": "#/types/aws:costexplorer/AnomalySubscriptionThresholdExpressionOr:AnomalySubscriptionThresholdExpressionOr"
},
- "description": "Return results that match both Dimension object.\n"
+ "description": "Return results that match either Dimension object.\n"
},
"tags": {
"$ref": "#/types/aws:costexplorer/AnomalySubscriptionThresholdExpressionTags:AnomalySubscriptionThresholdExpressionTags",
@@ -78592,7 +78628,14 @@
"willReplaceOnChanges": true
}
},
- "type": "object"
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "noDevice"
+ ]
+ }
+ }
},
"aws:imagebuilder/ContainerRecipeInstanceConfigurationBlockDeviceMappingEbs:ContainerRecipeInstanceConfigurationBlockDeviceMappingEbs": {
"properties": {
@@ -79161,7 +79204,14 @@
"willReplaceOnChanges": true
}
},
- "type": "object"
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "noDevice"
+ ]
+ }
+ }
},
"aws:imagebuilder/ImageRecipeBlockDeviceMappingEbs:ImageRecipeBlockDeviceMappingEbs": {
"properties": {
@@ -79351,6 +79401,193 @@
"s3BucketName"
]
},
+ "aws:imagebuilder/LifecyclePolicyPolicyDetail:LifecyclePolicyPolicyDetail": {
+ "properties": {
+ "action": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailAction:LifecyclePolicyPolicyDetailAction",
+ "description": "Configuration details for the policy action.\n"
+ },
+ "exclusionRules": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRules:LifecyclePolicyPolicyDetailExclusionRules",
+ "description": "Additional rules to specify resources that should be exempt from policy actions.\n"
+ },
+ "filter": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailFilter:LifecyclePolicyPolicyDetailFilter",
+ "description": "Specifies the resources that the lifecycle policy applies to.\n\nThe following arguments are optional:\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailAction:LifecyclePolicyPolicyDetailAction": {
+ "properties": {
+ "includeResources": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailActionIncludeResources:LifecyclePolicyPolicyDetailActionIncludeResources",
+ "description": "Specifies the resources that the lifecycle policy applies to. Detailed below.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Specifies the lifecycle action to take. Valid values: `DELETE`, `DEPRECATE` or `DISABLE`.\n\nThe following arguments are optional:\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type"
+ ]
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailActionIncludeResources:LifecyclePolicyPolicyDetailActionIncludeResources": {
+ "properties": {
+ "amis": {
+ "type": "boolean",
+ "description": "Specifies whether the lifecycle action should apply to distributed AMIs.\n"
+ },
+ "containers": {
+ "type": "boolean",
+ "description": "Specifies whether the lifecycle action should apply to distributed containers.\n"
+ },
+ "snapshots": {
+ "type": "boolean",
+ "description": "Specifies whether the lifecycle action should apply to snapshots associated with distributed AMIs.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "amis",
+ "containers",
+ "snapshots"
+ ]
+ }
+ }
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRules:LifecyclePolicyPolicyDetailExclusionRules": {
+ "properties": {
+ "amis": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRulesAmis:LifecyclePolicyPolicyDetailExclusionRulesAmis",
+ "description": "Lists configuration values that apply to AMIs that Image Builder should exclude from the lifecycle action. Detailed below.\n"
+ },
+ "tagMap": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Contains a list of tags that Image Builder uses to skip lifecycle actions for Image Builder image resources that have them.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRulesAmis:LifecyclePolicyPolicyDetailExclusionRulesAmis": {
+ "properties": {
+ "isPublic": {
+ "type": "boolean",
+ "description": "Configures whether public AMIs are excluded from the lifecycle action.\n"
+ },
+ "lastLaunched": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched:LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched",
+ "description": "Specifies configuration details for Image Builder to exclude the most recent resources from lifecycle actions. Detailed below.\n"
+ },
+ "regions": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Configures AWS Regions that are excluded from the lifecycle action.\n"
+ },
+ "sharedAccounts": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Specifies AWS accounts whose resources are excluded from the lifecycle action.\n"
+ },
+ "tagMap": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Lists tags that should be excluded from lifecycle actions for the AMIs that have them.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched:LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched": {
+ "properties": {
+ "unit": {
+ "type": "string",
+ "description": "Defines the unit of time that the lifecycle policy uses to calculate elapsed time since the last instance launched from the AMI. For example: days, weeks, months, or years. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.\n"
+ },
+ "value": {
+ "type": "integer",
+ "description": "The integer number of units for the time period. For example 6 (months).\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "unit",
+ "value"
+ ]
+ },
+ "aws:imagebuilder/LifecyclePolicyPolicyDetailFilter:LifecyclePolicyPolicyDetailFilter": {
+ "properties": {
+ "retainAtLeast": {
+ "type": "integer",
+ "description": "For age-based filters, this is the number of resources to keep on hand after the lifecycle DELETE action is applied. Impacted resources are only deleted if you have more than this number of resources. If you have fewer resources than this number, the impacted resource is not deleted.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "Filter resources based on either age or count. Valid values: `AGE` or `COUNT`.\n"
+ },
+ "unit": {
+ "type": "string",
+ "description": "Defines the unit of time that the lifecycle policy uses to determine impacted resources. This is required for age-based rules. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.\n"
+ },
+ "value": {
+ "type": "integer",
+ "description": "The number of units for the time period or for the count. For example, a value of 6 might refer to six months or six AMIs.\n\nThe following arguments are optional:\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type",
+ "value"
+ ]
+ },
+ "aws:imagebuilder/LifecyclePolicyResourceSelection:LifecyclePolicyResourceSelection": {
+ "properties": {
+ "recipes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyResourceSelectionRecipe:LifecyclePolicyResourceSelectionRecipe"
+ },
+ "description": "A list of recipe that are used as selection criteria for the output images that the lifecycle policy applies to. Detailed below.\n"
+ },
+ "tagMap": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A list of tags that are used as selection criteria for the Image Builder image resources that the lifecycle policy applies to.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:imagebuilder/LifecyclePolicyResourceSelectionRecipe:LifecyclePolicyResourceSelectionRecipe": {
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of an Image Builder recipe that the lifecycle policy uses for resource selection.\n"
+ },
+ "semanticVersion": {
+ "type": "string",
+ "description": "The version of the Image Builder recipe specified by the name field.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "semanticVersion"
+ ]
+ },
"aws:imagebuilder/getComponentsFilter:getComponentsFilter": {
"properties": {
"name": {
@@ -85964,7 +86201,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -85976,7 +86213,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -86471,7 +86708,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -86483,7 +86720,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -86680,7 +86917,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -86692,7 +86929,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -86834,6 +87071,238 @@
}
}
},
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfiguration:FirehoseDeliveryStreamIcebergConfiguration": {
+ "properties": {
+ "bufferingInterval": {
+ "type": "integer",
+ "description": "Buffer incoming data for the specified period of time, in seconds between 0 and 900, before delivering it to the destination. The default value is 300.\n"
+ },
+ "bufferingSize": {
+ "type": "integer",
+ "description": "Buffer incoming data to the specified size, in MBs between 1 and 128, before delivering it to the destination. The default value is 5.\n"
+ },
+ "catalogArn": {
+ "type": "string",
+ "description": "Glue catalog ARN identifier of the destination Apache Iceberg Tables. You must specify the ARN in the format `arn:aws:glue:region:account-id:catalog`\n",
+ "willReplaceOnChanges": true
+ },
+ "cloudwatchLoggingOptions": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions:FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions",
+ "description": "The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.\n"
+ },
+ "destinationTableConfigurations": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration:FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration"
+ },
+ "description": "Destination table configurations which Firehose uses to deliver data to Apache Iceberg Tables. Firehose will write data with insert if table specific configuration is not provided. See `destination_table_configuration` block below for details.\n",
+ "willReplaceOnChanges": true
+ },
+ "processingConfiguration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration:FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration",
+ "description": "The data processing configuration. See `processing_configuration` block below for details.\n"
+ },
+ "retryDuration": {
+ "type": "integer",
+ "description": "The period of time, in seconds between 0 to 7200, during which Firehose retries to deliver data to the specified destination.\n"
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The ARN of the IAM role to be assumed by Firehose for calling Apache Iceberg Tables.\n"
+ },
+ "s3BackupMode": {
+ "type": "string"
+ },
+ "s3Configuration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationS3Configuration:FirehoseDeliveryStreamIcebergConfigurationS3Configuration",
+ "description": "The S3 Configuration. See `s3_configuration` block below for details.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "catalogArn",
+ "roleArn",
+ "s3Configuration"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "catalogArn",
+ "cloudwatchLoggingOptions",
+ "roleArn",
+ "s3Configuration"
+ ]
+ }
+ }
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions:FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enables or disables the logging. Defaults to `false`.\n"
+ },
+ "logGroupName": {
+ "type": "string",
+ "description": "The CloudWatch group name for logging. This value is required if `enabled` is true.\n"
+ },
+ "logStreamName": {
+ "type": "string",
+ "description": "The CloudWatch log stream name for logging. This value is required if `enabled` is true.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration:FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration": {
+ "properties": {
+ "databaseName": {
+ "type": "string",
+ "description": "The name of the Apache Iceberg database.\n"
+ },
+ "s3ErrorOutputPrefix": {
+ "type": "string",
+ "description": "The table specific S3 error output prefix. All the errors that occurred while delivering to this table will be prefixed with this value in S3 destination.\n"
+ },
+ "tableName": {
+ "type": "string",
+ "description": "The name of the Apache Iceberg Table.\n"
+ },
+ "uniqueKeys": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of unique keys for a given Apache Iceberg table. Firehose will use these for running Create, Update, or Delete operations on the given Iceberg table.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "databaseName",
+ "tableName"
+ ]
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration:FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enables or disables data processing.\n"
+ },
+ "processors": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor:FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor"
+ },
+ "description": "Specifies the data processors as multiple blocks. See `processors` block below for details.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor:FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor": {
+ "properties": {
+ "parameters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter:FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter"
+ },
+ "description": "Specifies the processor parameters as multiple blocks. See `parameters` block below for details.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "type"
+ ]
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter:FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter": {
+ "properties": {
+ "parameterName": {
+ "type": "string",
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
+ },
+ "parameterValue": {
+ "type": "string",
+ "description": "Parameter value. Must be between 1 and 512 length (inclusive). When providing a Lambda ARN, you should specify the resource version as well.\n\n\u003e **NOTE:** Parameters with default values, including `NumberOfRetries`(default: 3), `RoleArn`(default: firehose role ARN), `BufferSizeInMBs`(default: 1), and `BufferIntervalInSeconds`(default: 60), are not stored in Pulumi state. To prevent perpetual differences, it is therefore recommended to only include parameters with non-default values.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "parameterName",
+ "parameterValue"
+ ]
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationS3Configuration:FirehoseDeliveryStreamIcebergConfigurationS3Configuration": {
+ "properties": {
+ "bucketArn": {
+ "type": "string",
+ "description": "The ARN of the S3 bucket\n"
+ },
+ "bufferingInterval": {
+ "type": "integer",
+ "description": "Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 300.\n"
+ },
+ "bufferingSize": {
+ "type": "integer",
+ "description": "Buffer incoming data to the specified size, in MBs, before delivering it to the destination. The default value is 5.\nWe recommend setting SizeInMBs to a value greater than the amount of data you typically ingest into the delivery stream in 10 seconds. For example, if you typically ingest data at 1 MB/sec set SizeInMBs to be 10 MB or higher.\n"
+ },
+ "cloudwatchLoggingOptions": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions:FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions",
+ "description": "The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.\n"
+ },
+ "compressionFormat": {
+ "type": "string",
+ "description": "The compression format. If no value is specified, the default is `UNCOMPRESSED`. Other supported values are `GZIP`, `ZIP`, `Snappy`, \u0026 `HADOOP_SNAPPY`.\n"
+ },
+ "errorOutputPrefix": {
+ "type": "string",
+ "description": "Prefix added to failed records before writing them to S3. Not currently supported for `redshift` destination. This prefix appears immediately following the bucket name. For information about how to specify this prefix, see [Custom Prefixes for Amazon S3 Objects](https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html).\n"
+ },
+ "kmsKeyArn": {
+ "type": "string",
+ "description": "Specifies the KMS key ARN the stream will use to encrypt data. If not set, no encryption will\nbe used.\n"
+ },
+ "prefix": {
+ "type": "string",
+ "description": "The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket\n"
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The ARN of the AWS credentials.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "bucketArn",
+ "roleArn"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "bucketArn",
+ "cloudwatchLoggingOptions",
+ "roleArn"
+ ]
+ }
+ }
+ },
+ "aws:kinesis/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions:FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enables or disables the logging. Defaults to `false`.\n"
+ },
+ "logGroupName": {
+ "type": "string",
+ "description": "The CloudWatch group name for logging. This value is required if `enabled` is true.\n"
+ },
+ "logStreamName": {
+ "type": "string",
+ "description": "The CloudWatch log stream name for logging. This value is required if `enabled` is true.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:kinesis/FirehoseDeliveryStreamKinesisSourceConfiguration:FirehoseDeliveryStreamKinesisSourceConfiguration": {
"properties": {
"kinesisStreamArn": {
@@ -87035,7 +87504,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -87047,7 +87516,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -87287,7 +87756,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -87299,7 +87768,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -87550,7 +88019,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -87562,7 +88031,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -87912,7 +88381,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -87924,7 +88393,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -88168,7 +88637,7 @@
},
"type": {
"type": "string",
- "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.\n"
}
},
"type": "object",
@@ -88180,7 +88649,7 @@
"properties": {
"parameterName": {
"type": "string",
- "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.\n"
+ "description": "Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.\n"
},
"parameterValue": {
"type": "string",
@@ -133821,6 +134290,108 @@
},
"type": "object"
},
+ "aws:resiliencehub/ResiliencyPolicyPolicy:ResiliencyPolicyPolicy": {
+ "properties": {
+ "az": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicyAz:ResiliencyPolicyPolicyAz",
+ "description": "Specifies Availability Zone failure policy. See `policy.az`\n"
+ },
+ "hardware": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicyHardware:ResiliencyPolicyPolicyHardware",
+ "description": "Specifies Infrastructure failure policy. See `policy.hardware`\n"
+ },
+ "region": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicyRegion:ResiliencyPolicyPolicyRegion",
+ "description": "Specifies Region failure policy. `policy.region`\n"
+ },
+ "software": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicySoftware:ResiliencyPolicyPolicySoftware",
+ "description": "Specifies Application failure policy. See `policy.software`\n\nThe following arguments are optional:\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:resiliencehub/ResiliencyPolicyPolicyAz:ResiliencyPolicyPolicyAz": {
+ "properties": {
+ "rpo": {
+ "type": "string",
+ "description": "Recovery Point Objective (RPO) as a Go duration.\n"
+ },
+ "rto": {
+ "type": "string",
+ "description": "Recovery Time Objective (RTO) as a Go duration.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "rpo",
+ "rto"
+ ]
+ },
+ "aws:resiliencehub/ResiliencyPolicyPolicyHardware:ResiliencyPolicyPolicyHardware": {
+ "properties": {
+ "rpo": {
+ "type": "string",
+ "description": "Recovery Point Objective (RPO) as a Go duration.\n"
+ },
+ "rto": {
+ "type": "string",
+ "description": "Recovery Time Objective (RTO) as a Go duration.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "rpo",
+ "rto"
+ ]
+ },
+ "aws:resiliencehub/ResiliencyPolicyPolicyRegion:ResiliencyPolicyPolicyRegion": {
+ "properties": {
+ "rpo": {
+ "type": "string",
+ "description": "Recovery Point Objective (RPO) as a Go duration.\n"
+ },
+ "rto": {
+ "type": "string",
+ "description": "Recovery Time Objective (RTO) as a Go duration.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:resiliencehub/ResiliencyPolicyPolicySoftware:ResiliencyPolicyPolicySoftware": {
+ "properties": {
+ "rpo": {
+ "type": "string",
+ "description": "Recovery Point Objective (RPO) as a Go duration.\n"
+ },
+ "rto": {
+ "type": "string",
+ "description": "Recovery Time Objective (RTO) as a Go duration.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "rpo",
+ "rto"
+ ]
+ },
+ "aws:resiliencehub/ResiliencyPolicyTimeouts:ResiliencyPolicyTimeouts": {
+ "properties": {
+ "create": {
+ "type": "string",
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
+ },
+ "delete": {
+ "type": "string",
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
+ },
+ "update": {
+ "type": "string",
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
+ }
+ },
+ "type": "object"
+ },
"aws:resourceexplorer/IndexTimeouts:IndexTimeouts": {
"properties": {
"create": {
@@ -134174,9 +134745,9 @@
"type": "string",
"description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
},
- "read": {
+ "update": {
"type": "string",
- "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
+ "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
}
},
"type": "object"
@@ -139274,6 +139845,14 @@
},
"aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettings:DomainDefaultSpaceSettingsJupyterLabAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement:DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"codeRepositories": {
"type": "array",
"items": {
@@ -139292,6 +139871,10 @@
"$ref": "#/types/aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsDefaultResourceSpec:DomainDefaultSpaceSettingsJupyterLabAppSettingsDefaultResourceSpec",
"description": "The default instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance. see `default_resource_spec` Block below.\n"
},
+ "emrSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettings:DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettings",
+ "description": "The configuration parameters that specify the IAM roles assumed by the execution role of SageMaker (assumable roles) and the cluster instances or job execution environments (execution roles or runtime roles) to manage and access resources required for running Amazon EMR clusters or Amazon EMR Serverless applications. see `emr_settings` Block below.\n"
+ },
"lifecycleConfigArns": {
"type": "array",
"items": {
@@ -139302,6 +139885,36 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement:DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsCodeRepository:DomainDefaultSpaceSettingsJupyterLabAppSettingsCodeRepository": {
"properties": {
"repositoryUrl": {
@@ -139360,6 +139973,25 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettings:DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettings": {
+ "properties": {
+ "assumableRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles that the execution role of SageMaker can assume for performing operations or tasks related to Amazon EMR clusters or Amazon EMR Serverless applications. These roles define the permissions and access policies required when performing Amazon EMR-related operations, such as listing, connecting to, or terminating Amazon EMR clusters or Amazon EMR Serverless applications. They are typically used in cross-account access scenarios, where the Amazon EMR resources (clusters or serverless applications) are located in a different AWS account than the SageMaker domain.\n"
+ },
+ "executionRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles used by the Amazon EMR cluster instances or job execution environments to access other AWS services and resources needed during the runtime of your Amazon EMR or Amazon EMR Serverless workloads, such as Amazon S3 for data access, Amazon CloudWatch for logging, or other AWS services based on the particular workload requirements.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultSpaceSettingsJupyterServerAppSettings:DomainDefaultSpaceSettingsJupyterServerAppSettings": {
"properties": {
"codeRepositories": {
@@ -139517,6 +140149,10 @@
},
"aws:sagemaker/DomainDefaultUserSettings:DomainDefaultUserSettings": {
"properties": {
+ "autoMountHomeEfs": {
+ "type": "string",
+ "description": "Indicates whether auto-mounting of an EFS volume is supported for the user profile. The `DefaultAsDomain` value is only supported for user profiles. Do not use the `DefaultAsDomain` value when setting this parameter for a domain. Valid values are: `Enabled`, `Disabled`, and `DefaultAsDomain`.\n"
+ },
"canvasAppSettings": {
"$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettings:DomainDefaultUserSettingsCanvasAppSettings",
"description": "The Canvas app settings. See `canvas_app_settings` Block below.\n"
@@ -139599,6 +140235,7 @@
"language": {
"nodejs": {
"requiredOutputs": [
+ "autoMountHomeEfs",
"defaultLandingUri",
"executionRole",
"spaceStorageSettings",
@@ -139613,6 +140250,10 @@
"$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsDirectDeploySettings:DomainDefaultUserSettingsCanvasAppSettingsDirectDeploySettings",
"description": "The model deployment settings for the SageMaker Canvas application. See `direct_deploy_settings` Block below.\n"
},
+ "emrServerlessSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettings:DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettings",
+ "description": "The settings for running Amazon EMR Serverless jobs in SageMaker Canvas. See `emr_serverless_settings` Block below.\n"
+ },
"generativeAiSettings": {
"$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsGenerativeAiSettings:DomainDefaultUserSettingsCanvasAppSettingsGenerativeAiSettings"
},
@@ -139651,6 +140292,19 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettings:DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettings": {
+ "properties": {
+ "executionRoleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) of the AWS IAM role that is assumed for running Amazon EMR Serverless jobs in SageMaker Canvas. This role should have the necessary permissions to read and write data attached and a trust relationship with EMR Serverless.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "Describes whether Amazon EMR Serverless job capabilities are enabled or disabled in the SageMaker Canvas application. Valid values are: `ENABLED` and `DISABLED`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultUserSettingsCanvasAppSettingsGenerativeAiSettings:DomainDefaultUserSettingsCanvasAppSettingsGenerativeAiSettings": {
"properties": {
"amazonBedrockRoleArn": {
@@ -139729,6 +140383,14 @@
},
"aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettings:DomainDefaultUserSettingsCodeEditorAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagement:DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"customImages": {
"type": "array",
"items": {
@@ -139750,6 +140412,36 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagement:DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultUserSettingsCodeEditorAppSettingsCustomImage:DomainDefaultUserSettingsCodeEditorAppSettingsCustomImage": {
"properties": {
"appImageConfigName": {
@@ -139841,6 +140533,14 @@
},
"aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettings:DomainDefaultUserSettingsJupyterLabAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagement:DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"codeRepositories": {
"type": "array",
"items": {
@@ -139859,6 +140559,10 @@
"$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsDefaultResourceSpec:DomainDefaultUserSettingsJupyterLabAppSettingsDefaultResourceSpec",
"description": "The default instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance. see `default_resource_spec` Block below.\n"
},
+ "emrSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsEmrSettings:DomainDefaultUserSettingsJupyterLabAppSettingsEmrSettings",
+ "description": "The configuration parameters that specify the IAM roles assumed by the execution role of SageMaker (assumable roles) and the cluster instances or job execution environments (execution roles or runtime roles) to manage and access resources required for running Amazon EMR clusters or Amazon EMR Serverless applications. see `emr_settings` Block below.\n"
+ },
"lifecycleConfigArns": {
"type": "array",
"items": {
@@ -139869,6 +140573,36 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagement:DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:DomainDefaultUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsCodeRepository:DomainDefaultUserSettingsJupyterLabAppSettingsCodeRepository": {
"properties": {
"repositoryUrl": {
@@ -139927,6 +140661,25 @@
},
"type": "object"
},
+ "aws:sagemaker/DomainDefaultUserSettingsJupyterLabAppSettingsEmrSettings:DomainDefaultUserSettingsJupyterLabAppSettingsEmrSettings": {
+ "properties": {
+ "assumableRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles that the execution role of SageMaker can assume for performing operations or tasks related to Amazon EMR clusters or Amazon EMR Serverless applications. These roles define the permissions and access policies required when performing Amazon EMR-related operations, such as listing, connecting to, or terminating Amazon EMR clusters or Amazon EMR Serverless applications. They are typically used in cross-account access scenarios, where the Amazon EMR resources (clusters or serverless applications) are located in a different AWS account than the SageMaker domain.\n"
+ },
+ "executionRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles used by the Amazon EMR cluster instances or job execution environments to access other AWS services and resources needed during the runtime of your Amazon EMR or Amazon EMR Serverless workloads, such as Amazon S3 for data access, Amazon CloudWatch for logging, or other AWS services based on the particular workload requirements.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/DomainDefaultUserSettingsJupyterServerAppSettings:DomainDefaultUserSettingsJupyterServerAppSettings": {
"properties": {
"codeRepositories": {
@@ -140183,6 +140936,13 @@
},
"description": "The Applications supported in Studio that are hidden from the Studio left navigation pane.\n"
},
+ "hiddenInstanceTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The instance types you are hiding from the Studio user interface.\n"
+ },
"hiddenMlTools": {
"type": "array",
"items": {
@@ -141003,6 +141763,14 @@
},
"aws:sagemaker/FeatureGroupFeatureDefinition:FeatureGroupFeatureDefinition": {
"properties": {
+ "collectionConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupFeatureDefinitionCollectionConfig:FeatureGroupFeatureDefinitionCollectionConfig",
+ "willReplaceOnChanges": true
+ },
+ "collectionType": {
+ "type": "string",
+ "willReplaceOnChanges": true
+ },
"featureName": {
"type": "string",
"description": "The name of a feature. `feature_name` cannot be any of the following: `is_deleted`, `write_time`, `api_invocation_time`.\n",
@@ -141016,6 +141784,24 @@
},
"type": "object"
},
+ "aws:sagemaker/FeatureGroupFeatureDefinitionCollectionConfig:FeatureGroupFeatureDefinitionCollectionConfig": {
+ "properties": {
+ "vectorConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupFeatureDefinitionCollectionConfigVectorConfig:FeatureGroupFeatureDefinitionCollectionConfigVectorConfig",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/FeatureGroupFeatureDefinitionCollectionConfigVectorConfig:FeatureGroupFeatureDefinitionCollectionConfigVectorConfig": {
+ "properties": {
+ "dimension": {
+ "type": "integer",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/FeatureGroupOfflineStoreConfig:FeatureGroupOfflineStoreConfig": {
"properties": {
"dataCatalogConfig": {
@@ -141159,6 +141945,27 @@
},
"type": "object"
},
+ "aws:sagemaker/FeatureGroupThroughputConfig:FeatureGroupThroughputConfig": {
+ "properties": {
+ "provisionedReadCapacityUnits": {
+ "type": "integer"
+ },
+ "provisionedWriteCapacityUnits": {
+ "type": "integer"
+ },
+ "throughputMode": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "throughputMode"
+ ]
+ }
+ }
+ },
"aws:sagemaker/FlowDefinitionHumanLoopActivationConfig:FlowDefinitionHumanLoopActivationConfig": {
"properties": {
"humanLoopActivationConditionsConfig": {
@@ -141302,6 +142109,16 @@
"s3OutputPath"
]
},
+ "aws:sagemaker/HubS3StorageConfig:HubS3StorageConfig": {
+ "properties": {
+ "s3OutputPath": {
+ "type": "string",
+ "description": "The Amazon S3 bucket prefix for hosting hub content.interface.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/HumanTaskUIUiTemplate:HumanTaskUIUiTemplate": {
"properties": {
"content": {
@@ -141883,6 +142700,10 @@
},
"aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettings:SpaceSpaceSettingsCodeEditorAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagement:SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagement",
+ "description": "Settings that are used to configure and manage the lifecycle of JupyterLab applications in a space. See `app_lifecycle_management` Block below.\n"
+ },
"defaultResourceSpec": {
"$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsDefaultResourceSpec:SpaceSpaceSettingsCodeEditorAppSettingsDefaultResourceSpec",
"description": "The default instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance. See `default_resource_spec` Block below.\n"
@@ -141893,6 +142714,24 @@
"defaultResourceSpec"
]
},
+ "aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagement:SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. See `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:SpaceSpaceSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/SpaceSpaceSettingsCodeEditorAppSettingsDefaultResourceSpec:SpaceSpaceSettingsCodeEditorAppSettingsDefaultResourceSpec": {
"properties": {
"instanceType": {
@@ -141944,6 +142783,10 @@
},
"aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettings:SpaceSpaceSettingsJupyterLabAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement:SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement",
+ "description": "Settings that are used to configure and manage the lifecycle of JupyterLab applications in a space. See `app_lifecycle_management` Block below.\n"
+ },
"codeRepositories": {
"type": "array",
"items": {
@@ -141961,6 +142804,24 @@
"defaultResourceSpec"
]
},
+ "aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement:SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. See `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:SpaceSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/SpaceSpaceSettingsJupyterLabAppSettingsCodeRepository:SpaceSpaceSettingsJupyterLabAppSettingsCodeRepository": {
"properties": {
"repositoryUrl": {
@@ -142171,6 +143032,10 @@
},
"aws:sagemaker/UserProfileUserSettings:UserProfileUserSettings": {
"properties": {
+ "autoMountHomeEfs": {
+ "type": "string",
+ "description": "Indicates whether auto-mounting of an EFS volume is supported for the user profile. The `DefaultAsDomain` value is only supported for user profiles. Do not use the `DefaultAsDomain` value when setting this parameter for a domain. Valid values are: `Enabled`, `Disabled`, and `DefaultAsDomain`.\n"
+ },
"canvasAppSettings": {
"$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCanvasAppSettings:UserProfileUserSettingsCanvasAppSettings",
"description": "The Canvas app settings. See Canvas App Settings below.\n"
@@ -142253,6 +143118,7 @@
"language": {
"nodejs": {
"requiredOutputs": [
+ "autoMountHomeEfs",
"executionRole",
"spaceStorageSettings",
"studioWebPortal"
@@ -142266,6 +143132,10 @@
"$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsDirectDeploySettings:UserProfileUserSettingsCanvasAppSettingsDirectDeploySettings",
"description": "The model deployment settings for the SageMaker Canvas application. See Direct Deploy Settings below.\n"
},
+ "emrServerlessSettings": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsEmrServerlessSettings:UserProfileUserSettingsCanvasAppSettingsEmrServerlessSettings",
+ "description": "The settings for running Amazon EMR Serverless jobs in SageMaker Canvas. See `emr_serverless_settings` Block below.\n"
+ },
"generativeAiSettings": {
"$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsGenerativeAiSettings:UserProfileUserSettingsCanvasAppSettingsGenerativeAiSettings"
},
@@ -142304,6 +143174,19 @@
},
"type": "object"
},
+ "aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsEmrServerlessSettings:UserProfileUserSettingsCanvasAppSettingsEmrServerlessSettings": {
+ "properties": {
+ "executionRoleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) of the AWS IAM role that is assumed for running Amazon EMR Serverless jobs in SageMaker Canvas. This role should have the necessary permissions to read and write data attached and a trust relationship with EMR Serverless.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "Describes whether Amazon EMR Serverless job capabilities are enabled or disabled in the SageMaker Canvas application. Valid values are: `ENABLED` and `DISABLED`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/UserProfileUserSettingsCanvasAppSettingsGenerativeAiSettings:UserProfileUserSettingsCanvasAppSettingsGenerativeAiSettings": {
"properties": {
"amazonBedrockRoleArn": {
@@ -142382,6 +143265,14 @@
},
"aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettings:UserProfileUserSettingsCodeEditorAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagement:UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"customImages": {
"type": "array",
"items": {
@@ -142403,6 +143294,36 @@
},
"type": "object"
},
+ "aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagement:UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings:UserProfileUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/UserProfileUserSettingsCodeEditorAppSettingsCustomImage:UserProfileUserSettingsCodeEditorAppSettingsCustomImage": {
"properties": {
"appImageConfigName": {
@@ -142496,6 +143417,14 @@
},
"aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettings:UserProfileUserSettingsJupyterLabAppSettings": {
"properties": {
+ "appLifecycleManagement": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagement:UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagement",
+ "description": "Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.\n"
+ },
+ "builtInLifecycleConfigArn": {
+ "type": "string",
+ "description": "The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.\n"
+ },
"codeRepositories": {
"type": "array",
"items": {
@@ -142513,6 +143442,10 @@
"$ref": "#/types/aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsDefaultResourceSpec:UserProfileUserSettingsJupyterLabAppSettingsDefaultResourceSpec",
"description": "The default instance type and the Amazon Resource Name (ARN) of the SageMaker image created on the instance. see Default Resource Spec below.\n"
},
+ "emrSettings": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsEmrSettings:UserProfileUserSettingsJupyterLabAppSettingsEmrSettings",
+ "description": "The configuration parameters that specify the IAM roles assumed by the execution role of SageMaker (assumable roles) and the cluster instances or job execution environments (execution roles or runtime roles) to manage and access resources required for running Amazon EMR clusters or Amazon EMR Serverless applications. see `emr_settings` Block below.\n"
+ },
"lifecycleConfigArns": {
"type": "array",
"items": {
@@ -142523,6 +143456,36 @@
},
"type": "object"
},
+ "aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagement:UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagement": {
+ "properties": {
+ "idleSettings": {
+ "$ref": "#/types/aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings",
+ "description": "Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings:UserProfileUserSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettings": {
+ "properties": {
+ "idleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.\n"
+ },
+ "lifecycleManagement": {
+ "type": "string",
+ "description": "Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.\n"
+ },
+ "maxIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ },
+ "minIdleTimeoutInMinutes": {
+ "type": "integer",
+ "description": "The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsCodeRepository:UserProfileUserSettingsJupyterLabAppSettingsCodeRepository": {
"properties": {
"repositoryUrl": {
@@ -142581,6 +143544,25 @@
},
"type": "object"
},
+ "aws:sagemaker/UserProfileUserSettingsJupyterLabAppSettingsEmrSettings:UserProfileUserSettingsJupyterLabAppSettingsEmrSettings": {
+ "properties": {
+ "assumableRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles that the execution role of SageMaker can assume for performing operations or tasks related to Amazon EMR clusters or Amazon EMR Serverless applications. These roles define the permissions and access policies required when performing Amazon EMR-related operations, such as listing, connecting to, or terminating Amazon EMR clusters or Amazon EMR Serverless applications. They are typically used in cross-account access scenarios, where the Amazon EMR resources (clusters or serverless applications) are located in a different AWS account than the SageMaker domain.\n"
+ },
+ "executionRoleArns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "An array of Amazon Resource Names (ARNs) of the IAM roles used by the Amazon EMR cluster instances or job execution environments to access other AWS services and resources needed during the runtime of your Amazon EMR or Amazon EMR Serverless workloads, such as Amazon S3 for data access, Amazon CloudWatch for logging, or other AWS services based on the particular workload requirements.\n"
+ }
+ },
+ "type": "object"
+ },
"aws:sagemaker/UserProfileUserSettingsJupyterServerAppSettings:UserProfileUserSettingsJupyterServerAppSettings": {
"properties": {
"codeRepositories": {
@@ -142837,6 +143819,13 @@
},
"description": "The Applications supported in Studio that are hidden from the Studio left navigation pane.\n"
},
+ "hiddenInstanceTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The instance types you are hiding from the Studio user interface.\n"
+ },
"hiddenMlTools": {
"type": "array",
"items": {
@@ -150566,6 +151555,63 @@
}
}
},
+ "aws:ssm/getPatchBaselinesBaselineIdentity:getPatchBaselinesBaselineIdentity": {
+ "properties": {
+ "baselineDescription": {
+ "type": "string",
+ "description": "Description of the patch baseline.\n"
+ },
+ "baselineId": {
+ "type": "string",
+ "description": "ID of the patch baseline.\n"
+ },
+ "baselineName": {
+ "type": "string",
+ "description": "Name of the patch baseline.\n"
+ },
+ "defaultBaseline": {
+ "type": "boolean",
+ "description": "Indicates whether this is the default baseline. AWS Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system.\n"
+ },
+ "operatingSystem": {
+ "type": "string",
+ "description": "Operating system the patch baseline applies to.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "baselineDescription",
+ "baselineId",
+ "baselineName",
+ "defaultBaseline",
+ "operatingSystem"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "aws:ssm/getPatchBaselinesFilter:getPatchBaselinesFilter": {
+ "properties": {
+ "key": {
+ "type": "string",
+ "description": "Filter key. See the [AWS SSM documentation](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribePatchBaselines.html) for valid values.\n"
+ },
+ "values": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Filter values. See the [AWS SSM documentation](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribePatchBaselines.html) for example values.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "values"
+ ]
+ },
"aws:ssmcontacts/ContactChannelDeliveryAddress:ContactChannelDeliveryAddress": {
"properties": {
"simpleAddress": {
@@ -170263,6 +171309,10 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"required": [
@@ -170317,6 +171367,10 @@
"type": "string"
},
"description": "A 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.\n"
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"requiredInputs": [
@@ -170380,6 +171434,10 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"type": "object"
@@ -170655,6 +171713,10 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
"description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
@@ -170807,6 +171869,10 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
"description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
@@ -170946,6 +172012,10 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
"description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
@@ -205615,6 +206685,10 @@
"trafficRoutingConfig": {
"$ref": "#/types/aws:codedeploy/DeploymentConfigTrafficRoutingConfig:DeploymentConfigTrafficRoutingConfig",
"description": "A traffic_routing_config block. Traffic Routing Config is documented below.\n"
+ },
+ "zonalConfig": {
+ "$ref": "#/types/aws:codedeploy/DeploymentConfigZonalConfig:DeploymentConfigZonalConfig",
+ "description": "A zonal_config block. Zonal Config is documented below.\n"
}
},
"required": [
@@ -205642,6 +206716,11 @@
"$ref": "#/types/aws:codedeploy/DeploymentConfigTrafficRoutingConfig:DeploymentConfigTrafficRoutingConfig",
"description": "A traffic_routing_config block. Traffic Routing Config is documented below.\n",
"willReplaceOnChanges": true
+ },
+ "zonalConfig": {
+ "$ref": "#/types/aws:codedeploy/DeploymentConfigZonalConfig:DeploymentConfigZonalConfig",
+ "description": "A zonal_config block. Zonal Config is documented below.\n",
+ "willReplaceOnChanges": true
}
},
"stateInputs": {
@@ -205674,6 +206753,11 @@
"$ref": "#/types/aws:codedeploy/DeploymentConfigTrafficRoutingConfig:DeploymentConfigTrafficRoutingConfig",
"description": "A traffic_routing_config block. Traffic Routing Config is documented below.\n",
"willReplaceOnChanges": true
+ },
+ "zonalConfig": {
+ "$ref": "#/types/aws:codedeploy/DeploymentConfigZonalConfig:DeploymentConfigZonalConfig",
+ "description": "A zonal_config block. Zonal Config is documented below.\n",
+ "willReplaceOnChanges": true
}
},
"type": "object"
@@ -228190,22 +229274,32 @@
}
},
"aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination": {
- "description": "Enables a [Kinesis streaming destination](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html) for data replication of a DynamoDB table.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.dynamodb.Table(\"example\", {\n name: \"orders\",\n hashKey: \"id\",\n attributes: [{\n name: \"id\",\n type: \"S\",\n }],\n});\nconst exampleStream = new aws.kinesis.Stream(\"example\", {\n name: \"order_item_changes\",\n shardCount: 1,\n});\nconst exampleKinesisStreamingDestination = new aws.dynamodb.KinesisStreamingDestination(\"example\", {\n streamArn: exampleStream.arn,\n tableName: example.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.dynamodb.Table(\"example\",\n name=\"orders\",\n hash_key=\"id\",\n attributes=[{\n \"name\": \"id\",\n \"type\": \"S\",\n }])\nexample_stream = aws.kinesis.Stream(\"example\",\n name=\"order_item_changes\",\n shard_count=1)\nexample_kinesis_streaming_destination = aws.dynamodb.KinesisStreamingDestination(\"example\",\n stream_arn=example_stream.arn,\n table_name=example.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.DynamoDB.Table(\"example\", new()\n {\n Name = \"orders\",\n HashKey = \"id\",\n Attributes = new[]\n {\n new Aws.DynamoDB.Inputs.TableAttributeArgs\n {\n Name = \"id\",\n Type = \"S\",\n },\n },\n });\n\n var exampleStream = new Aws.Kinesis.Stream(\"example\", new()\n {\n Name = \"order_item_changes\",\n ShardCount = 1,\n });\n\n var exampleKinesisStreamingDestination = new Aws.DynamoDB.KinesisStreamingDestination(\"example\", new()\n {\n StreamArn = exampleStream.Arn,\n TableName = example.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/dynamodb\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := dynamodb.NewTable(ctx, \"example\", \u0026dynamodb.TableArgs{\n\t\t\tName: pulumi.String(\"orders\"),\n\t\t\tHashKey: pulumi.String(\"id\"),\n\t\t\tAttributes: dynamodb.TableAttributeArray{\n\t\t\t\t\u0026dynamodb.TableAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"id\"),\n\t\t\t\t\tType: pulumi.String(\"S\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleStream, err := kinesis.NewStream(ctx, \"example\", \u0026kinesis.StreamArgs{\n\t\t\tName: pulumi.String(\"order_item_changes\"),\n\t\t\tShardCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dynamodb.NewKinesisStreamingDestination(ctx, \"example\", \u0026dynamodb.KinesisStreamingDestinationArgs{\n\t\t\tStreamArn: exampleStream.Arn,\n\t\t\tTableName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dynamodb.Table;\nimport com.pulumi.aws.dynamodb.TableArgs;\nimport com.pulumi.aws.dynamodb.inputs.TableAttributeArgs;\nimport com.pulumi.aws.kinesis.Stream;\nimport com.pulumi.aws.kinesis.StreamArgs;\nimport com.pulumi.aws.dynamodb.KinesisStreamingDestination;\nimport com.pulumi.aws.dynamodb.KinesisStreamingDestinationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Table(\"example\", TableArgs.builder()\n .name(\"orders\")\n .hashKey(\"id\")\n .attributes(TableAttributeArgs.builder()\n .name(\"id\")\n .type(\"S\")\n .build())\n .build());\n\n var exampleStream = new Stream(\"exampleStream\", StreamArgs.builder()\n .name(\"order_item_changes\")\n .shardCount(1)\n .build());\n\n var exampleKinesisStreamingDestination = new KinesisStreamingDestination(\"exampleKinesisStreamingDestination\", KinesisStreamingDestinationArgs.builder()\n .streamArn(exampleStream.arn())\n .tableName(example.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:dynamodb:Table\n properties:\n name: orders\n hashKey: id\n attributes:\n - name: id\n type: S\n exampleStream:\n type: aws:kinesis:Stream\n name: example\n properties:\n name: order_item_changes\n shardCount: 1\n exampleKinesisStreamingDestination:\n type: aws:dynamodb:KinesisStreamingDestination\n name: example\n properties:\n streamArn: ${exampleStream.arn}\n tableName: ${example.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DynamoDB Kinesis Streaming Destinations using the `table_name` and `stream_arn` separated by `,`. For example:\n\n```sh\n$ pulumi import aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination example example,arn:aws:kinesis:us-east-1:111122223333:exampleStreamName\n```\n",
+ "description": "Enables a [Kinesis streaming destination](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html) for data replication of a DynamoDB table.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.dynamodb.Table(\"example\", {\n name: \"orders\",\n hashKey: \"id\",\n attributes: [{\n name: \"id\",\n type: \"S\",\n }],\n});\nconst exampleStream = new aws.kinesis.Stream(\"example\", {\n name: \"order_item_changes\",\n shardCount: 1,\n});\nconst exampleKinesisStreamingDestination = new aws.dynamodb.KinesisStreamingDestination(\"example\", {\n streamArn: exampleStream.arn,\n tableName: example.name,\n approximateCreationDateTimePrecision: \"MICROSECOND\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.dynamodb.Table(\"example\",\n name=\"orders\",\n hash_key=\"id\",\n attributes=[{\n \"name\": \"id\",\n \"type\": \"S\",\n }])\nexample_stream = aws.kinesis.Stream(\"example\",\n name=\"order_item_changes\",\n shard_count=1)\nexample_kinesis_streaming_destination = aws.dynamodb.KinesisStreamingDestination(\"example\",\n stream_arn=example_stream.arn,\n table_name=example.name,\n approximate_creation_date_time_precision=\"MICROSECOND\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.DynamoDB.Table(\"example\", new()\n {\n Name = \"orders\",\n HashKey = \"id\",\n Attributes = new[]\n {\n new Aws.DynamoDB.Inputs.TableAttributeArgs\n {\n Name = \"id\",\n Type = \"S\",\n },\n },\n });\n\n var exampleStream = new Aws.Kinesis.Stream(\"example\", new()\n {\n Name = \"order_item_changes\",\n ShardCount = 1,\n });\n\n var exampleKinesisStreamingDestination = new Aws.DynamoDB.KinesisStreamingDestination(\"example\", new()\n {\n StreamArn = exampleStream.Arn,\n TableName = example.Name,\n ApproximateCreationDateTimePrecision = \"MICROSECOND\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/dynamodb\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := dynamodb.NewTable(ctx, \"example\", \u0026dynamodb.TableArgs{\n\t\t\tName: pulumi.String(\"orders\"),\n\t\t\tHashKey: pulumi.String(\"id\"),\n\t\t\tAttributes: dynamodb.TableAttributeArray{\n\t\t\t\t\u0026dynamodb.TableAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"id\"),\n\t\t\t\t\tType: pulumi.String(\"S\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleStream, err := kinesis.NewStream(ctx, \"example\", \u0026kinesis.StreamArgs{\n\t\t\tName: pulumi.String(\"order_item_changes\"),\n\t\t\tShardCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dynamodb.NewKinesisStreamingDestination(ctx, \"example\", \u0026dynamodb.KinesisStreamingDestinationArgs{\n\t\t\tStreamArn: exampleStream.Arn,\n\t\t\tTableName: example.Name,\n\t\t\tApproximateCreationDateTimePrecision: pulumi.String(\"MICROSECOND\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.dynamodb.Table;\nimport com.pulumi.aws.dynamodb.TableArgs;\nimport com.pulumi.aws.dynamodb.inputs.TableAttributeArgs;\nimport com.pulumi.aws.kinesis.Stream;\nimport com.pulumi.aws.kinesis.StreamArgs;\nimport com.pulumi.aws.dynamodb.KinesisStreamingDestination;\nimport com.pulumi.aws.dynamodb.KinesisStreamingDestinationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Table(\"example\", TableArgs.builder()\n .name(\"orders\")\n .hashKey(\"id\")\n .attributes(TableAttributeArgs.builder()\n .name(\"id\")\n .type(\"S\")\n .build())\n .build());\n\n var exampleStream = new Stream(\"exampleStream\", StreamArgs.builder()\n .name(\"order_item_changes\")\n .shardCount(1)\n .build());\n\n var exampleKinesisStreamingDestination = new KinesisStreamingDestination(\"exampleKinesisStreamingDestination\", KinesisStreamingDestinationArgs.builder()\n .streamArn(exampleStream.arn())\n .tableName(example.name())\n .approximateCreationDateTimePrecision(\"MICROSECOND\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:dynamodb:Table\n properties:\n name: orders\n hashKey: id\n attributes:\n - name: id\n type: S\n exampleStream:\n type: aws:kinesis:Stream\n name: example\n properties:\n name: order_item_changes\n shardCount: 1\n exampleKinesisStreamingDestination:\n type: aws:dynamodb:KinesisStreamingDestination\n name: example\n properties:\n streamArn: ${exampleStream.arn}\n tableName: ${example.name}\n approximateCreationDateTimePrecision: MICROSECOND\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DynamoDB Kinesis Streaming Destinations using the `table_name` and `stream_arn` separated by `,`. For example:\n\n```sh\n$ pulumi import aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination example example,arn:aws:kinesis:us-east-1:111122223333:exampleStreamName\n```\n",
"properties": {
+ "approximateCreationDateTimePrecision": {
+ "type": "string",
+ "description": "Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.\n"
+ },
"streamArn": {
"type": "string",
"description": "The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.\n"
},
"tableName": {
"type": "string",
- "description": "The name of the DynamoDB table. There\ncan only be one Kinesis streaming destination for a given DynamoDB table.\n"
+ "description": "The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.\n"
}
},
"required": [
+ "approximateCreationDateTimePrecision",
"streamArn",
"tableName"
],
"inputProperties": {
+ "approximateCreationDateTimePrecision": {
+ "type": "string",
+ "description": "Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.\n",
+ "willReplaceOnChanges": true
+ },
"streamArn": {
"type": "string",
"description": "The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.\n",
@@ -228213,7 +229307,7 @@
},
"tableName": {
"type": "string",
- "description": "The name of the DynamoDB table. There\ncan only be one Kinesis streaming destination for a given DynamoDB table.\n",
+ "description": "The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.\n",
"willReplaceOnChanges": true
}
},
@@ -228224,6 +229318,11 @@
"stateInputs": {
"description": "Input properties used for looking up and filtering KinesisStreamingDestination resources.\n",
"properties": {
+ "approximateCreationDateTimePrecision": {
+ "type": "string",
+ "description": "Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.\n",
+ "willReplaceOnChanges": true
+ },
"streamArn": {
"type": "string",
"description": "The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.\n",
@@ -228231,7 +229330,7 @@
},
"tableName": {
"type": "string",
- "description": "The name of the DynamoDB table. There\ncan only be one Kinesis streaming destination for a given DynamoDB table.\n",
+ "description": "The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.\n",
"willReplaceOnChanges": true
}
},
@@ -254710,7 +255809,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n"
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.\n"
},
"engineVersion": {
"type": "string",
@@ -254881,7 +255980,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n",
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.\n",
"willReplaceOnChanges": true
},
"engineVersion": {
@@ -255044,7 +256143,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n",
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.\n",
"willReplaceOnChanges": true
},
"engineVersion": {
@@ -255177,7 +256276,7 @@
}
},
"aws:elasticache/globalReplicationGroup:GlobalReplicationGroup": {
- "description": "Provides an ElastiCache Global Replication Group resource, which manages replication between two or more Replication Groups in different regions. For more information, see the [ElastiCache User Guide](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html).\n\n## Example Usage\n\n### Global replication group with one secondary replication group\n\nThe global replication group depends on the primary group existing. Secondary replication groups depend on the global replication group. the provider dependency management will handle this transparently using resource value references.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"5.0.6\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"5.0.6\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id)\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"5.0.6\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"5.0.6\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: 5.0.6\n nodeType: cache.m5.large\n numCacheClusters: 1\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Managing Redis Engine Versions\n\nThe initial Redis version is determined by the version set on the primary replication group.\nHowever, once it is part of a Global Replication Group,\nthe Global Replication Group manages the version of all member replication groups.\n\nThe member replication groups must have `lifecycle.ignore_changes[engine_version]` set,\nor the provider will always return a diff.\n\nIn this example,\nthe primary replication group will be created with Redis 6.0,\nand then upgraded to Redis 6.2 once added to the Global Replication Group.\nThe secondary replication group will be created with Redis 6.2.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"6.0\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n engineVersion: \"6.2\",\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"6.0\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id,\n engine_version=\"6.2\")\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"6.0\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n EngineVersion = \"6.2\",\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"6.0\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t\tEngineVersion: pulumi.String(\"6.2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"6.0\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .engineVersion(\"6.2\")\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n engineVersion: '6.2'\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: '6.0'\n nodeType: cache.m5.large\n numCacheClusters: 1\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Global Replication Groups using the `global_replication_group_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/globalReplicationGroup:GlobalReplicationGroup my_global_replication_group okuqm-global-replication-group-1\n```\n",
+ "description": "Provides an ElastiCache Global Replication Group resource, which manages replication between two or more Replication Groups in different regions. For more information, see the [ElastiCache User Guide](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html).\n\n## Example Usage\n\n### Global replication group with one secondary replication group\n\nThe global replication group depends on the primary group existing. Secondary replication groups depend on the global replication group. the provider dependency management will handle this transparently using resource value references.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"5.0.6\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"5.0.6\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id)\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"5.0.6\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"5.0.6\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: 5.0.6\n nodeType: cache.m5.large\n numCacheClusters: 1\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Managing Redis OOS/Valkey Engine Versions\n\nThe initial Redis version is determined by the version set on the primary replication group.\nHowever, once it is part of a Global Replication Group,\nthe Global Replication Group manages the version of all member replication groups.\n\nThe member replication groups must have `lifecycle.ignore_changes[engine_version]` set,\nor the provider will always return a diff.\n\nIn this example,\nthe primary replication group will be created with Redis 6.0,\nand then upgraded to Redis 6.2 once added to the Global Replication Group.\nThe secondary replication group will be created with Redis 6.2.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"6.0\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n engineVersion: \"6.2\",\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"6.0\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id,\n engine_version=\"6.2\")\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"6.0\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n EngineVersion = \"6.2\",\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"6.0\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t\tEngineVersion: pulumi.String(\"6.2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"6.0\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .engineVersion(\"6.2\")\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n engineVersion: '6.2'\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: '6.0'\n nodeType: cache.m5.large\n numCacheClusters: 1\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Global Replication Groups using the `global_replication_group_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/globalReplicationGroup:GlobalReplicationGroup my_global_replication_group okuqm-global-replication-group-1\n```\n",
"properties": {
"arn": {
"type": "string",
@@ -255523,7 +256622,7 @@
}
},
"aws:elasticache/replicationGroup:ReplicationGroup": {
- "description": "Provides an ElastiCache Replication Group resource.\n\nFor working with a [Memcached cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) or a\n[single-node Redis instance (Cluster Mode Disabled)](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html),\nsee the `aws.elasticache.Cluster` resource.\n\n\u003e **Note:** When you change an attribute, such as `engine_version`, by\ndefault the ElastiCache API applies it in the next maintenance window. Because\nof this, this provider may report a difference in its planning phase because the\nactual modification has not yet taken place. You can use the\n`apply_immediately` flag to instruct the service to apply the change\nimmediately. Using `apply_immediately` can result in a brief downtime as\nservers reboots.\nSee the AWS Documentation on\n[Modifying an ElastiCache Cache Cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Modify.html)\nfor more information.\n\n\u003e **Note:** Any attribute changes that re-create the resource will be applied immediately, regardless of the value of `apply_immediately`.\n\n\u003e **Note:** Be aware of the terminology collision around \"cluster\" for `aws.elasticache.ReplicationGroup`. For example, it is possible to create a [\"Cluster Mode Disabled [Redis] Cluster\"](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Create.CON.Redis.html). With \"Cluster Mode Enabled\", the data will be stored in shards (called \"node groups\"). See [Redis Cluster Configuration](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/cluster-create-determine-requirements.html#redis-cluster-configuration) for a diagram of the differences. To enable cluster mode, use a parameter group that has cluster mode enabled. The default parameter groups provided by AWS end with \".cluster.on\", for example `default.redis6.x.cluster.on`.\n\n## Example Usage\n\n### Redis Cluster Mode Disabled\n\nTo create a single shard primary with single read replica:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n automaticFailoverEnabled: true,\n preferredCacheClusterAzs: [\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replicationGroupId: \"tf-rep-group-1\",\n description: \"example description\",\n nodeType: \"cache.m4.large\",\n numCacheClusters: 2,\n parameterGroupName: \"default.redis3.2\",\n port: 6379,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n automatic_failover_enabled=True,\n preferred_cache_cluster_azs=[\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replication_group_id=\"tf-rep-group-1\",\n description=\"example description\",\n node_type=\"cache.m4.large\",\n num_cache_clusters=2,\n parameter_group_name=\"default.redis3.2\",\n port=6379)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n AutomaticFailoverEnabled = true,\n PreferredCacheClusterAzs = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n },\n ReplicationGroupId = \"tf-rep-group-1\",\n Description = \"example description\",\n NodeType = \"cache.m4.large\",\n NumCacheClusters = 2,\n ParameterGroupName = \"default.redis3.2\",\n Port = 6379,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tPreferredCacheClusterAzs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t},\n\t\t\tReplicationGroupId: pulumi.String(\"tf-rep-group-1\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.m4.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(2),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .automaticFailoverEnabled(true)\n .preferredCacheClusterAzs( \n \"us-west-2a\",\n \"us-west-2b\")\n .replicationGroupId(\"tf-rep-group-1\")\n .description(\"example description\")\n .nodeType(\"cache.m4.large\")\n .numCacheClusters(2)\n .parameterGroupName(\"default.redis3.2\")\n .port(6379)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n automaticFailoverEnabled: true\n preferredCacheClusterAzs:\n - us-west-2a\n - us-west-2b\n replicationGroupId: tf-rep-group-1\n description: example description\n nodeType: cache.m4.large\n numCacheClusters: 2\n parameterGroupName: default.redis3.2\n port: 6379\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou have two options for adjusting the number of replicas:\n\n* Adjusting `num_cache_clusters` directly. This will attempt to automatically add or remove replicas, but provides no granular control (e.g., preferred availability zone, cache cluster ID) for the added or removed replicas. This also currently expects cache cluster IDs in the form of `replication_group_id-00#`.\n* Otherwise for fine grained control of the underlying cache clusters, they can be added or removed with the `aws.elasticache.Cluster` resource and its `replication_group_id` attribute. In this situation, you will need to utilize [`ignoreChanges`](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to prevent perpetual differences with the `number_cache_cluster` attribute.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n automaticFailoverEnabled: true,\n preferredCacheClusterAzs: [\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replicationGroupId: \"tf-rep-group-1\",\n description: \"example description\",\n nodeType: \"cache.m4.large\",\n numCacheClusters: 2,\n parameterGroupName: \"default.redis3.2\",\n port: 6379,\n});\nconst replica: aws.elasticache.Cluster[] = [];\nfor (const range = {value: 0}; range.value \u003c 1; range.value++) {\n replica.push(new aws.elasticache.Cluster(`replica-${range.value}`, {\n clusterId: `tf-rep-group-1-${range.value}`,\n replicationGroupId: example.id,\n }));\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n automatic_failover_enabled=True,\n preferred_cache_cluster_azs=[\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replication_group_id=\"tf-rep-group-1\",\n description=\"example description\",\n node_type=\"cache.m4.large\",\n num_cache_clusters=2,\n parameter_group_name=\"default.redis3.2\",\n port=6379)\nreplica = []\nfor range in [{\"value\": i} for i in range(0, 1)]:\n replica.append(aws.elasticache.Cluster(f\"replica-{range['value']}\",\n cluster_id=f\"tf-rep-group-1-{range['value']}\",\n replication_group_id=example.id))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n AutomaticFailoverEnabled = true,\n PreferredCacheClusterAzs = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n },\n ReplicationGroupId = \"tf-rep-group-1\",\n Description = \"example description\",\n NodeType = \"cache.m4.large\",\n NumCacheClusters = 2,\n ParameterGroupName = \"default.redis3.2\",\n Port = 6379,\n });\n\n var replica = new List\u003cAws.ElastiCache.Cluster\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c 1; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n replica.Add(new Aws.ElastiCache.Cluster($\"replica-{range.Value}\", new()\n {\n ClusterId = $\"tf-rep-group-1-{range.Value}\",\n ReplicationGroupId = example.Id,\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tPreferredCacheClusterAzs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t},\n\t\t\tReplicationGroupId: pulumi.String(\"tf-rep-group-1\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.m4.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(2),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar replica []*elasticache.Cluster\n\t\tfor index := 0; index \u003c 1; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := elasticache.NewCluster(ctx, fmt.Sprintf(\"replica-%v\", key0), \u0026elasticache.ClusterArgs{\n\t\t\t\tClusterId: pulumi.Sprintf(\"tf-rep-group-1-%v\", val0),\n\t\t\t\tReplicationGroupId: example.ID(),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treplica = append(replica, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.Cluster;\nimport com.pulumi.aws.elasticache.ClusterArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .automaticFailoverEnabled(true)\n .preferredCacheClusterAzs( \n \"us-west-2a\",\n \"us-west-2b\")\n .replicationGroupId(\"tf-rep-group-1\")\n .description(\"example description\")\n .nodeType(\"cache.m4.large\")\n .numCacheClusters(2)\n .parameterGroupName(\"default.redis3.2\")\n .port(6379)\n .build());\n\n for (var i = 0; i \u003c 1; i++) {\n new Cluster(\"replica-\" + i, ClusterArgs.builder()\n .clusterId(String.format(\"tf-rep-group-1-%s\", range.value()))\n .replicationGroupId(example.id())\n .build());\n\n \n}\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n automaticFailoverEnabled: true\n preferredCacheClusterAzs:\n - us-west-2a\n - us-west-2b\n replicationGroupId: tf-rep-group-1\n description: example description\n nodeType: cache.m4.large\n numCacheClusters: 2\n parameterGroupName: default.redis3.2\n port: 6379\n replica:\n type: aws:elasticache:Cluster\n properties:\n clusterId: tf-rep-group-1-${range.value}\n replicationGroupId: ${example.id}\n options: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis Cluster Mode Enabled\n\nTo create two shards with a primary and a single read replica each:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst baz = new aws.elasticache.ReplicationGroup(\"baz\", {\n replicationGroupId: \"tf-redis-cluster\",\n description: \"example description\",\n nodeType: \"cache.t2.small\",\n port: 6379,\n parameterGroupName: \"default.redis3.2.cluster.on\",\n automaticFailoverEnabled: true,\n numNodeGroups: 2,\n replicasPerNodeGroup: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbaz = aws.elasticache.ReplicationGroup(\"baz\",\n replication_group_id=\"tf-redis-cluster\",\n description=\"example description\",\n node_type=\"cache.t2.small\",\n port=6379,\n parameter_group_name=\"default.redis3.2.cluster.on\",\n automatic_failover_enabled=True,\n num_node_groups=2,\n replicas_per_node_group=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var baz = new Aws.ElastiCache.ReplicationGroup(\"baz\", new()\n {\n ReplicationGroupId = \"tf-redis-cluster\",\n Description = \"example description\",\n NodeType = \"cache.t2.small\",\n Port = 6379,\n ParameterGroupName = \"default.redis3.2.cluster.on\",\n AutomaticFailoverEnabled = true,\n NumNodeGroups = 2,\n ReplicasPerNodeGroup = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"baz\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"tf-redis-cluster\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.t2.small\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2.cluster.on\"),\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tNumNodeGroups: pulumi.Int(2),\n\t\t\tReplicasPerNodeGroup: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var baz = new ReplicationGroup(\"baz\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"tf-redis-cluster\")\n .description(\"example description\")\n .nodeType(\"cache.t2.small\")\n .port(6379)\n .parameterGroupName(\"default.redis3.2.cluster.on\")\n .automaticFailoverEnabled(true)\n .numNodeGroups(2)\n .replicasPerNodeGroup(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n baz:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: tf-redis-cluster\n description: example description\n nodeType: cache.t2.small\n port: 6379\n parameterGroupName: default.redis3.2.cluster.on\n automaticFailoverEnabled: true\n numNodeGroups: 2\n replicasPerNodeGroup: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis Log Delivery configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.elasticache.ReplicationGroup(\"test\", {\n replicationGroupId: \"myreplicaciongroup\",\n description: \"test description\",\n nodeType: \"cache.t3.small\",\n port: 6379,\n applyImmediately: true,\n autoMinorVersionUpgrade: false,\n maintenanceWindow: \"tue:06:30-tue:07:30\",\n snapshotWindow: \"01:00-02:00\",\n logDeliveryConfigurations: [\n {\n destination: example.name,\n destinationType: \"cloudwatch-logs\",\n logFormat: \"text\",\n logType: \"slow-log\",\n },\n {\n destination: exampleAwsKinesisFirehoseDeliveryStream.name,\n destinationType: \"kinesis-firehose\",\n logFormat: \"json\",\n logType: \"engine-log\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.elasticache.ReplicationGroup(\"test\",\n replication_group_id=\"myreplicaciongroup\",\n description=\"test description\",\n node_type=\"cache.t3.small\",\n port=6379,\n apply_immediately=True,\n auto_minor_version_upgrade=False,\n maintenance_window=\"tue:06:30-tue:07:30\",\n snapshot_window=\"01:00-02:00\",\n log_delivery_configurations=[\n {\n \"destination\": example[\"name\"],\n \"destination_type\": \"cloudwatch-logs\",\n \"log_format\": \"text\",\n \"log_type\": \"slow-log\",\n },\n {\n \"destination\": example_aws_kinesis_firehose_delivery_stream[\"name\"],\n \"destination_type\": \"kinesis-firehose\",\n \"log_format\": \"json\",\n \"log_type\": \"engine-log\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.ElastiCache.ReplicationGroup(\"test\", new()\n {\n ReplicationGroupId = \"myreplicaciongroup\",\n Description = \"test description\",\n NodeType = \"cache.t3.small\",\n Port = 6379,\n ApplyImmediately = true,\n AutoMinorVersionUpgrade = false,\n MaintenanceWindow = \"tue:06:30-tue:07:30\",\n SnapshotWindow = \"01:00-02:00\",\n LogDeliveryConfigurations = new[]\n {\n new Aws.ElastiCache.Inputs.ReplicationGroupLogDeliveryConfigurationArgs\n {\n Destination = example.Name,\n DestinationType = \"cloudwatch-logs\",\n LogFormat = \"text\",\n LogType = \"slow-log\",\n },\n new Aws.ElastiCache.Inputs.ReplicationGroupLogDeliveryConfigurationArgs\n {\n Destination = exampleAwsKinesisFirehoseDeliveryStream.Name,\n DestinationType = \"kinesis-firehose\",\n LogFormat = \"json\",\n LogType = \"engine-log\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"test\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"myreplicaciongroup\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tNodeType: pulumi.String(\"cache.t3.small\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tApplyImmediately: pulumi.Bool(true),\n\t\t\tAutoMinorVersionUpgrade: pulumi.Bool(false),\n\t\t\tMaintenanceWindow: pulumi.String(\"tue:06:30-tue:07:30\"),\n\t\t\tSnapshotWindow: pulumi.String(\"01:00-02:00\"),\n\t\t\tLogDeliveryConfigurations: elasticache.ReplicationGroupLogDeliveryConfigurationArray{\n\t\t\t\t\u0026elasticache.ReplicationGroupLogDeliveryConfigurationArgs{\n\t\t\t\t\tDestination: pulumi.Any(example.Name),\n\t\t\t\t\tDestinationType: pulumi.String(\"cloudwatch-logs\"),\n\t\t\t\t\tLogFormat: pulumi.String(\"text\"),\n\t\t\t\t\tLogType: pulumi.String(\"slow-log\"),\n\t\t\t\t},\n\t\t\t\t\u0026elasticache.ReplicationGroupLogDeliveryConfigurationArgs{\n\t\t\t\t\tDestination: pulumi.Any(exampleAwsKinesisFirehoseDeliveryStream.Name),\n\t\t\t\t\tDestinationType: pulumi.String(\"kinesis-firehose\"),\n\t\t\t\t\tLogFormat: pulumi.String(\"json\"),\n\t\t\t\t\tLogType: pulumi.String(\"engine-log\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.inputs.ReplicationGroupLogDeliveryConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new ReplicationGroup(\"test\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"myreplicaciongroup\")\n .description(\"test description\")\n .nodeType(\"cache.t3.small\")\n .port(6379)\n .applyImmediately(true)\n .autoMinorVersionUpgrade(false)\n .maintenanceWindow(\"tue:06:30-tue:07:30\")\n .snapshotWindow(\"01:00-02:00\")\n .logDeliveryConfigurations( \n ReplicationGroupLogDeliveryConfigurationArgs.builder()\n .destination(example.name())\n .destinationType(\"cloudwatch-logs\")\n .logFormat(\"text\")\n .logType(\"slow-log\")\n .build(),\n ReplicationGroupLogDeliveryConfigurationArgs.builder()\n .destination(exampleAwsKinesisFirehoseDeliveryStream.name())\n .destinationType(\"kinesis-firehose\")\n .logFormat(\"json\")\n .logType(\"engine-log\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: myreplicaciongroup\n description: test description\n nodeType: cache.t3.small\n port: 6379\n applyImmediately: true\n autoMinorVersionUpgrade: false\n maintenanceWindow: tue:06:30-tue:07:30\n snapshotWindow: 01:00-02:00\n logDeliveryConfigurations:\n - destination: ${example.name}\n destinationType: cloudwatch-logs\n logFormat: text\n logType: slow-log\n - destination: ${exampleAwsKinesisFirehoseDeliveryStream.name}\n destinationType: kinesis-firehose\n logFormat: json\n logType: engine-log\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** We currently do not support passing a `primary_cluster_id` in order to create the Replication Group.\n\n\u003e **Note:** Automatic Failover is unavailable for Redis versions earlier than 2.8.6,\nand unavailable on T1 node types. For T2 node types, it is only available on Redis version 3.2.4 or later with cluster mode enabled. See the [High Availability Using Replication Groups](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Replication.html) guide\nfor full details on using Replication Groups.\n\n### Creating a secondary replication group for a global replication group\n\nA Global Replication Group can have one one two secondary Replication Groups in different regions. These are added to an existing Global Replication Group.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"5.0.6\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"5.0.6\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id)\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"5.0.6\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"5.0.6\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: 5.0.6\n nodeType: cache.m5.large\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis AUTH and In-Transit Encryption Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n replicationGroupId: \"example\",\n description: \"example with authentication\",\n nodeType: \"cache.t2.micro\",\n numCacheClusters: 1,\n port: 6379,\n subnetGroupName: exampleAwsElasticacheSubnetGroup.name,\n securityGroupIds: [exampleAwsSecurityGroup.id],\n parameterGroupName: \"default.redis5.0\",\n engineVersion: \"5.0.6\",\n transitEncryptionEnabled: true,\n authToken: \"abcdefgh1234567890\",\n authTokenUpdateStrategy: \"ROTATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n replication_group_id=\"example\",\n description=\"example with authentication\",\n node_type=\"cache.t2.micro\",\n num_cache_clusters=1,\n port=6379,\n subnet_group_name=example_aws_elasticache_subnet_group[\"name\"],\n security_group_ids=[example_aws_security_group[\"id\"]],\n parameter_group_name=\"default.redis5.0\",\n engine_version=\"5.0.6\",\n transit_encryption_enabled=True,\n auth_token=\"abcdefgh1234567890\",\n auth_token_update_strategy=\"ROTATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n ReplicationGroupId = \"example\",\n Description = \"example with authentication\",\n NodeType = \"cache.t2.micro\",\n NumCacheClusters = 1,\n Port = 6379,\n SubnetGroupName = exampleAwsElasticacheSubnetGroup.Name,\n SecurityGroupIds = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n ParameterGroupName = \"default.redis5.0\",\n EngineVersion = \"5.0.6\",\n TransitEncryptionEnabled = true,\n AuthToken = \"abcdefgh1234567890\",\n AuthTokenUpdateStrategy = \"ROTATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example\"),\n\t\t\tDescription: pulumi.String(\"example with authentication\"),\n\t\t\tNodeType: pulumi.String(\"cache.t2.micro\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tSubnetGroupName: pulumi.Any(exampleAwsElasticacheSubnetGroup.Name),\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t},\n\t\t\tParameterGroupName: pulumi.String(\"default.redis5.0\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tTransitEncryptionEnabled: pulumi.Bool(true),\n\t\t\tAuthToken: pulumi.String(\"abcdefgh1234567890\"),\n\t\t\tAuthTokenUpdateStrategy: pulumi.String(\"ROTATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example\")\n .description(\"example with authentication\")\n .nodeType(\"cache.t2.micro\")\n .numCacheClusters(1)\n .port(6379)\n .subnetGroupName(exampleAwsElasticacheSubnetGroup.name())\n .securityGroupIds(exampleAwsSecurityGroup.id())\n .parameterGroupName(\"default.redis5.0\")\n .engineVersion(\"5.0.6\")\n .transitEncryptionEnabled(true)\n .authToken(\"abcdefgh1234567890\")\n .authTokenUpdateStrategy(\"ROTATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example\n description: example with authentication\n nodeType: cache.t2.micro\n numCacheClusters: 1\n port: 6379\n subnetGroupName: ${exampleAwsElasticacheSubnetGroup.name}\n securityGroupIds:\n - ${exampleAwsSecurityGroup.id}\n parameterGroupName: default.redis5.0\n engineVersion: 5.0.6\n transitEncryptionEnabled: true\n authToken: abcdefgh1234567890\n authTokenUpdateStrategy: ROTATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e When adding a new `auth_token` to a previously passwordless replication group, using the `ROTATE` update strategy will result in support for **both** the new token and passwordless authentication. To immediately require authorization when adding the initial token, use the `SET` strategy instead. See the [Authenticating with the Redis AUTH command](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html) guide for additional details.\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Replication Groups using the `replication_group_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/replicationGroup:ReplicationGroup my_replication_group replication-group-1\n```\n",
+ "description": "Provides an ElastiCache Replication Group resource.\n\nFor working with a [Memcached cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) or a\n[single-node Redis instance (Cluster Mode Disabled)](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html),\nsee the `aws.elasticache.Cluster` resource.\n\n\u003e **Note:** When you change an attribute, such as `engine_version`, by\ndefault the ElastiCache API applies it in the next maintenance window. Because\nof this, this provider may report a difference in its planning phase because the\nactual modification has not yet taken place. You can use the\n`apply_immediately` flag to instruct the service to apply the change\nimmediately. Using `apply_immediately` can result in a brief downtime as\nservers reboots.\nSee the AWS Documentation on\n[Modifying an ElastiCache Cache Cluster](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Modify.html)\nfor more information.\n\n\u003e **Note:** Any attribute changes that re-create the resource will be applied immediately, regardless of the value of `apply_immediately`.\n\n\u003e **Note:** Be aware of the terminology collision around \"cluster\" for `aws.elasticache.ReplicationGroup`. For example, it is possible to create a [\"Cluster Mode Disabled [Redis] Cluster\"](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Create.CON.Redis.html). With \"Cluster Mode Enabled\", the data will be stored in shards (called \"node groups\"). See [Redis Cluster Configuration](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/cluster-create-determine-requirements.html#redis-cluster-configuration) for a diagram of the differences. To enable cluster mode, use a parameter group that has cluster mode enabled. The default parameter groups provided by AWS end with \".cluster.on\", for example `default.redis6.x.cluster.on`.\n\n## Example Usage\n\n### Redis OSS/Valkey Cluster Mode Disabled\n\nTo create a single shard primary with single read replica:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n automaticFailoverEnabled: true,\n preferredCacheClusterAzs: [\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replicationGroupId: \"tf-rep-group-1\",\n description: \"example description\",\n nodeType: \"cache.m4.large\",\n numCacheClusters: 2,\n parameterGroupName: \"default.redis3.2\",\n port: 6379,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n automatic_failover_enabled=True,\n preferred_cache_cluster_azs=[\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replication_group_id=\"tf-rep-group-1\",\n description=\"example description\",\n node_type=\"cache.m4.large\",\n num_cache_clusters=2,\n parameter_group_name=\"default.redis3.2\",\n port=6379)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n AutomaticFailoverEnabled = true,\n PreferredCacheClusterAzs = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n },\n ReplicationGroupId = \"tf-rep-group-1\",\n Description = \"example description\",\n NodeType = \"cache.m4.large\",\n NumCacheClusters = 2,\n ParameterGroupName = \"default.redis3.2\",\n Port = 6379,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tPreferredCacheClusterAzs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t},\n\t\t\tReplicationGroupId: pulumi.String(\"tf-rep-group-1\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.m4.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(2),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .automaticFailoverEnabled(true)\n .preferredCacheClusterAzs( \n \"us-west-2a\",\n \"us-west-2b\")\n .replicationGroupId(\"tf-rep-group-1\")\n .description(\"example description\")\n .nodeType(\"cache.m4.large\")\n .numCacheClusters(2)\n .parameterGroupName(\"default.redis3.2\")\n .port(6379)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n automaticFailoverEnabled: true\n preferredCacheClusterAzs:\n - us-west-2a\n - us-west-2b\n replicationGroupId: tf-rep-group-1\n description: example description\n nodeType: cache.m4.large\n numCacheClusters: 2\n parameterGroupName: default.redis3.2\n port: 6379\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou have two options for adjusting the number of replicas:\n\n* Adjusting `num_cache_clusters` directly. This will attempt to automatically add or remove replicas, but provides no granular control (e.g., preferred availability zone, cache cluster ID) for the added or removed replicas. This also currently expects cache cluster IDs in the form of `replication_group_id-00#`.\n* Otherwise for fine grained control of the underlying cache clusters, they can be added or removed with the `aws.elasticache.Cluster` resource and its `replication_group_id` attribute. In this situation, you will need to utilize [`ignoreChanges`](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to prevent perpetual differences with the `number_cache_cluster` attribute.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n automaticFailoverEnabled: true,\n preferredCacheClusterAzs: [\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replicationGroupId: \"tf-rep-group-1\",\n description: \"example description\",\n nodeType: \"cache.m4.large\",\n numCacheClusters: 2,\n parameterGroupName: \"default.redis3.2\",\n port: 6379,\n});\nconst replica: aws.elasticache.Cluster[] = [];\nfor (const range = {value: 0}; range.value \u003c 1; range.value++) {\n replica.push(new aws.elasticache.Cluster(`replica-${range.value}`, {\n clusterId: `tf-rep-group-1-${range.value}`,\n replicationGroupId: example.id,\n }));\n}\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n automatic_failover_enabled=True,\n preferred_cache_cluster_azs=[\n \"us-west-2a\",\n \"us-west-2b\",\n ],\n replication_group_id=\"tf-rep-group-1\",\n description=\"example description\",\n node_type=\"cache.m4.large\",\n num_cache_clusters=2,\n parameter_group_name=\"default.redis3.2\",\n port=6379)\nreplica = []\nfor range in [{\"value\": i} for i in range(0, 1)]:\n replica.append(aws.elasticache.Cluster(f\"replica-{range['value']}\",\n cluster_id=f\"tf-rep-group-1-{range['value']}\",\n replication_group_id=example.id))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n AutomaticFailoverEnabled = true,\n PreferredCacheClusterAzs = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n },\n ReplicationGroupId = \"tf-rep-group-1\",\n Description = \"example description\",\n NodeType = \"cache.m4.large\",\n NumCacheClusters = 2,\n ParameterGroupName = \"default.redis3.2\",\n Port = 6379,\n });\n\n var replica = new List\u003cAws.ElastiCache.Cluster\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c 1; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n replica.Add(new Aws.ElastiCache.Cluster($\"replica-{range.Value}\", new()\n {\n ClusterId = $\"tf-rep-group-1-{range.Value}\",\n ReplicationGroupId = example.Id,\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tPreferredCacheClusterAzs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t},\n\t\t\tReplicationGroupId: pulumi.String(\"tf-rep-group-1\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.m4.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(2),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar replica []*elasticache.Cluster\n\t\tfor index := 0; index \u003c 1; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := elasticache.NewCluster(ctx, fmt.Sprintf(\"replica-%v\", key0), \u0026elasticache.ClusterArgs{\n\t\t\t\tClusterId: pulumi.Sprintf(\"tf-rep-group-1-%v\", val0),\n\t\t\t\tReplicationGroupId: example.ID(),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treplica = append(replica, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.Cluster;\nimport com.pulumi.aws.elasticache.ClusterArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .automaticFailoverEnabled(true)\n .preferredCacheClusterAzs( \n \"us-west-2a\",\n \"us-west-2b\")\n .replicationGroupId(\"tf-rep-group-1\")\n .description(\"example description\")\n .nodeType(\"cache.m4.large\")\n .numCacheClusters(2)\n .parameterGroupName(\"default.redis3.2\")\n .port(6379)\n .build());\n\n for (var i = 0; i \u003c 1; i++) {\n new Cluster(\"replica-\" + i, ClusterArgs.builder()\n .clusterId(String.format(\"tf-rep-group-1-%s\", range.value()))\n .replicationGroupId(example.id())\n .build());\n\n \n}\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n automaticFailoverEnabled: true\n preferredCacheClusterAzs:\n - us-west-2a\n - us-west-2b\n replicationGroupId: tf-rep-group-1\n description: example description\n nodeType: cache.m4.large\n numCacheClusters: 2\n parameterGroupName: default.redis3.2\n port: 6379\n replica:\n type: aws:elasticache:Cluster\n properties:\n clusterId: tf-rep-group-1-${range.value}\n replicationGroupId: ${example.id}\n options: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis OSS/Valkey Cluster Mode Enabled\n\nTo create two shards with a primary and a single read replica each:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst baz = new aws.elasticache.ReplicationGroup(\"baz\", {\n replicationGroupId: \"tf-redis-cluster\",\n description: \"example description\",\n nodeType: \"cache.t2.small\",\n port: 6379,\n parameterGroupName: \"default.redis3.2.cluster.on\",\n automaticFailoverEnabled: true,\n numNodeGroups: 2,\n replicasPerNodeGroup: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbaz = aws.elasticache.ReplicationGroup(\"baz\",\n replication_group_id=\"tf-redis-cluster\",\n description=\"example description\",\n node_type=\"cache.t2.small\",\n port=6379,\n parameter_group_name=\"default.redis3.2.cluster.on\",\n automatic_failover_enabled=True,\n num_node_groups=2,\n replicas_per_node_group=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var baz = new Aws.ElastiCache.ReplicationGroup(\"baz\", new()\n {\n ReplicationGroupId = \"tf-redis-cluster\",\n Description = \"example description\",\n NodeType = \"cache.t2.small\",\n Port = 6379,\n ParameterGroupName = \"default.redis3.2.cluster.on\",\n AutomaticFailoverEnabled = true,\n NumNodeGroups = 2,\n ReplicasPerNodeGroup = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"baz\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"tf-redis-cluster\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tNodeType: pulumi.String(\"cache.t2.small\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tParameterGroupName: pulumi.String(\"default.redis3.2.cluster.on\"),\n\t\t\tAutomaticFailoverEnabled: pulumi.Bool(true),\n\t\t\tNumNodeGroups: pulumi.Int(2),\n\t\t\tReplicasPerNodeGroup: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var baz = new ReplicationGroup(\"baz\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"tf-redis-cluster\")\n .description(\"example description\")\n .nodeType(\"cache.t2.small\")\n .port(6379)\n .parameterGroupName(\"default.redis3.2.cluster.on\")\n .automaticFailoverEnabled(true)\n .numNodeGroups(2)\n .replicasPerNodeGroup(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n baz:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: tf-redis-cluster\n description: example description\n nodeType: cache.t2.small\n port: 6379\n parameterGroupName: default.redis3.2.cluster.on\n automaticFailoverEnabled: true\n numNodeGroups: 2\n replicasPerNodeGroup: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis Log Delivery configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.elasticache.ReplicationGroup(\"test\", {\n replicationGroupId: \"myreplicaciongroup\",\n description: \"test description\",\n nodeType: \"cache.t3.small\",\n port: 6379,\n applyImmediately: true,\n autoMinorVersionUpgrade: false,\n maintenanceWindow: \"tue:06:30-tue:07:30\",\n snapshotWindow: \"01:00-02:00\",\n logDeliveryConfigurations: [\n {\n destination: example.name,\n destinationType: \"cloudwatch-logs\",\n logFormat: \"text\",\n logType: \"slow-log\",\n },\n {\n destination: exampleAwsKinesisFirehoseDeliveryStream.name,\n destinationType: \"kinesis-firehose\",\n logFormat: \"json\",\n logType: \"engine-log\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.elasticache.ReplicationGroup(\"test\",\n replication_group_id=\"myreplicaciongroup\",\n description=\"test description\",\n node_type=\"cache.t3.small\",\n port=6379,\n apply_immediately=True,\n auto_minor_version_upgrade=False,\n maintenance_window=\"tue:06:30-tue:07:30\",\n snapshot_window=\"01:00-02:00\",\n log_delivery_configurations=[\n {\n \"destination\": example[\"name\"],\n \"destination_type\": \"cloudwatch-logs\",\n \"log_format\": \"text\",\n \"log_type\": \"slow-log\",\n },\n {\n \"destination\": example_aws_kinesis_firehose_delivery_stream[\"name\"],\n \"destination_type\": \"kinesis-firehose\",\n \"log_format\": \"json\",\n \"log_type\": \"engine-log\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.ElastiCache.ReplicationGroup(\"test\", new()\n {\n ReplicationGroupId = \"myreplicaciongroup\",\n Description = \"test description\",\n NodeType = \"cache.t3.small\",\n Port = 6379,\n ApplyImmediately = true,\n AutoMinorVersionUpgrade = false,\n MaintenanceWindow = \"tue:06:30-tue:07:30\",\n SnapshotWindow = \"01:00-02:00\",\n LogDeliveryConfigurations = new[]\n {\n new Aws.ElastiCache.Inputs.ReplicationGroupLogDeliveryConfigurationArgs\n {\n Destination = example.Name,\n DestinationType = \"cloudwatch-logs\",\n LogFormat = \"text\",\n LogType = \"slow-log\",\n },\n new Aws.ElastiCache.Inputs.ReplicationGroupLogDeliveryConfigurationArgs\n {\n Destination = exampleAwsKinesisFirehoseDeliveryStream.Name,\n DestinationType = \"kinesis-firehose\",\n LogFormat = \"json\",\n LogType = \"engine-log\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"test\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"myreplicaciongroup\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tNodeType: pulumi.String(\"cache.t3.small\"),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tApplyImmediately: pulumi.Bool(true),\n\t\t\tAutoMinorVersionUpgrade: pulumi.Bool(false),\n\t\t\tMaintenanceWindow: pulumi.String(\"tue:06:30-tue:07:30\"),\n\t\t\tSnapshotWindow: pulumi.String(\"01:00-02:00\"),\n\t\t\tLogDeliveryConfigurations: elasticache.ReplicationGroupLogDeliveryConfigurationArray{\n\t\t\t\t\u0026elasticache.ReplicationGroupLogDeliveryConfigurationArgs{\n\t\t\t\t\tDestination: pulumi.Any(example.Name),\n\t\t\t\t\tDestinationType: pulumi.String(\"cloudwatch-logs\"),\n\t\t\t\t\tLogFormat: pulumi.String(\"text\"),\n\t\t\t\t\tLogType: pulumi.String(\"slow-log\"),\n\t\t\t\t},\n\t\t\t\t\u0026elasticache.ReplicationGroupLogDeliveryConfigurationArgs{\n\t\t\t\t\tDestination: pulumi.Any(exampleAwsKinesisFirehoseDeliveryStream.Name),\n\t\t\t\t\tDestinationType: pulumi.String(\"kinesis-firehose\"),\n\t\t\t\t\tLogFormat: pulumi.String(\"json\"),\n\t\t\t\t\tLogType: pulumi.String(\"engine-log\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.inputs.ReplicationGroupLogDeliveryConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new ReplicationGroup(\"test\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"myreplicaciongroup\")\n .description(\"test description\")\n .nodeType(\"cache.t3.small\")\n .port(6379)\n .applyImmediately(true)\n .autoMinorVersionUpgrade(false)\n .maintenanceWindow(\"tue:06:30-tue:07:30\")\n .snapshotWindow(\"01:00-02:00\")\n .logDeliveryConfigurations( \n ReplicationGroupLogDeliveryConfigurationArgs.builder()\n .destination(example.name())\n .destinationType(\"cloudwatch-logs\")\n .logFormat(\"text\")\n .logType(\"slow-log\")\n .build(),\n ReplicationGroupLogDeliveryConfigurationArgs.builder()\n .destination(exampleAwsKinesisFirehoseDeliveryStream.name())\n .destinationType(\"kinesis-firehose\")\n .logFormat(\"json\")\n .logType(\"engine-log\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: myreplicaciongroup\n description: test description\n nodeType: cache.t3.small\n port: 6379\n applyImmediately: true\n autoMinorVersionUpgrade: false\n maintenanceWindow: tue:06:30-tue:07:30\n snapshotWindow: 01:00-02:00\n logDeliveryConfigurations:\n - destination: ${example.name}\n destinationType: cloudwatch-logs\n logFormat: text\n logType: slow-log\n - destination: ${exampleAwsKinesisFirehoseDeliveryStream.name}\n destinationType: kinesis-firehose\n logFormat: json\n logType: engine-log\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** We currently do not support passing a `primary_cluster_id` in order to create the Replication Group.\n\n\u003e **Note:** Automatic Failover is unavailable for Redis versions earlier than 2.8.6,\nand unavailable on T1 node types. For T2 node types, it is only available on Redis version 3.2.4 or later with cluster mode enabled. See the [High Availability Using Replication Groups](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Replication.html) guide\nfor full details on using Replication Groups.\n\n### Creating a secondary replication group for a global replication group\n\nA Global Replication Group can have one one two secondary Replication Groups in different regions. These are added to an existing Global Replication Group.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst primary = new aws.elasticache.ReplicationGroup(\"primary\", {\n replicationGroupId: \"example-primary\",\n description: \"primary replication group\",\n engine: \"redis\",\n engineVersion: \"5.0.6\",\n nodeType: \"cache.m5.large\",\n numCacheClusters: 1,\n});\nconst example = new aws.elasticache.GlobalReplicationGroup(\"example\", {\n globalReplicationGroupIdSuffix: \"example\",\n primaryReplicationGroupId: primary.id,\n});\nconst secondary = new aws.elasticache.ReplicationGroup(\"secondary\", {\n replicationGroupId: \"example-secondary\",\n description: \"secondary replication group\",\n globalReplicationGroupId: example.globalReplicationGroupId,\n numCacheClusters: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nprimary = aws.elasticache.ReplicationGroup(\"primary\",\n replication_group_id=\"example-primary\",\n description=\"primary replication group\",\n engine=\"redis\",\n engine_version=\"5.0.6\",\n node_type=\"cache.m5.large\",\n num_cache_clusters=1)\nexample = aws.elasticache.GlobalReplicationGroup(\"example\",\n global_replication_group_id_suffix=\"example\",\n primary_replication_group_id=primary.id)\nsecondary = aws.elasticache.ReplicationGroup(\"secondary\",\n replication_group_id=\"example-secondary\",\n description=\"secondary replication group\",\n global_replication_group_id=example.global_replication_group_id,\n num_cache_clusters=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Aws.ElastiCache.ReplicationGroup(\"primary\", new()\n {\n ReplicationGroupId = \"example-primary\",\n Description = \"primary replication group\",\n Engine = \"redis\",\n EngineVersion = \"5.0.6\",\n NodeType = \"cache.m5.large\",\n NumCacheClusters = 1,\n });\n\n var example = new Aws.ElastiCache.GlobalReplicationGroup(\"example\", new()\n {\n GlobalReplicationGroupIdSuffix = \"example\",\n PrimaryReplicationGroupId = primary.Id,\n });\n\n var secondary = new Aws.ElastiCache.ReplicationGroup(\"secondary\", new()\n {\n ReplicationGroupId = \"example-secondary\",\n Description = \"secondary replication group\",\n GlobalReplicationGroupId = example.GlobalReplicationGroupId,\n NumCacheClusters = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := elasticache.NewReplicationGroup(ctx, \"primary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-primary\"),\n\t\t\tDescription: pulumi.String(\"primary replication group\"),\n\t\t\tEngine: pulumi.String(\"redis\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tNodeType: pulumi.String(\"cache.m5.large\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticache.NewGlobalReplicationGroup(ctx, \"example\", \u0026elasticache.GlobalReplicationGroupArgs{\n\t\t\tGlobalReplicationGroupIdSuffix: pulumi.String(\"example\"),\n\t\t\tPrimaryReplicationGroupId: primary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticache.NewReplicationGroup(ctx, \"secondary\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example-secondary\"),\n\t\t\tDescription: pulumi.String(\"secondary replication group\"),\n\t\t\tGlobalReplicationGroupId: example.GlobalReplicationGroupId,\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroup;\nimport com.pulumi.aws.elasticache.GlobalReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ReplicationGroup(\"primary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-primary\")\n .description(\"primary replication group\")\n .engine(\"redis\")\n .engineVersion(\"5.0.6\")\n .nodeType(\"cache.m5.large\")\n .numCacheClusters(1)\n .build());\n\n var example = new GlobalReplicationGroup(\"example\", GlobalReplicationGroupArgs.builder()\n .globalReplicationGroupIdSuffix(\"example\")\n .primaryReplicationGroupId(primary.id())\n .build());\n\n var secondary = new ReplicationGroup(\"secondary\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example-secondary\")\n .description(\"secondary replication group\")\n .globalReplicationGroupId(example.globalReplicationGroupId())\n .numCacheClusters(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secondary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-secondary\n description: secondary replication group\n globalReplicationGroupId: ${example.globalReplicationGroupId}\n numCacheClusters: 1\n example:\n type: aws:elasticache:GlobalReplicationGroup\n properties:\n globalReplicationGroupIdSuffix: example\n primaryReplicationGroupId: ${primary.id}\n primary:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example-primary\n description: primary replication group\n engine: redis\n engineVersion: 5.0.6\n nodeType: cache.m5.large\n numCacheClusters: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis AUTH and In-Transit Encryption Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ReplicationGroup(\"example\", {\n replicationGroupId: \"example\",\n description: \"example with authentication\",\n nodeType: \"cache.t2.micro\",\n numCacheClusters: 1,\n port: 6379,\n subnetGroupName: exampleAwsElasticacheSubnetGroup.name,\n securityGroupIds: [exampleAwsSecurityGroup.id],\n parameterGroupName: \"default.redis5.0\",\n engineVersion: \"5.0.6\",\n transitEncryptionEnabled: true,\n authToken: \"abcdefgh1234567890\",\n authTokenUpdateStrategy: \"ROTATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ReplicationGroup(\"example\",\n replication_group_id=\"example\",\n description=\"example with authentication\",\n node_type=\"cache.t2.micro\",\n num_cache_clusters=1,\n port=6379,\n subnet_group_name=example_aws_elasticache_subnet_group[\"name\"],\n security_group_ids=[example_aws_security_group[\"id\"]],\n parameter_group_name=\"default.redis5.0\",\n engine_version=\"5.0.6\",\n transit_encryption_enabled=True,\n auth_token=\"abcdefgh1234567890\",\n auth_token_update_strategy=\"ROTATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ReplicationGroup(\"example\", new()\n {\n ReplicationGroupId = \"example\",\n Description = \"example with authentication\",\n NodeType = \"cache.t2.micro\",\n NumCacheClusters = 1,\n Port = 6379,\n SubnetGroupName = exampleAwsElasticacheSubnetGroup.Name,\n SecurityGroupIds = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n ParameterGroupName = \"default.redis5.0\",\n EngineVersion = \"5.0.6\",\n TransitEncryptionEnabled = true,\n AuthToken = \"abcdefgh1234567890\",\n AuthTokenUpdateStrategy = \"ROTATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticache.NewReplicationGroup(ctx, \"example\", \u0026elasticache.ReplicationGroupArgs{\n\t\t\tReplicationGroupId: pulumi.String(\"example\"),\n\t\t\tDescription: pulumi.String(\"example with authentication\"),\n\t\t\tNodeType: pulumi.String(\"cache.t2.micro\"),\n\t\t\tNumCacheClusters: pulumi.Int(1),\n\t\t\tPort: pulumi.Int(6379),\n\t\t\tSubnetGroupName: pulumi.Any(exampleAwsElasticacheSubnetGroup.Name),\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t},\n\t\t\tParameterGroupName: pulumi.String(\"default.redis5.0\"),\n\t\t\tEngineVersion: pulumi.String(\"5.0.6\"),\n\t\t\tTransitEncryptionEnabled: pulumi.Bool(true),\n\t\t\tAuthToken: pulumi.String(\"abcdefgh1234567890\"),\n\t\t\tAuthTokenUpdateStrategy: pulumi.String(\"ROTATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ReplicationGroup;\nimport com.pulumi.aws.elasticache.ReplicationGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ReplicationGroup(\"example\", ReplicationGroupArgs.builder()\n .replicationGroupId(\"example\")\n .description(\"example with authentication\")\n .nodeType(\"cache.t2.micro\")\n .numCacheClusters(1)\n .port(6379)\n .subnetGroupName(exampleAwsElasticacheSubnetGroup.name())\n .securityGroupIds(exampleAwsSecurityGroup.id())\n .parameterGroupName(\"default.redis5.0\")\n .engineVersion(\"5.0.6\")\n .transitEncryptionEnabled(true)\n .authToken(\"abcdefgh1234567890\")\n .authTokenUpdateStrategy(\"ROTATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:elasticache:ReplicationGroup\n properties:\n replicationGroupId: example\n description: example with authentication\n nodeType: cache.t2.micro\n numCacheClusters: 1\n port: 6379\n subnetGroupName: ${exampleAwsElasticacheSubnetGroup.name}\n securityGroupIds:\n - ${exampleAwsSecurityGroup.id}\n parameterGroupName: default.redis5.0\n engineVersion: 5.0.6\n transitEncryptionEnabled: true\n authToken: abcdefgh1234567890\n authTokenUpdateStrategy: ROTATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e When adding a new `auth_token` to a previously passwordless replication group, using the `ROTATE` update strategy will result in support for **both** the new token and passwordless authentication. To immediately require authorization when adding the initial token, use the `SET` strategy instead. See the [Authenticating with the Redis AUTH command](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html) guide for additional details.\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Replication Groups using the `replication_group_id`. For example:\n\n```sh\n$ pulumi import aws:elasticache/replicationGroup:ReplicationGroup my_replication_group replication-group-1\n```\n",
"properties": {
"applyImmediately": {
"type": "boolean",
@@ -255548,7 +256647,7 @@
},
"autoMinorVersionUpgrade": {
"type": "boolean",
- "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine type `\"redis\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
+ "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine types `\"redis\"` and `\"valkey\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
},
"automaticFailoverEnabled": {
"type": "boolean",
@@ -255576,7 +256675,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.\n"
+ "description": "Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.\n"
},
"engineVersion": {
"type": "string",
@@ -255607,7 +256706,7 @@
"items": {
"$ref": "#/types/aws:elasticache/ReplicationGroupLogDeliveryConfiguration:ReplicationGroupLogDeliveryConfiguration"
},
- "description": "Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
+ "description": "Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
},
"maintenanceWindow": {
"type": "string",
@@ -255797,7 +256896,7 @@
},
"autoMinorVersionUpgrade": {
"type": "boolean",
- "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine type `\"redis\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
+ "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine types `\"redis\"` and `\"valkey\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
},
"automaticFailoverEnabled": {
"type": "boolean",
@@ -255818,8 +256917,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.\n",
- "willReplaceOnChanges": true
+ "description": "Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.\n"
},
"engineVersion": {
"type": "string",
@@ -255848,7 +256946,7 @@
"items": {
"$ref": "#/types/aws:elasticache/ReplicationGroupLogDeliveryConfiguration:ReplicationGroupLogDeliveryConfiguration"
},
- "description": "Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
+ "description": "Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
},
"maintenanceWindow": {
"type": "string",
@@ -255998,7 +257096,7 @@
},
"autoMinorVersionUpgrade": {
"type": "boolean",
- "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine type `\"redis\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
+ "description": "Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.\nOnly supported for engine types `\"redis\"` and `\"valkey\"` and if the engine version is 6 or higher.\nDefaults to `true`.\n"
},
"automaticFailoverEnabled": {
"type": "boolean",
@@ -256027,8 +257125,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.\n",
- "willReplaceOnChanges": true
+ "description": "Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.\n"
},
"engineVersion": {
"type": "string",
@@ -256061,7 +257158,7 @@
"items": {
"$ref": "#/types/aws:elasticache/ReplicationGroupLogDeliveryConfiguration:ReplicationGroupLogDeliveryConfiguration"
},
- "description": "Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
+ "description": "Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.\n"
},
"maintenanceWindow": {
"type": "string",
@@ -256395,7 +257492,7 @@
}
},
"aws:elasticache/serverlessCache:ServerlessCache": {
- "description": "Provides an ElastiCache Serverless Cache resource which manages memcached or redis.\n\n## Example Usage\n\n### Memcached Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"memcached\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"1.6\",\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"memcached\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"1.6\",\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"memcached\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"1.6\",\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"memcached\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"1.6\"),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"memcached\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"1.6\")\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"redis\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n dailySnapshotTime: \"09:00\",\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"7\",\n snapshotRetentionLimit: 1,\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"redis\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n daily_snapshot_time=\"09:00\",\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"7\",\n snapshot_retention_limit=1,\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"redis\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n DailySnapshotTime = \"09:00\",\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"7\",\n SnapshotRetentionLimit = 1,\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"redis\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDailySnapshotTime: pulumi.String(\"09:00\"),\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"7\"),\nSnapshotRetentionLimit: pulumi.Int(1),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"redis\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .dailySnapshotTime(\"09:00\")\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"7\")\n .snapshotRetentionLimit(1)\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Serverless Cache using the `name`. For example:\n\n```sh\n$ pulumi import aws:elasticache/serverlessCache:ServerlessCache my_cluster my_cluster\n```\n",
+ "description": "Provides an ElastiCache Serverless Cache resource which manages memcached, redis or valkey.\n\n## Example Usage\n\n### Memcached Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"memcached\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"1.6\",\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"memcached\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"1.6\",\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"memcached\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"1.6\",\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"memcached\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"1.6\"),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"memcached\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"1.6\")\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redis OSS Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"redis\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n dailySnapshotTime: \"09:00\",\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"7\",\n snapshotRetentionLimit: 1,\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"redis\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n daily_snapshot_time=\"09:00\",\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"7\",\n snapshot_retention_limit=1,\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"redis\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n DailySnapshotTime = \"09:00\",\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"7\",\n SnapshotRetentionLimit = 1,\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"redis\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDailySnapshotTime: pulumi.String(\"09:00\"),\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"7\"),\nSnapshotRetentionLimit: pulumi.Int(1),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"redis\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .dailySnapshotTime(\"09:00\")\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"7\")\n .snapshotRetentionLimit(1)\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Valkey Serverless\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.elasticache.ServerlessCache(\"example\", {\n engine: \"valkey\",\n name: \"example\",\n cacheUsageLimits: {\n dataStorage: {\n maximum: 10,\n unit: \"GB\",\n },\n ecpuPerSeconds: [{\n maximum: 5000,\n }],\n },\n dailySnapshotTime: \"09:00\",\n description: \"Test Server\",\n kmsKeyId: test.arn,\n majorEngineVersion: \"7\",\n snapshotRetentionLimit: 1,\n securityGroupIds: [testAwsSecurityGroup.id],\n subnetIds: testAwsSubnet.map(__item =\u003e __item.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.elasticache.ServerlessCache(\"example\",\n engine=\"valkey\",\n name=\"example\",\n cache_usage_limits={\n \"data_storage\": {\n \"maximum\": 10,\n \"unit\": \"GB\",\n },\n \"ecpu_per_seconds\": [{\n \"maximum\": 5000,\n }],\n },\n daily_snapshot_time=\"09:00\",\n description=\"Test Server\",\n kms_key_id=test[\"arn\"],\n major_engine_version=\"7\",\n snapshot_retention_limit=1,\n security_group_ids=[test_aws_security_group[\"id\"]],\n subnet_ids=[__item[\"id\"] for __item in test_aws_subnet])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ElastiCache.ServerlessCache(\"example\", new()\n {\n Engine = \"valkey\",\n Name = \"example\",\n CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs\n {\n DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs\n {\n Maximum = 10,\n Unit = \"GB\",\n },\n EcpuPerSeconds = new[]\n {\n new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs\n {\n Maximum = 5000,\n },\n },\n },\n DailySnapshotTime = \"09:00\",\n Description = \"Test Server\",\n KmsKeyId = test.Arn,\n MajorEngineVersion = \"7\",\n SnapshotRetentionLimit = 1,\n SecurityGroupIds = new[]\n {\n testAwsSecurityGroup.Id,\n },\n SubnetIds = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticache\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := elasticache.NewServerlessCache(ctx, \"example\", \u0026elasticache.ServerlessCacheArgs{\nEngine: pulumi.String(\"valkey\"),\nName: pulumi.String(\"example\"),\nCacheUsageLimits: \u0026elasticache.ServerlessCacheCacheUsageLimitsArgs{\nDataStorage: \u0026elasticache.ServerlessCacheCacheUsageLimitsDataStorageArgs{\nMaximum: pulumi.Int(10),\nUnit: pulumi.String(\"GB\"),\n},\nEcpuPerSeconds: elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArray{\n\u0026elasticache.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs{\nMaximum: pulumi.Int(5000),\n},\n},\n},\nDailySnapshotTime: pulumi.String(\"09:00\"),\nDescription: pulumi.String(\"Test Server\"),\nKmsKeyId: pulumi.Any(test.Arn),\nMajorEngineVersion: pulumi.String(\"7\"),\nSnapshotRetentionLimit: pulumi.Int(1),\nSecurityGroupIds: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\nSubnetIds: toPulumiArray(splat0),\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticache.ServerlessCache;\nimport com.pulumi.aws.elasticache.ServerlessCacheArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsArgs;\nimport com.pulumi.aws.elasticache.inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ServerlessCache(\"example\", ServerlessCacheArgs.builder()\n .engine(\"valkey\")\n .name(\"example\")\n .cacheUsageLimits(ServerlessCacheCacheUsageLimitsArgs.builder()\n .dataStorage(ServerlessCacheCacheUsageLimitsDataStorageArgs.builder()\n .maximum(10)\n .unit(\"GB\")\n .build())\n .ecpuPerSeconds(ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs.builder()\n .maximum(5000)\n .build())\n .build())\n .dailySnapshotTime(\"09:00\")\n .description(\"Test Server\")\n .kmsKeyId(test.arn())\n .majorEngineVersion(\"7\")\n .snapshotRetentionLimit(1)\n .securityGroupIds(testAwsSecurityGroup.id())\n .subnetIds(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ElastiCache Serverless Cache using the `name`. For example:\n\n```sh\n$ pulumi import aws:elasticache/serverlessCache:ServerlessCache my_cluster my_cluster\n```\n",
"properties": {
"arn": {
"type": "string",
@@ -256411,7 +257508,7 @@
},
"dailySnapshotTime": {
"type": "string",
- "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `\"redis\"`. Defaults to `0`.\n"
+ "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `\"redis\"` or `\"valkey\"`. Defaults to `0`.\n"
},
"description": {
"type": "string",
@@ -256426,7 +257523,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n"
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.\n"
},
"fullEngineVersion": {
"type": "string",
@@ -256526,7 +257623,7 @@
},
"dailySnapshotTime": {
"type": "string",
- "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `\"redis\"`. Defaults to `0`.\n"
+ "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `\"redis\"` or `\"valkey\"`. Defaults to `0`.\n"
},
"description": {
"type": "string",
@@ -256534,7 +257631,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n"
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.\n"
},
"kmsKeyId": {
"type": "string",
@@ -256608,7 +257705,7 @@
},
"dailySnapshotTime": {
"type": "string",
- "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `\"redis\"`. Defaults to `0`.\n"
+ "description": "The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `\"redis\"` or `\"valkey\"`. Defaults to `0`.\n"
},
"description": {
"type": "string",
@@ -256623,7 +257720,7 @@
},
"engine": {
"type": "string",
- "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.\n"
+ "description": "Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.\n"
},
"fullEngineVersion": {
"type": "string",
@@ -280868,6 +281965,169 @@
"type": "object"
}
},
+ "aws:imagebuilder/lifecyclePolicy:LifecyclePolicy": {
+ "description": "Manages an Image Builder Lifecycle Policy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getRegion({});\nconst currentGetPartition = aws.getPartition({});\nconst example = new aws.iam.Role(\"example\", {\n assumeRolePolicy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [{\n Action: \"sts:AssumeRole\",\n Effect: \"Allow\",\n Principal: {\n Service: currentGetPartition.then(currentGetPartition =\u003e `imagebuilder.${currentGetPartition.dnsSuffix}`),\n },\n }],\n }),\n name: \"example\",\n});\nconst exampleRolePolicyAttachment = new aws.iam.RolePolicyAttachment(\"example\", {\n policyArn: currentGetPartition.then(currentGetPartition =\u003e `arn:${currentGetPartition.partition}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy`),\n role: example.name,\n});\nconst exampleLifecyclePolicy = new aws.imagebuilder.LifecyclePolicy(\"example\", {\n name: \"name\",\n description: \"Example description\",\n executionRole: example.arn,\n resourceType: \"AMI_IMAGE\",\n policyDetails: [{\n action: {\n type: \"DELETE\",\n },\n filter: {\n type: \"AGE\",\n value: 6,\n retainAtLeast: 10,\n unit: \"YEARS\",\n },\n }],\n resourceSelection: {\n tagMap: {\n key1: \"value1\",\n key2: \"value2\",\n },\n },\n}, {\n dependsOn: [exampleRolePolicyAttachment],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\ncurrent = aws.get_region()\ncurrent_get_partition = aws.get_partition()\nexample = aws.iam.Role(\"example\",\n assume_role_policy=json.dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Action\": \"sts:AssumeRole\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": f\"imagebuilder.{current_get_partition.dns_suffix}\",\n },\n }],\n }),\n name=\"example\")\nexample_role_policy_attachment = aws.iam.RolePolicyAttachment(\"example\",\n policy_arn=f\"arn:{current_get_partition.partition}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\",\n role=example.name)\nexample_lifecycle_policy = aws.imagebuilder.LifecyclePolicy(\"example\",\n name=\"name\",\n description=\"Example description\",\n execution_role=example.arn,\n resource_type=\"AMI_IMAGE\",\n policy_details=[{\n \"action\": {\n \"type\": \"DELETE\",\n },\n \"filter\": {\n \"type\": \"AGE\",\n \"value\": 6,\n \"retain_at_least\": 10,\n \"unit\": \"YEARS\",\n },\n }],\n resource_selection={\n \"tag_map\": {\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[example_role_policy_attachment]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetRegion.Invoke();\n\n var currentGetPartition = Aws.GetPartition.Invoke();\n\n var example = new Aws.Iam.Role(\"example\", new()\n {\n AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Action\"] = \"sts:AssumeRole\",\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Service\"] = $\"imagebuilder.{currentGetPartition.Apply(getPartitionResult =\u003e getPartitionResult.DnsSuffix)}\",\n },\n },\n },\n }),\n Name = \"example\",\n });\n\n var exampleRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment(\"example\", new()\n {\n PolicyArn = $\"arn:{currentGetPartition.Apply(getPartitionResult =\u003e getPartitionResult.Partition)}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\",\n Role = example.Name,\n });\n\n var exampleLifecyclePolicy = new Aws.ImageBuilder.LifecyclePolicy(\"example\", new()\n {\n Name = \"name\",\n Description = \"Example description\",\n ExecutionRole = example.Arn,\n ResourceType = \"AMI_IMAGE\",\n PolicyDetails = new[]\n {\n new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailArgs\n {\n Action = new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailActionArgs\n {\n Type = \"DELETE\",\n },\n Filter = new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailFilterArgs\n {\n Type = \"AGE\",\n Value = 6,\n RetainAtLeast = 10,\n Unit = \"YEARS\",\n },\n },\n },\n ResourceSelection = new Aws.ImageBuilder.Inputs.LifecyclePolicyResourceSelectionArgs\n {\n TagMap = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleRolePolicyAttachment,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/imagebuilder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetPartition, err := aws.GetPartition(ctx, \u0026aws.GetPartitionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Action\": \"sts:AssumeRole\",\n\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\"Service\": fmt.Sprintf(\"imagebuilder.%v\", currentGetPartition.DnsSuffix),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texample, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tAssumeRolePolicy: pulumi.String(json0),\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleRolePolicyAttachment, err := iam.NewRolePolicyAttachment(ctx, \"example\", \u0026iam.RolePolicyAttachmentArgs{\n\t\t\tPolicyArn: pulumi.Sprintf(\"arn:%v:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\", currentGetPartition.Partition),\n\t\t\tRole: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = imagebuilder.NewLifecyclePolicy(ctx, \"example\", \u0026imagebuilder.LifecyclePolicyArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tDescription: pulumi.String(\"Example description\"),\n\t\t\tExecutionRole: example.Arn,\n\t\t\tResourceType: pulumi.String(\"AMI_IMAGE\"),\n\t\t\tPolicyDetails: imagebuilder.LifecyclePolicyPolicyDetailArray{\n\t\t\t\t\u0026imagebuilder.LifecyclePolicyPolicyDetailArgs{\n\t\t\t\t\tAction: \u0026imagebuilder.LifecyclePolicyPolicyDetailActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t\tFilter: \u0026imagebuilder.LifecyclePolicyPolicyDetailFilterArgs{\n\t\t\t\t\t\tType: pulumi.String(\"AGE\"),\n\t\t\t\t\t\tValue: pulumi.Int(6),\n\t\t\t\t\t\tRetainAtLeast: pulumi.Int(10),\n\t\t\t\t\t\tUnit: pulumi.String(\"YEARS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tResourceSelection: \u0026imagebuilder.LifecyclePolicyResourceSelectionArgs{\n\t\t\t\tTagMap: pulumi.StringMap{\n\t\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleRolePolicyAttachment,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.inputs.GetPartitionArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.iam.RolePolicyAttachment;\nimport com.pulumi.aws.iam.RolePolicyAttachmentArgs;\nimport com.pulumi.aws.imagebuilder.LifecyclePolicy;\nimport com.pulumi.aws.imagebuilder.LifecyclePolicyArgs;\nimport com.pulumi.aws.imagebuilder.inputs.LifecyclePolicyPolicyDetailArgs;\nimport com.pulumi.aws.imagebuilder.inputs.LifecyclePolicyPolicyDetailActionArgs;\nimport com.pulumi.aws.imagebuilder.inputs.LifecyclePolicyPolicyDetailFilterArgs;\nimport com.pulumi.aws.imagebuilder.inputs.LifecyclePolicyResourceSelectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getRegion();\n\n final var currentGetPartition = AwsFunctions.getPartition();\n\n var example = new Role(\"example\", RoleArgs.builder()\n .assumeRolePolicy(serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Action\", \"sts:AssumeRole\"),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"Service\", String.format(\"imagebuilder.%s\", currentGetPartition.applyValue(getPartitionResult -\u003e getPartitionResult.dnsSuffix())))\n ))\n )))\n )))\n .name(\"example\")\n .build());\n\n var exampleRolePolicyAttachment = new RolePolicyAttachment(\"exampleRolePolicyAttachment\", RolePolicyAttachmentArgs.builder()\n .policyArn(String.format(\"arn:%s:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\", currentGetPartition.applyValue(getPartitionResult -\u003e getPartitionResult.partition())))\n .role(example.name())\n .build());\n\n var exampleLifecyclePolicy = new LifecyclePolicy(\"exampleLifecyclePolicy\", LifecyclePolicyArgs.builder()\n .name(\"name\")\n .description(\"Example description\")\n .executionRole(example.arn())\n .resourceType(\"AMI_IMAGE\")\n .policyDetails(LifecyclePolicyPolicyDetailArgs.builder()\n .action(LifecyclePolicyPolicyDetailActionArgs.builder()\n .type(\"DELETE\")\n .build())\n .filter(LifecyclePolicyPolicyDetailFilterArgs.builder()\n .type(\"AGE\")\n .value(6)\n .retainAtLeast(10)\n .unit(\"YEARS\")\n .build())\n .build())\n .resourceSelection(LifecyclePolicyResourceSelectionArgs.builder()\n .tagMap(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(exampleRolePolicyAttachment)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:iam:Role\n properties:\n assumeRolePolicy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Action: sts:AssumeRole\n Effect: Allow\n Principal:\n Service: imagebuilder.${currentGetPartition.dnsSuffix}\n name: example\n exampleRolePolicyAttachment:\n type: aws:iam:RolePolicyAttachment\n name: example\n properties:\n policyArn: arn:${currentGetPartition.partition}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy\n role: ${example.name}\n exampleLifecyclePolicy:\n type: aws:imagebuilder:LifecyclePolicy\n name: example\n properties:\n name: name\n description: Example description\n executionRole: ${example.arn}\n resourceType: AMI_IMAGE\n policyDetails:\n - action:\n type: DELETE\n filter:\n type: AGE\n value: 6\n retainAtLeast: 10\n unit: YEARS\n resourceSelection:\n tagMap:\n key1: value1\n key2: value2\n options:\n dependson:\n - ${exampleRolePolicyAttachment}\nvariables:\n current:\n fn::invoke:\n Function: aws:getRegion\n Arguments: {}\n currentGetPartition:\n fn::invoke:\n Function: aws:getPartition\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import `aws_imagebuilder_lifecycle_policy` using the Amazon Resource Name (ARN). For example:\n\n```sh\n$ pulumi import aws:imagebuilder/lifecyclePolicy:LifecyclePolicy example arn:aws:imagebuilder:us-east-1:123456789012:lifecycle-policy/example\n```\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "Amazon Resource Name (ARN) of the lifecycle policy.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "description for the lifecycle policy.\n"
+ },
+ "executionRole": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the lifecycle policy to create.\n"
+ },
+ "policyDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetail:LifecyclePolicyPolicyDetail"
+ },
+ "description": "Configuration block with policy details. Detailed below.\n"
+ },
+ "resourceSelection": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyResourceSelection:LifecyclePolicyResourceSelection",
+ "description": "Selection criteria for the resources that the lifecycle policy applies to. Detailed below.\n\nThe following arguments are optional:\n"
+ },
+ "resourceType": {
+ "type": "string",
+ "description": "The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the lifecycle policy.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ }
+ },
+ "required": [
+ "arn",
+ "executionRole",
+ "name",
+ "resourceType",
+ "status",
+ "tagsAll"
+ ],
+ "inputProperties": {
+ "description": {
+ "type": "string",
+ "description": "description for the lifecycle policy.\n"
+ },
+ "executionRole": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the lifecycle policy to create.\n"
+ },
+ "policyDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetail:LifecyclePolicyPolicyDetail"
+ },
+ "description": "Configuration block with policy details. Detailed below.\n"
+ },
+ "resourceSelection": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyResourceSelection:LifecyclePolicyResourceSelection",
+ "description": "Selection criteria for the resources that the lifecycle policy applies to. Detailed below.\n\nThe following arguments are optional:\n"
+ },
+ "resourceType": {
+ "type": "string",
+ "description": "The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the lifecycle policy.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
+ }
+ },
+ "requiredInputs": [
+ "executionRole",
+ "resourceType"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering LifecyclePolicy resources.\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "Amazon Resource Name (ARN) of the lifecycle policy.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "description for the lifecycle policy.\n"
+ },
+ "executionRole": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the lifecycle policy to create.\n"
+ },
+ "policyDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyPolicyDetail:LifecyclePolicyPolicyDetail"
+ },
+ "description": "Configuration block with policy details. Detailed below.\n"
+ },
+ "resourceSelection": {
+ "$ref": "#/types/aws:imagebuilder/LifecyclePolicyResourceSelection:LifecyclePolicyResourceSelection",
+ "description": "Selection criteria for the resources that the lifecycle policy applies to. Detailed below.\n\nThe following arguments are optional:\n"
+ },
+ "resourceType": {
+ "type": "string",
+ "description": "The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.\n"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the lifecycle policy.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ }
+ },
+ "type": "object"
+ }
+ },
"aws:imagebuilder/workflow:Workflow": {
"description": "Resource for managing an AWS EC2 Image Builder Workflow.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.imagebuilder.Workflow(\"example\", {\n name: \"example\",\n version: \"1.0.0\",\n type: \"TEST\",\n data: `name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.: \".stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \".parameters.waitForActionAtEnd\"\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.imagebuilder.Workflow(\"example\",\n name=\"example\",\n version=\"1.0.0\",\n type=\"TEST\",\n data=\"\"\"name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ImageBuilder.Workflow(\"example\", new()\n {\n Name = \"example\",\n Version = \"1.0.0\",\n Type = \"TEST\",\n Data = @\"name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"\"ssmAgent\"\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"\"$.stepOutputs.LaunchTestInstance.instanceId\"\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"\"$.parameters.waitForActionAtEnd\"\"\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/imagebuilder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := imagebuilder.NewWorkflow(ctx, \"example\", \u0026imagebuilder.WorkflowArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tVersion: pulumi.String(\"1.0.0\"),\n\t\t\tType: pulumi.String(\"TEST\"),\n\t\t\tData: pulumi.String(`name: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.imagebuilder.Workflow;\nimport com.pulumi.aws.imagebuilder.WorkflowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Workflow(\"example\", WorkflowArgs.builder()\n .name(\"example\")\n .version(\"1.0.0\")\n .type(\"TEST\")\n .data(\"\"\"\nname: example\ndescription: Workflow to test an image\nschemaVersion: 1.0\n\nparameters:\n - name: waitForActionAtEnd\n type: boolean\n\nsteps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:imagebuilder:Workflow\n properties:\n name: example\n version: 1.0.0\n type: TEST\n data: |\n name: example\n description: Workflow to test an image\n schemaVersion: 1.0\n\n parameters:\n - name: waitForActionAtEnd\n type: boolean\n\n steps:\n - name: LaunchTestInstance\n action: LaunchInstance\n onFailure: Abort\n inputs:\n waitFor: \"ssmAgent\"\n\n - name: TerminateTestInstance\n action: TerminateInstance\n onFailure: Continue\n inputs:\n instanceId.$: \"$.stepOutputs.LaunchTestInstance.instanceId\"\n\n - name: WaitForActionAtEnd\n action: WaitForAction\n if:\n booleanEquals: true\n value: \"$.parameters.waitForActionAtEnd\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EC2 Image Builder Workflow using the `example_id_arg`. For example:\n\n```sh\n$ pulumi import aws:imagebuilder/workflow:Workflow example arn:aws:imagebuilder:us-east-1:aws:workflow/test/example/1.0.1/1\n```\nCertain resource arguments, such as `uri`, cannot be read via the API and imported into Terraform. Terraform will display a difference for these arguments the first run after import if declared in the Terraform configuration for an imported resource.\n\n",
"properties": {
@@ -286083,7 +287343,7 @@
}
},
"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream": {
- "description": "Provides a Kinesis Firehose Delivery Stream resource. Amazon Kinesis Firehose is a fully managed, elastic service to easily deliver real-time data streams to destinations such as Amazon S3 , Amazon Redshift and Snowflake.\n\nFor more details, see the [Amazon Kinesis Firehose Documentation](https://aws.amazon.com/documentation/firehose/).\n\n## Example Usage\n\n### Extended S3 Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst bucket = new aws.s3.BucketV2(\"bucket\", {bucket: \"tf-test-bucket\"});\nconst firehoseAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"firehose.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst firehoseRole = new aws.iam.Role(\"firehose_role\", {\n name: \"firehose_test_role\",\n assumeRolePolicy: firehoseAssumeRole.then(firehoseAssumeRole =\u003e firehoseAssumeRole.json),\n});\nconst lambdaAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst lambdaIam = new aws.iam.Role(\"lambda_iam\", {\n name: \"lambda_iam\",\n assumeRolePolicy: lambdaAssumeRole.then(lambdaAssumeRole =\u003e lambdaAssumeRole.json),\n});\nconst lambdaProcessor = new aws.lambda.Function(\"lambda_processor\", {\n code: new pulumi.asset.FileArchive(\"lambda.zip\"),\n name: \"firehose_lambda_processor\",\n role: lambdaIam.arn,\n handler: \"exports.handler\",\n runtime: aws.lambda.Runtime.NodeJS20dX,\n});\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: pulumi.interpolate`${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\nconst bucketAcl = new aws.s3.BucketAclV2(\"bucket_acl\", {\n bucket: bucket.id,\n acl: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"tf-test-bucket\")\nfirehose_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"firehose.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nfirehose_role = aws.iam.Role(\"firehose_role\",\n name=\"firehose_test_role\",\n assume_role_policy=firehose_assume_role.json)\nlambda_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nlambda_iam = aws.iam.Role(\"lambda_iam\",\n name=\"lambda_iam\",\n assume_role_policy=lambda_assume_role.json)\nlambda_processor = aws.lambda_.Function(\"lambda_processor\",\n code=pulumi.FileArchive(\"lambda.zip\"),\n name=\"firehose_lambda_processor\",\n role=lambda_iam.arn,\n handler=\"exports.handler\",\n runtime=aws.lambda_.Runtime.NODE_JS20D_X)\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role.arn,\n \"bucket_arn\": bucket.arn,\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": lambda_processor.arn.apply(lambda arn: f\"{arn}:$LATEST\"),\n }],\n }],\n },\n })\nbucket_acl = aws.s3.BucketAclV2(\"bucket_acl\",\n bucket=bucket.id,\n acl=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"tf-test-bucket\",\n });\n\n var firehoseAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"firehose.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var firehoseRole = new Aws.Iam.Role(\"firehose_role\", new()\n {\n Name = \"firehose_test_role\",\n AssumeRolePolicy = firehoseAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var lambdaIam = new Aws.Iam.Role(\"lambda_iam\", new()\n {\n Name = \"lambda_iam\",\n AssumeRolePolicy = lambdaAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaProcessor = new Aws.Lambda.Function(\"lambda_processor\", new()\n {\n Code = new FileArchive(\"lambda.zip\"),\n Name = \"firehose_lambda_processor\",\n Role = lambdaIam.Arn,\n Handler = \"exports.handler\",\n Runtime = Aws.Lambda.Runtime.NodeJS20dX,\n });\n\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = lambdaProcessor.Arn.Apply(arn =\u003e $\"{arn}:$LATEST\"),\n },\n },\n },\n },\n },\n },\n });\n\n var bucketAcl = new Aws.S3.BucketAclV2(\"bucket_acl\", new()\n {\n Bucket = bucket.Id,\n Acl = \"private\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"tf-test-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"firehose.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseRole, err := iam.NewRole(ctx, \"firehose_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"firehose_test_role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(firehoseAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"lambda.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaIam, err := iam.NewRole(ctx, \"lambda_iam\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"lambda_iam\"),\n\t\t\tAssumeRolePolicy: pulumi.String(lambdaAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaProcessor, err := lambda.NewFunction(ctx, \"lambda_processor\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"lambda.zip\"),\n\t\t\tName: pulumi.String(\"firehose_lambda_processor\"),\n\t\t\tRole: lambdaIam.Arn,\n\t\t\tHandler: pulumi.String(\"exports.handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeNodeJS20dX),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: firehoseRole.Arn,\n\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: lambdaProcessor.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:$LATEST\", arn), nil\n\t\t\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketAclV2(ctx, \"bucket_acl\", \u0026s3.BucketAclV2Args{\n\t\t\tBucket: bucket.ID(),\n\t\t\tAcl: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport com.pulumi.aws.s3.BucketAclV2;\nimport com.pulumi.aws.s3.BucketAclV2Args;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"tf-test-bucket\")\n .build());\n\n final var firehoseAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"firehose.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var firehoseRole = new Role(\"firehoseRole\", RoleArgs.builder()\n .name(\"firehose_test_role\")\n .assumeRolePolicy(firehoseAssumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n final var lambdaAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"lambda.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var lambdaIam = new Role(\"lambdaIam\", RoleArgs.builder()\n .name(\"lambda_iam\")\n .assumeRolePolicy(lambdaAssumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n var lambdaProcessor = new Function(\"lambdaProcessor\", FunctionArgs.builder()\n .code(new FileArchive(\"lambda.zip\"))\n .name(\"firehose_lambda_processor\")\n .role(lambdaIam.arn())\n .handler(\"exports.handler\")\n .runtime(\"nodejs20.x\")\n .build());\n\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(lambdaProcessor.arn().applyValue(arn -\u003e String.format(\"%s:$LATEST\", arn)))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var bucketAcl = new BucketAclV2(\"bucketAcl\", BucketAclV2Args.builder()\n .bucket(bucket.id())\n .acl(\"private\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: tf-test-bucket\n bucketAcl:\n type: aws:s3:BucketAclV2\n name: bucket_acl\n properties:\n bucket: ${bucket.id}\n acl: private\n firehoseRole:\n type: aws:iam:Role\n name: firehose_role\n properties:\n name: firehose_test_role\n assumeRolePolicy: ${firehoseAssumeRole.json}\n lambdaIam:\n type: aws:iam:Role\n name: lambda_iam\n properties:\n name: lambda_iam\n assumeRolePolicy: ${lambdaAssumeRole.json}\n lambdaProcessor:\n type: aws:lambda:Function\n name: lambda_processor\n properties:\n code:\n fn::FileArchive: lambda.zip\n name: firehose_lambda_processor\n role: ${lambdaIam.arn}\n handler: exports.handler\n runtime: nodejs20.x\nvariables:\n firehoseAssumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - firehose.amazonaws.com\n actions:\n - sts:AssumeRole\n lambdaAssumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Extended S3 Destination with dynamic partitioning\n\nThese examples use built-in Firehose functionality, rather than requiring a lambda.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [\n {\n type: \"RecordDeAggregation\",\n parameters: [{\n parameterName: \"SubRecordType\",\n parameterValue: \"JSON\",\n }],\n },\n {\n type: \"AppendDelimiterToRecord\",\n },\n {\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [\n {\n \"type\": \"RecordDeAggregation\",\n \"parameters\": [{\n \"parameter_name\": \"SubRecordType\",\n \"parameter_value\": \"JSON\",\n }],\n },\n {\n \"type\": \"AppendDelimiterToRecord\",\n },\n {\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"RecordDeAggregation\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"SubRecordType\",\n ParameterValue = \"JSON\",\n },\n },\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"AppendDelimiterToRecord\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"RecordDeAggregation\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"SubRecordType\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JSON\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"AppendDelimiterToRecord\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(\"true\")\n .build())\n .prefix(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"RecordDeAggregation\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"SubRecordType\")\n .parameterValue(\"JSON\")\n .build())\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"AppendDelimiterToRecord\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: RecordDeAggregation\n parameters:\n - parameterName: SubRecordType\n parameterValue: JSON\n - type: AppendDelimiterToRecord\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nMultiple Dynamic Partitioning Keys (maximum of 50) can be added by comma separating the `parameter_value`.\n\nThe following example adds the Dynamic Partitioning Keys: `store_id` and `customer_id` to the S3 prefix.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{store_id:.store_id,customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(\"true\")\n .build())\n .prefix(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{store_id:.store_id,customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{store_id:.store_id,customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redshift Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.redshift.Cluster(\"test_cluster\", {\n clusterIdentifier: \"tf-redshift-cluster\",\n databaseName: \"test\",\n masterUsername: \"testuser\",\n masterPassword: \"T3stPass\",\n nodeType: \"dc1.large\",\n clusterType: \"single-node\",\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"redshift\",\n redshiftConfiguration: {\n roleArn: firehoseRole.arn,\n clusterJdbcurl: pulumi.interpolate`jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}`,\n username: \"testuser\",\n password: \"T3stPass\",\n dataTableName: \"test-table\",\n copyOptions: \"delimiter '|'\",\n dataTableColumns: \"test-col\",\n s3BackupMode: \"Enabled\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n s3BackupConfiguration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 15,\n bufferingInterval: 300,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.redshift.Cluster(\"test_cluster\",\n cluster_identifier=\"tf-redshift-cluster\",\n database_name=\"test\",\n master_username=\"testuser\",\n master_password=\"T3stPass\",\n node_type=\"dc1.large\",\n cluster_type=\"single-node\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"redshift\",\n redshift_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"cluster_jdbcurl\": pulumi.Output.all(\n endpoint=test_cluster.endpoint,\n database_name=test_cluster.database_name\n).apply(lambda resolved_outputs: f\"jdbc:redshift://{resolved_outputs['endpoint']}/{resolved_outputs['database_name']}\")\n,\n \"username\": \"testuser\",\n \"password\": \"T3stPass\",\n \"data_table_name\": \"test-table\",\n \"copy_options\": \"delimiter '|'\",\n \"data_table_columns\": \"test-col\",\n \"s3_backup_mode\": \"Enabled\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"s3_backup_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 15,\n \"buffering_interval\": 300,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.RedShift.Cluster(\"test_cluster\", new()\n {\n ClusterIdentifier = \"tf-redshift-cluster\",\n DatabaseName = \"test\",\n MasterUsername = \"testuser\",\n MasterPassword = \"T3stPass\",\n NodeType = \"dc1.large\",\n ClusterType = \"single-node\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"redshift\",\n RedshiftConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n ClusterJdbcurl = Output.Tuple(testCluster.Endpoint, testCluster.DatabaseName).Apply(values =\u003e\n {\n var endpoint = values.Item1;\n var databaseName = values.Item2;\n return $\"jdbc:redshift://{endpoint}/{databaseName}\";\n }),\n Username = \"testuser\",\n Password = \"T3stPass\",\n DataTableName = \"test-table\",\n CopyOptions = \"delimiter '|'\",\n DataTableColumns = \"test-col\",\n S3BackupMode = \"Enabled\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n S3BackupConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 15,\n BufferingInterval = 300,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/redshift\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := redshift.NewCluster(ctx, \"test_cluster\", \u0026redshift.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"tf-redshift-cluster\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tMasterUsername: pulumi.String(\"testuser\"),\n\t\t\tMasterPassword: pulumi.String(\"T3stPass\"),\n\t\t\tNodeType: pulumi.String(\"dc1.large\"),\n\t\t\tClusterType: pulumi.String(\"single-node\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"redshift\"),\n\t\t\tRedshiftConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tClusterJdbcurl: pulumi.All(testCluster.Endpoint, testCluster.DatabaseName).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tendpoint := _args[0].(string)\n\t\t\t\t\tdatabaseName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"jdbc:redshift://%v/%v\", endpoint, databaseName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUsername: pulumi.String(\"testuser\"),\n\t\t\t\tPassword: pulumi.String(\"T3stPass\"),\n\t\t\t\tDataTableName: pulumi.String(\"test-table\"),\n\t\t\t\tCopyOptions: pulumi.String(\"delimiter '|'\"),\n\t\t\t\tDataTableColumns: pulumi.String(\"test-col\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"Enabled\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tS3BackupConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\t\tBufferingInterval: pulumi.Int(300),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.redshift.Cluster;\nimport com.pulumi.aws.redshift.ClusterArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Cluster(\"testCluster\", ClusterArgs.builder()\n .clusterIdentifier(\"tf-redshift-cluster\")\n .databaseName(\"test\")\n .masterUsername(\"testuser\")\n .masterPassword(\"T3stPass\")\n .nodeType(\"dc1.large\")\n .clusterType(\"single-node\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"redshift\")\n .redshiftConfiguration(FirehoseDeliveryStreamRedshiftConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .clusterJdbcurl(Output.tuple(testCluster.endpoint(), testCluster.databaseName()).applyValue(values -\u003e {\n var endpoint = values.t1;\n var databaseName = values.t2;\n return String.format(\"jdbc:redshift://%s/%s\", endpoint,databaseName);\n }))\n .username(\"testuser\")\n .password(\"T3stPass\")\n .dataTableName(\"test-table\")\n .copyOptions(\"delimiter '|'\")\n .dataTableColumns(\"test-col\")\n .s3BackupMode(\"Enabled\")\n .s3Configuration(FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .s3BackupConfiguration(FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(15)\n .bufferingInterval(300)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:redshift:Cluster\n name: test_cluster\n properties:\n clusterIdentifier: tf-redshift-cluster\n databaseName: test\n masterUsername: testuser\n masterPassword: T3stPass\n nodeType: dc1.large\n clusterType: single-node\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: redshift\n redshiftConfiguration:\n roleArn: ${firehoseRole.arn}\n clusterJdbcurl: jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}\n username: testuser\n password: T3stPass\n dataTableName: test-table\n copyOptions: delimiter '|'\n dataTableColumns: test-col\n s3BackupMode: Enabled\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n s3BackupConfiguration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 15\n bufferingInterval: 300\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {domainName: \"firehose-es-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\", domain_name=\"firehose-es-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-es-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-es-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-es-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-es-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"t2.small.elasticsearch\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose-elasticsearch = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"es:*\"],\n resources: [\n testCluster.arn,\n pulumi.interpolate`${testCluster.arn}/*`,\n ],\n },\n {\n effect: \"Allow\",\n actions: [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n resources: [\"*\"],\n },\n ],\n});\nconst firehose_elasticsearchRolePolicy = new aws.iam.RolePolicy(\"firehose-elasticsearch\", {\n name: \"elasticsearch\",\n role: firehose.id,\n policy: firehose_elasticsearch.apply(firehose_elasticsearch =\u003e firehose_elasticsearch.json),\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"kinesis-firehose-es\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_elasticsearchRolePolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"t2.small.elasticsearch\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_elasticsearch = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"es:*\"],\n \"resources\": [\n test_cluster.arn,\n test_cluster.arn.apply(lambda arn: f\"{arn}/*\"),\n ],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n \"resources\": [\"*\"],\n },\n])\nfirehose_elasticsearch_role_policy = aws.iam.RolePolicy(\"firehose-elasticsearch\",\n name=\"elasticsearch\",\n role=firehose[\"id\"],\n policy=firehose_elasticsearch.json)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"kinesis-firehose-es\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_elasticsearch_role_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"t2.small.elasticsearch\",\n },\n EbsOptions = new Aws.ElasticSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.ElasticSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_elasticsearch = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"es:*\",\n },\n Resources = new[]\n {\n testCluster.Arn,\n $\"{testCluster.Arn}/*\",\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var firehose_elasticsearchRolePolicy = new Aws.Iam.RolePolicy(\"firehose-elasticsearch\", new()\n {\n Name = \"elasticsearch\",\n Role = firehose.Id,\n Policy = firehose_elasticsearch.Apply(firehose_elasticsearch =\u003e firehose_elasticsearch.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json)),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"kinesis-firehose-es\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_elasticsearchRolePolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"t2.small.elasticsearch\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026elasticsearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026elasticsearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehose_elasticsearch := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"es:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\ttestCluster.Arn,\n\t\t\t\t\t\ttestCluster.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v/*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcs\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcAttribute\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSubnets\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSecurityGroups\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeNetworkInterfaces\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterface\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterfacePermission\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DeleteNetworkInterface\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = iam.NewRolePolicy(ctx, \"firehose-elasticsearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"elasticsearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.String(firehose_elasticsearch.ApplyT(func(firehose_elasticsearch iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026firehose_elasticsearch.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-es\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_elasticsearchRolePolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"t2.small.elasticsearch\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n final var firehose-elasticsearch = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"es:*\")\n .resources( \n testCluster.arn(),\n testCluster.arn().applyValue(arn -\u003e String.format(\"%s/*\", arn)))\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions( \n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\")\n .resources(\"*\")\n .build())\n .build());\n\n var firehose_elasticsearchRolePolicy = new RolePolicy(\"firehose-elasticsearchRolePolicy\", RolePolicyArgs.builder()\n .name(\"elasticsearch\")\n .role(firehose.id())\n .policy(firehose_elasticsearch.applyValue(firehose_elasticsearch -\u003e firehose_elasticsearch.json()))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-es\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_elasticsearchRolePolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: t2.small.elasticsearch\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-elasticsearchRolePolicy:\n type: aws:iam:RolePolicy\n name: firehose-elasticsearch\n properties:\n name: elasticsearch\n role: ${firehose.id}\n policy: ${[\"firehose-elasticsearch\"].json}\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: kinesis-firehose-es\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependson:\n - ${[\"firehose-elasticsearchRolePolicy\"]}\nvariables:\n firehose-elasticsearch:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n actions:\n - es:*\n resources:\n - ${testCluster.arn}\n - ${testCluster.arn}/*\n - effect: Allow\n actions:\n - ec2:DescribeVpcs\n - ec2:DescribeVpcAttribute\n - ec2:DescribeSubnets\n - ec2:DescribeSecurityGroups\n - ec2:DescribeNetworkInterfaces\n - ec2:CreateNetworkInterface\n - ec2:CreateNetworkInterfacePermission\n - ec2:DeleteNetworkInterface\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {domainName: \"firehose-os-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\", domain_name=\"firehose-os-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-os-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-os-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-os-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-os-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"m4.large.search\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose_opensearch = new aws.iam.RolePolicy(\"firehose-opensearch\", {\n name: \"opensearch\",\n role: firehose.id,\n policy: pulumi.interpolate`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`,\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"pulumi-kinesis-firehose-os\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_opensearch],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"m4.large.search\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_opensearch = aws.iam.RolePolicy(\"firehose-opensearch\",\n name=\"opensearch\",\n role=firehose[\"id\"],\n policy=pulumi.Output.all(\n testClusterArn=test_cluster.arn,\n testClusterArn1=test_cluster.arn\n).apply(lambda resolved_outputs: f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"{resolved_outputs['testClusterArn']}\",\n \"{resolved_outputs['testClusterArn1']}/*\"\n ]\n }},\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }}\n ]\n}}\n\"\"\")\n)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"pulumi-kinesis-firehose-os\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_opensearch]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.OpenSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"m4.large.search\",\n },\n EbsOptions = new Aws.OpenSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.OpenSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_opensearch = new Aws.Iam.RolePolicy(\"firehose-opensearch\", new()\n {\n Name = \"opensearch\",\n Role = firehose.Id,\n Policy = Output.Tuple(testCluster.Arn, testCluster.Arn).Apply(values =\u003e\n {\n var testClusterArn = values.Item1;\n var testClusterArn1 = values.Item2;\n return @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"es:*\"\"\n ],\n \"\"Resource\"\": [\n \"\"{testClusterArn}\"\",\n \"\"{testClusterArn1}/*\"\"\n ]\n }},\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"ec2:DescribeVpcs\"\",\n \"\"ec2:DescribeVpcAttribute\"\",\n \"\"ec2:DescribeSubnets\"\",\n \"\"ec2:DescribeSecurityGroups\"\",\n \"\"ec2:DescribeNetworkInterfaces\"\",\n \"\"ec2:CreateNetworkInterface\"\",\n \"\"ec2:CreateNetworkInterfacePermission\"\",\n \"\"ec2:DeleteNetworkInterface\"\"\n ],\n \"\"Resource\"\": [\n \"\"*\"\"\n ]\n }}\n ]\n}}\n\";\n }),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"pulumi-kinesis-firehose-os\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_opensearch,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026opensearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"m4.large.search\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026opensearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026opensearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicy(ctx, \"firehose-opensearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"opensearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.All(testCluster.Arn, testCluster.Arn).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\ttestClusterArn := _args[0].(string)\n\t\t\t\ttestClusterArn1 := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%v\",\n \"%v/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`, testClusterArn, testClusterArn1), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"pulumi-kinesis-firehose-os\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_opensearch,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"m4.large.search\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n var firehose_opensearch = new RolePolicy(\"firehose-opensearch\", RolePolicyArgs.builder()\n .name(\"opensearch\")\n .role(firehose.id())\n .policy(Output.tuple(testCluster.arn(), testCluster.arn()).applyValue(values -\u003e {\n var testClusterArn = values.t1;\n var testClusterArn1 = values.t2;\n return \"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%s\",\n \"%s/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n\", testClusterArn,testClusterArn1);\n }))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"pulumi-kinesis-firehose-os\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_opensearch)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: m4.large.search\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-opensearch:\n type: aws:iam:RolePolicy\n properties:\n name: opensearch\n role: ${firehose.id}\n policy: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n }\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: pulumi-kinesis-firehose-os\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependson:\n - ${[\"firehose-opensearch\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Serverless Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCollection = new aws.opensearch.ServerlessCollection(\"test_collection\", {name: \"firehose-osserverless-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearchserverless\",\n opensearchserverlessConfiguration: {\n collectionEndpoint: testCollection.collectionEndpoint,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_collection = aws.opensearch.ServerlessCollection(\"test_collection\", name=\"firehose-osserverless-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearchserverless\",\n opensearchserverless_configuration={\n \"collection_endpoint\": test_collection.collection_endpoint,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCollection = new Aws.OpenSearch.ServerlessCollection(\"test_collection\", new()\n {\n Name = \"firehose-osserverless-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearchserverless\",\n OpensearchserverlessConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs\n {\n CollectionEndpoint = testCollection.CollectionEndpoint,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCollection, err := opensearch.NewServerlessCollection(ctx, \"test_collection\", \u0026opensearch.ServerlessCollectionArgs{\n\t\t\tName: pulumi.String(\"firehose-osserverless-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearchserverless\"),\n\t\t\tOpensearchserverlessConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs{\n\t\t\t\tCollectionEndpoint: testCollection.CollectionEndpoint,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.ServerlessCollection;\nimport com.pulumi.aws.opensearch.ServerlessCollectionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCollection = new ServerlessCollection(\"testCollection\", ServerlessCollectionArgs.builder()\n .name(\"firehose-osserverless-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearchserverless\")\n .opensearchserverlessConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs.builder()\n .collectionEndpoint(testCollection.collectionEndpoint())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCollection:\n type: aws:opensearch:ServerlessCollection\n name: test_collection\n properties:\n name: firehose-osserverless-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearchserverless\n opensearchserverlessConfiguration:\n collectionEndpoint: ${testCollection.collectionEndpoint}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Splunk Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"splunk\",\n splunkConfiguration: {\n hecEndpoint: \"https://http-inputs-mydomain.splunkcloud.com:443\",\n hecToken: \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n hecAcknowledgmentTimeout: 600,\n hecEndpointType: \"Event\",\n s3BackupMode: \"FailedEventsOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"splunk\",\n splunk_configuration={\n \"hec_endpoint\": \"https://http-inputs-mydomain.splunkcloud.com:443\",\n \"hec_token\": \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n \"hec_acknowledgment_timeout\": 600,\n \"hec_endpoint_type\": \"Event\",\n \"s3_backup_mode\": \"FailedEventsOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"splunk\",\n SplunkConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationArgs\n {\n HecEndpoint = \"https://http-inputs-mydomain.splunkcloud.com:443\",\n HecToken = \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n HecAcknowledgmentTimeout = 600,\n HecEndpointType = \"Event\",\n S3BackupMode = \"FailedEventsOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"splunk\"),\n\t\t\tSplunkConfiguration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationArgs{\n\t\t\t\tHecEndpoint: pulumi.String(\"https://http-inputs-mydomain.splunkcloud.com:443\"),\n\t\t\t\tHecToken: pulumi.String(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\"),\n\t\t\t\tHecAcknowledgmentTimeout: pulumi.Int(600),\n\t\t\t\tHecEndpointType: pulumi.String(\"Event\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedEventsOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"splunk\")\n .splunkConfiguration(FirehoseDeliveryStreamSplunkConfigurationArgs.builder()\n .hecEndpoint(\"https://http-inputs-mydomain.splunkcloud.com:443\")\n .hecToken(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\")\n .hecAcknowledgmentTimeout(600)\n .hecEndpointType(\"Event\")\n .s3BackupMode(\"FailedEventsOnly\")\n .s3Configuration(FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: splunk\n splunkConfiguration:\n hecEndpoint: https://http-inputs-mydomain.splunkcloud.com:443\n hecToken: 51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\n hecAcknowledgmentTimeout: 600\n hecEndpointType: Event\n s3BackupMode: FailedEventsOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### HTTP Endpoint (e.g., New Relic) Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"http_endpoint\",\n httpEndpointConfiguration: {\n url: \"https://aws-api.newrelic.com/firehose/v1\",\n name: \"New Relic\",\n accessKey: \"my-key\",\n bufferingSize: 15,\n bufferingInterval: 600,\n roleArn: firehose.arn,\n s3BackupMode: \"FailedDataOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n requestConfiguration: {\n contentEncoding: \"GZIP\",\n commonAttributes: [\n {\n name: \"testname\",\n value: \"testvalue\",\n },\n {\n name: \"testname2\",\n value: \"testvalue2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"http_endpoint\",\n http_endpoint_configuration={\n \"url\": \"https://aws-api.newrelic.com/firehose/v1\",\n \"name\": \"New Relic\",\n \"access_key\": \"my-key\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"role_arn\": firehose[\"arn\"],\n \"s3_backup_mode\": \"FailedDataOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"request_configuration\": {\n \"content_encoding\": \"GZIP\",\n \"common_attributes\": [\n {\n \"name\": \"testname\",\n \"value\": \"testvalue\",\n },\n {\n \"name\": \"testname2\",\n \"value\": \"testvalue2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"http_endpoint\",\n HttpEndpointConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs\n {\n Url = \"https://aws-api.newrelic.com/firehose/v1\",\n Name = \"New Relic\",\n AccessKey = \"my-key\",\n BufferingSize = 15,\n BufferingInterval = 600,\n RoleArn = firehose.Arn,\n S3BackupMode = \"FailedDataOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n RequestConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs\n {\n ContentEncoding = \"GZIP\",\n CommonAttributes = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname\",\n Value = \"testvalue\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname2\",\n Value = \"testvalue2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"http_endpoint\"),\n\t\t\tHttpEndpointConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationArgs{\n\t\t\t\tUrl: pulumi.String(\"https://aws-api.newrelic.com/firehose/v1\"),\n\t\t\t\tName: pulumi.String(\"New Relic\"),\n\t\t\t\tAccessKey: pulumi.String(\"my-key\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedDataOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tRequestConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs{\n\t\t\t\t\tContentEncoding: pulumi.String(\"GZIP\"),\n\t\t\t\t\tCommonAttributes: kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname2\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"http_endpoint\")\n .httpEndpointConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationArgs.builder()\n .url(\"https://aws-api.newrelic.com/firehose/v1\")\n .name(\"New Relic\")\n .accessKey(\"my-key\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .roleArn(firehose.arn())\n .s3BackupMode(\"FailedDataOnly\")\n .s3Configuration(FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .requestConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs.builder()\n .contentEncoding(\"GZIP\")\n .commonAttributes( \n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname\")\n .value(\"testvalue\")\n .build(),\n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname2\")\n .value(\"testvalue2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: http_endpoint\n httpEndpointConfiguration:\n url: https://aws-api.newrelic.com/firehose/v1\n name: New Relic\n accessKey: my-key\n bufferingSize: 15\n bufferingInterval: 600\n roleArn: ${firehose.arn}\n s3BackupMode: FailedDataOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n requestConfiguration:\n contentEncoding: GZIP\n commonAttributes:\n - name: testname\n value: testvalue\n - name: testname2\n value: testvalue2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snowflake Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleSnowflakeDestination = new aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", {\n name: \"example-snowflake-destination\",\n destination: \"snowflake\",\n snowflakeConfiguration: {\n accountUrl: \"https://example.snowflakecomputing.com\",\n bufferingSize: 15,\n bufferingInterval: 600,\n database: \"example-db\",\n privateKey: \"...\",\n roleArn: firehose.arn,\n schema: \"example-schema\",\n table: \"example-table\",\n user: \"example-usr\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_snowflake_destination = aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\",\n name=\"example-snowflake-destination\",\n destination=\"snowflake\",\n snowflake_configuration={\n \"account_url\": \"https://example.snowflakecomputing.com\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"database\": \"example-db\",\n \"private_key\": \"...\",\n \"role_arn\": firehose[\"arn\"],\n \"schema\": \"example-schema\",\n \"table\": \"example-table\",\n \"user\": \"example-usr\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleSnowflakeDestination = new Aws.Kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", new()\n {\n Name = \"example-snowflake-destination\",\n Destination = \"snowflake\",\n SnowflakeConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs\n {\n AccountUrl = \"https://example.snowflakecomputing.com\",\n BufferingSize = 15,\n BufferingInterval = 600,\n Database = \"example-db\",\n PrivateKey = \"...\",\n RoleArn = firehose.Arn,\n Schema = \"example-schema\",\n Table = \"example-table\",\n User = \"example-usr\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"example_snowflake_destination\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"example-snowflake-destination\"),\n\t\t\tDestination: pulumi.String(\"snowflake\"),\n\t\t\tSnowflakeConfiguration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationArgs{\n\t\t\t\tAccountUrl: pulumi.String(\"https://example.snowflakecomputing.com\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tDatabase: pulumi.String(\"example-db\"),\n\t\t\t\tPrivateKey: pulumi.String(\"...\"),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tSchema: pulumi.String(\"example-schema\"),\n\t\t\t\tTable: pulumi.String(\"example-table\"),\n\t\t\t\tUser: pulumi.String(\"example-usr\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleSnowflakeDestination = new FirehoseDeliveryStream(\"exampleSnowflakeDestination\", FirehoseDeliveryStreamArgs.builder()\n .name(\"example-snowflake-destination\")\n .destination(\"snowflake\")\n .snowflakeConfiguration(FirehoseDeliveryStreamSnowflakeConfigurationArgs.builder()\n .accountUrl(\"https://example.snowflakecomputing.com\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .database(\"example-db\")\n .privateKey(\"...\")\n .roleArn(firehose.arn())\n .schema(\"example-schema\")\n .table(\"example-table\")\n .user(\"example-usr\")\n .s3Configuration(FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleSnowflakeDestination:\n type: aws:kinesis:FirehoseDeliveryStream\n name: example_snowflake_destination\n properties:\n name: example-snowflake-destination\n destination: snowflake\n snowflakeConfiguration:\n accountUrl: https://example.snowflakecomputing.com\n bufferingSize: 15\n bufferingInterval: 600\n database: example-db\n privateKey: '...'\n roleArn: ${firehose.arn}\n schema: example-schema\n table: example-table\n user: example-usr\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Kinesis Firehose Delivery streams using the stream ARN. For example:\n\n```sh\n$ pulumi import aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream foo arn:aws:firehose:us-east-1:XXX:deliverystream/example\n```\nNote: Import does not work for stream destination `s3`. Consider using `extended_s3` since `s3` destination is deprecated.\n\n",
+ "description": "Provides a Kinesis Firehose Delivery Stream resource. Amazon Kinesis Firehose is a fully managed, elastic service to easily deliver real-time data streams to destinations such as Amazon S3 , Amazon Redshift and Snowflake.\n\nFor more details, see the [Amazon Kinesis Firehose Documentation](https://aws.amazon.com/documentation/firehose/).\n\n## Example Usage\n\n### Extended S3 Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst bucket = new aws.s3.BucketV2(\"bucket\", {bucket: \"tf-test-bucket\"});\nconst firehoseAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"firehose.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst firehoseRole = new aws.iam.Role(\"firehose_role\", {\n name: \"firehose_test_role\",\n assumeRolePolicy: firehoseAssumeRole.then(firehoseAssumeRole =\u003e firehoseAssumeRole.json),\n});\nconst lambdaAssumeRole = aws.iam.getPolicyDocument({\n statements: [{\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"lambda.amazonaws.com\"],\n }],\n actions: [\"sts:AssumeRole\"],\n }],\n});\nconst lambdaIam = new aws.iam.Role(\"lambda_iam\", {\n name: \"lambda_iam\",\n assumeRolePolicy: lambdaAssumeRole.then(lambdaAssumeRole =\u003e lambdaAssumeRole.json),\n});\nconst lambdaProcessor = new aws.lambda.Function(\"lambda_processor\", {\n code: new pulumi.asset.FileArchive(\"lambda.zip\"),\n name: \"firehose_lambda_processor\",\n role: lambdaIam.arn,\n handler: \"exports.handler\",\n runtime: aws.lambda.Runtime.NodeJS20dX,\n});\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: pulumi.interpolate`${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\nconst bucketAcl = new aws.s3.BucketAclV2(\"bucket_acl\", {\n bucket: bucket.id,\n acl: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nbucket = aws.s3.BucketV2(\"bucket\", bucket=\"tf-test-bucket\")\nfirehose_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"firehose.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nfirehose_role = aws.iam.Role(\"firehose_role\",\n name=\"firehose_test_role\",\n assume_role_policy=firehose_assume_role.json)\nlambda_assume_role = aws.iam.get_policy_document(statements=[{\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"lambda.amazonaws.com\"],\n }],\n \"actions\": [\"sts:AssumeRole\"],\n}])\nlambda_iam = aws.iam.Role(\"lambda_iam\",\n name=\"lambda_iam\",\n assume_role_policy=lambda_assume_role.json)\nlambda_processor = aws.lambda_.Function(\"lambda_processor\",\n code=pulumi.FileArchive(\"lambda.zip\"),\n name=\"firehose_lambda_processor\",\n role=lambda_iam.arn,\n handler=\"exports.handler\",\n runtime=aws.lambda_.Runtime.NODE_JS20D_X)\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role.arn,\n \"bucket_arn\": bucket.arn,\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": lambda_processor.arn.apply(lambda arn: f\"{arn}:$LATEST\"),\n }],\n }],\n },\n })\nbucket_acl = aws.s3.BucketAclV2(\"bucket_acl\",\n bucket=bucket.id,\n acl=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"tf-test-bucket\",\n });\n\n var firehoseAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"firehose.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var firehoseRole = new Aws.Iam.Role(\"firehose_role\", new()\n {\n Name = \"firehose_test_role\",\n AssumeRolePolicy = firehoseAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaAssumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"lambda.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n },\n },\n });\n\n var lambdaIam = new Aws.Iam.Role(\"lambda_iam\", new()\n {\n Name = \"lambda_iam\",\n AssumeRolePolicy = lambdaAssumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var lambdaProcessor = new Aws.Lambda.Function(\"lambda_processor\", new()\n {\n Code = new FileArchive(\"lambda.zip\"),\n Name = \"firehose_lambda_processor\",\n Role = lambdaIam.Arn,\n Handler = \"exports.handler\",\n Runtime = Aws.Lambda.Runtime.NodeJS20dX,\n });\n\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = lambdaProcessor.Arn.Apply(arn =\u003e $\"{arn}:$LATEST\"),\n },\n },\n },\n },\n },\n },\n });\n\n var bucketAcl = new Aws.S3.BucketAclV2(\"bucket_acl\", new()\n {\n Bucket = bucket.Id,\n Acl = \"private\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"tf-test-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"firehose.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehoseRole, err := iam.NewRole(ctx, \"firehose_role\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"firehose_test_role\"),\n\t\t\tAssumeRolePolicy: pulumi.String(firehoseAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaAssumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tEffect: pulumi.StringRef(\"Allow\"),\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"lambda.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaIam, err := iam.NewRole(ctx, \"lambda_iam\", \u0026iam.RoleArgs{\n\t\t\tName: pulumi.String(\"lambda_iam\"),\n\t\t\tAssumeRolePolicy: pulumi.String(lambdaAssumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlambdaProcessor, err := lambda.NewFunction(ctx, \"lambda_processor\", \u0026lambda.FunctionArgs{\n\t\t\tCode: pulumi.NewFileArchive(\"lambda.zip\"),\n\t\t\tName: pulumi.String(\"firehose_lambda_processor\"),\n\t\t\tRole: lambdaIam.Arn,\n\t\t\tHandler: pulumi.String(\"exports.handler\"),\n\t\t\tRuntime: pulumi.String(lambda.RuntimeNodeJS20dX),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: firehoseRole.Arn,\n\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: lambdaProcessor.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v:$LATEST\", arn), nil\n\t\t\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = s3.NewBucketAclV2(ctx, \"bucket_acl\", \u0026s3.BucketAclV2Args{\n\t\t\tBucket: bucket.ID(),\n\t\t\tAcl: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.lambda.Function;\nimport com.pulumi.aws.lambda.FunctionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport com.pulumi.aws.s3.BucketAclV2;\nimport com.pulumi.aws.s3.BucketAclV2Args;\nimport com.pulumi.asset.FileArchive;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"tf-test-bucket\")\n .build());\n\n final var firehoseAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"firehose.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var firehoseRole = new Role(\"firehoseRole\", RoleArgs.builder()\n .name(\"firehose_test_role\")\n .assumeRolePolicy(firehoseAssumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n final var lambdaAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"lambda.amazonaws.com\")\n .build())\n .actions(\"sts:AssumeRole\")\n .build())\n .build());\n\n var lambdaIam = new Role(\"lambdaIam\", RoleArgs.builder()\n .name(\"lambda_iam\")\n .assumeRolePolicy(lambdaAssumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n var lambdaProcessor = new Function(\"lambdaProcessor\", FunctionArgs.builder()\n .code(new FileArchive(\"lambda.zip\"))\n .name(\"firehose_lambda_processor\")\n .role(lambdaIam.arn())\n .handler(\"exports.handler\")\n .runtime(\"nodejs20.x\")\n .build());\n\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(lambdaProcessor.arn().applyValue(arn -\u003e String.format(\"%s:$LATEST\", arn)))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var bucketAcl = new BucketAclV2(\"bucketAcl\", BucketAclV2Args.builder()\n .bucket(bucket.id())\n .acl(\"private\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: tf-test-bucket\n bucketAcl:\n type: aws:s3:BucketAclV2\n name: bucket_acl\n properties:\n bucket: ${bucket.id}\n acl: private\n firehoseRole:\n type: aws:iam:Role\n name: firehose_role\n properties:\n name: firehose_test_role\n assumeRolePolicy: ${firehoseAssumeRole.json}\n lambdaIam:\n type: aws:iam:Role\n name: lambda_iam\n properties:\n name: lambda_iam\n assumeRolePolicy: ${lambdaAssumeRole.json}\n lambdaProcessor:\n type: aws:lambda:Function\n name: lambda_processor\n properties:\n code:\n fn::FileArchive: lambda.zip\n name: firehose_lambda_processor\n role: ${lambdaIam.arn}\n handler: exports.handler\n runtime: nodejs20.x\nvariables:\n firehoseAssumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - firehose.amazonaws.com\n actions:\n - sts:AssumeRole\n lambdaAssumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n principals:\n - type: Service\n identifiers:\n - lambda.amazonaws.com\n actions:\n - sts:AssumeRole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Extended S3 Destination with dynamic partitioning\n\nThese examples use built-in Firehose functionality, rather than requiring a lambda.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [\n {\n type: \"RecordDeAggregation\",\n parameters: [{\n parameterName: \"SubRecordType\",\n parameterValue: \"JSON\",\n }],\n },\n {\n type: \"AppendDelimiterToRecord\",\n },\n {\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [\n {\n \"type\": \"RecordDeAggregation\",\n \"parameters\": [{\n \"parameter_name\": \"SubRecordType\",\n \"parameter_value\": \"JSON\",\n }],\n },\n {\n \"type\": \"AppendDelimiterToRecord\",\n },\n {\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{customer_id:.customer_id}\",\n },\n ],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"RecordDeAggregation\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"SubRecordType\",\n ParameterValue = \"JSON\",\n },\n },\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"AppendDelimiterToRecord\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"RecordDeAggregation\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"SubRecordType\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JSON\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"AppendDelimiterToRecord\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(\"true\")\n .build())\n .prefix(\"data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"RecordDeAggregation\")\n .parameters(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"SubRecordType\")\n .parameterValue(\"JSON\")\n .build())\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"AppendDelimiterToRecord\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: RecordDeAggregation\n parameters:\n - parameterName: SubRecordType\n parameterValue: JSON\n - type: AppendDelimiterToRecord\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nMultiple Dynamic Partitioning Keys (maximum of 50) can be added by comma separating the `parameter_value`.\n\nThe following example adds the Dynamic Partitioning Keys: `store_id` and `customer_id` to the S3 prefix.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", {\n name: \"kinesis-firehose-extended-s3-test-stream\",\n destination: \"extended_s3\",\n extendedS3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 64,\n dynamicPartitioningConfiguration: {\n enabled: true,\n },\n prefix: \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n errorOutputPrefix: \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"MetadataExtraction\",\n parameters: [\n {\n parameterName: \"JsonParsingEngine\",\n parameterValue: \"JQ-1.6\",\n },\n {\n parameterName: \"MetadataExtractionQuery\",\n parameterValue: \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nextended_s3_stream = aws.kinesis.FirehoseDeliveryStream(\"extended_s3_stream\",\n name=\"kinesis-firehose-extended-s3-test-stream\",\n destination=\"extended_s3\",\n extended_s3_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 64,\n \"dynamic_partitioning_configuration\": {\n \"enabled\": True,\n },\n \"prefix\": \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n \"error_output_prefix\": \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"MetadataExtraction\",\n \"parameters\": [\n {\n \"parameter_name\": \"JsonParsingEngine\",\n \"parameter_value\": \"JQ-1.6\",\n },\n {\n \"parameter_name\": \"MetadataExtractionQuery\",\n \"parameter_value\": \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var extendedS3Stream = new Aws.Kinesis.FirehoseDeliveryStream(\"extended_s3_stream\", new()\n {\n Name = \"kinesis-firehose-extended-s3-test-stream\",\n Destination = \"extended_s3\",\n ExtendedS3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 64,\n DynamicPartitioningConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs\n {\n Enabled = true,\n },\n Prefix = \"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\",\n ErrorOutputPrefix = \"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\",\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"MetadataExtraction\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"JsonParsingEngine\",\n ParameterValue = \"JQ-1.6\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"MetadataExtractionQuery\",\n ParameterValue = \"{store_id:.store_id,customer_id:.customer_id}\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"extended_s3_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-extended-s3-test-stream\"),\n\t\t\tDestination: pulumi.String(\"extended_s3\"),\n\t\t\tExtendedS3Configuration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\tBufferingSize: pulumi.Int(64),\n\t\t\t\tDynamicPartitioningConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tPrefix: pulumi.String(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\"),\n\t\t\t\tErrorOutputPrefix: pulumi.String(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\"),\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"MetadataExtraction\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"JsonParsingEngine\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"JQ-1.6\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"MetadataExtractionQuery\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"{store_id:.store_id,customer_id:.customer_id}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var extendedS3Stream = new FirehoseDeliveryStream(\"extendedS3Stream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-extended-s3-test-stream\")\n .destination(\"extended_s3\")\n .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(64)\n .dynamicPartitioningConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs.builder()\n .enabled(\"true\")\n .build())\n .prefix(\"data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\")\n .errorOutputPrefix(\"errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\")\n .processingConfiguration(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"MetadataExtraction\")\n .parameters( \n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"JsonParsingEngine\")\n .parameterValue(\"JQ-1.6\")\n .build(),\n FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"MetadataExtractionQuery\")\n .parameterValue(\"{store_id:.store_id,customer_id:.customer_id}\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedS3Stream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: extended_s3_stream\n properties:\n name: kinesis-firehose-extended-s3-test-stream\n destination: extended_s3\n extendedS3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 64\n dynamicPartitioningConfiguration:\n enabled: 'true'\n prefix: data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/\n errorOutputPrefix: errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: MetadataExtraction\n parameters:\n - parameterName: JsonParsingEngine\n parameterValue: JQ-1.6\n - parameterName: MetadataExtractionQuery\n parameterValue: '{store_id:.store_id,customer_id:.customer_id}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redshift Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.redshift.Cluster(\"test_cluster\", {\n clusterIdentifier: \"tf-redshift-cluster\",\n databaseName: \"test\",\n masterUsername: \"testuser\",\n masterPassword: \"T3stPass\",\n nodeType: \"dc1.large\",\n clusterType: \"single-node\",\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"redshift\",\n redshiftConfiguration: {\n roleArn: firehoseRole.arn,\n clusterJdbcurl: pulumi.interpolate`jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}`,\n username: \"testuser\",\n password: \"T3stPass\",\n dataTableName: \"test-table\",\n copyOptions: \"delimiter '|'\",\n dataTableColumns: \"test-col\",\n s3BackupMode: \"Enabled\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n s3BackupConfiguration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 15,\n bufferingInterval: 300,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.redshift.Cluster(\"test_cluster\",\n cluster_identifier=\"tf-redshift-cluster\",\n database_name=\"test\",\n master_username=\"testuser\",\n master_password=\"T3stPass\",\n node_type=\"dc1.large\",\n cluster_type=\"single-node\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"redshift\",\n redshift_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"cluster_jdbcurl\": pulumi.Output.all(\n endpoint=test_cluster.endpoint,\n database_name=test_cluster.database_name\n).apply(lambda resolved_outputs: f\"jdbc:redshift://{resolved_outputs['endpoint']}/{resolved_outputs['database_name']}\")\n,\n \"username\": \"testuser\",\n \"password\": \"T3stPass\",\n \"data_table_name\": \"test-table\",\n \"copy_options\": \"delimiter '|'\",\n \"data_table_columns\": \"test-col\",\n \"s3_backup_mode\": \"Enabled\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"s3_backup_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 15,\n \"buffering_interval\": 300,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.RedShift.Cluster(\"test_cluster\", new()\n {\n ClusterIdentifier = \"tf-redshift-cluster\",\n DatabaseName = \"test\",\n MasterUsername = \"testuser\",\n MasterPassword = \"T3stPass\",\n NodeType = \"dc1.large\",\n ClusterType = \"single-node\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"redshift\",\n RedshiftConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n ClusterJdbcurl = Output.Tuple(testCluster.Endpoint, testCluster.DatabaseName).Apply(values =\u003e\n {\n var endpoint = values.Item1;\n var databaseName = values.Item2;\n return $\"jdbc:redshift://{endpoint}/{databaseName}\";\n }),\n Username = \"testuser\",\n Password = \"T3stPass\",\n DataTableName = \"test-table\",\n CopyOptions = \"delimiter '|'\",\n DataTableColumns = \"test-col\",\n S3BackupMode = \"Enabled\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n S3BackupConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 15,\n BufferingInterval = 300,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/redshift\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := redshift.NewCluster(ctx, \"test_cluster\", \u0026redshift.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"tf-redshift-cluster\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tMasterUsername: pulumi.String(\"testuser\"),\n\t\t\tMasterPassword: pulumi.String(\"T3stPass\"),\n\t\t\tNodeType: pulumi.String(\"dc1.large\"),\n\t\t\tClusterType: pulumi.String(\"single-node\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"redshift\"),\n\t\t\tRedshiftConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tClusterJdbcurl: pulumi.All(testCluster.Endpoint, testCluster.DatabaseName).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tendpoint := _args[0].(string)\n\t\t\t\t\tdatabaseName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"jdbc:redshift://%v/%v\", endpoint, databaseName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUsername: pulumi.String(\"testuser\"),\n\t\t\t\tPassword: pulumi.String(\"T3stPass\"),\n\t\t\t\tDataTableName: pulumi.String(\"test-table\"),\n\t\t\t\tCopyOptions: pulumi.String(\"delimiter '|'\"),\n\t\t\t\tDataTableColumns: pulumi.String(\"test-col\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"Enabled\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tS3BackupConfiguration: \u0026kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\t\tBufferingInterval: pulumi.Int(300),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.redshift.Cluster;\nimport com.pulumi.aws.redshift.ClusterArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Cluster(\"testCluster\", ClusterArgs.builder()\n .clusterIdentifier(\"tf-redshift-cluster\")\n .databaseName(\"test\")\n .masterUsername(\"testuser\")\n .masterPassword(\"T3stPass\")\n .nodeType(\"dc1.large\")\n .clusterType(\"single-node\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"redshift\")\n .redshiftConfiguration(FirehoseDeliveryStreamRedshiftConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .clusterJdbcurl(Output.tuple(testCluster.endpoint(), testCluster.databaseName()).applyValue(values -\u003e {\n var endpoint = values.t1;\n var databaseName = values.t2;\n return String.format(\"jdbc:redshift://%s/%s\", endpoint,databaseName);\n }))\n .username(\"testuser\")\n .password(\"T3stPass\")\n .dataTableName(\"test-table\")\n .copyOptions(\"delimiter '|'\")\n .dataTableColumns(\"test-col\")\n .s3BackupMode(\"Enabled\")\n .s3Configuration(FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .s3BackupConfiguration(FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(15)\n .bufferingInterval(300)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:redshift:Cluster\n name: test_cluster\n properties:\n clusterIdentifier: tf-redshift-cluster\n databaseName: test\n masterUsername: testuser\n masterPassword: T3stPass\n nodeType: dc1.large\n clusterType: single-node\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: redshift\n redshiftConfiguration:\n roleArn: ${firehoseRole.arn}\n clusterJdbcurl: jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}\n username: testuser\n password: T3stPass\n dataTableName: test-table\n copyOptions: delimiter '|'\n dataTableColumns: test-col\n s3BackupMode: Enabled\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n s3BackupConfiguration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 15\n bufferingInterval: 300\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {domainName: \"firehose-es-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\", domain_name=\"firehose-es-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-es-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-es-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-es-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-es-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.elasticsearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"t2.small.elasticsearch\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose-elasticsearch = aws.iam.getPolicyDocumentOutput({\n statements: [\n {\n effect: \"Allow\",\n actions: [\"es:*\"],\n resources: [\n testCluster.arn,\n pulumi.interpolate`${testCluster.arn}/*`,\n ],\n },\n {\n effect: \"Allow\",\n actions: [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n resources: [\"*\"],\n },\n ],\n});\nconst firehose_elasticsearchRolePolicy = new aws.iam.RolePolicy(\"firehose-elasticsearch\", {\n name: \"elasticsearch\",\n role: firehose.id,\n policy: firehose_elasticsearch.apply(firehose_elasticsearch =\u003e firehose_elasticsearch.json),\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"kinesis-firehose-es\",\n destination: \"elasticsearch\",\n elasticsearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n typeName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_elasticsearchRolePolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.elasticsearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"t2.small.elasticsearch\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_elasticsearch = aws.iam.get_policy_document_output(statements=[\n {\n \"effect\": \"Allow\",\n \"actions\": [\"es:*\"],\n \"resources\": [\n test_cluster.arn,\n test_cluster.arn.apply(lambda arn: f\"{arn}/*\"),\n ],\n },\n {\n \"effect\": \"Allow\",\n \"actions\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n ],\n \"resources\": [\"*\"],\n },\n])\nfirehose_elasticsearch_role_policy = aws.iam.RolePolicy(\"firehose-elasticsearch\",\n name=\"elasticsearch\",\n role=firehose[\"id\"],\n policy=firehose_elasticsearch.json)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"kinesis-firehose-es\",\n destination=\"elasticsearch\",\n elasticsearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"type_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_elasticsearch_role_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.ElasticSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.ElasticSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"t2.small.elasticsearch\",\n },\n EbsOptions = new Aws.ElasticSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.ElasticSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_elasticsearch = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"es:*\",\n },\n Resources = new[]\n {\n testCluster.Arn,\n $\"{testCluster.Arn}/*\",\n },\n },\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Effect = \"Allow\",\n Actions = new[]\n {\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\",\n },\n Resources = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var firehose_elasticsearchRolePolicy = new Aws.Iam.RolePolicy(\"firehose-elasticsearch\", new()\n {\n Name = \"elasticsearch\",\n Role = firehose.Id,\n Policy = firehose_elasticsearch.Apply(firehose_elasticsearch =\u003e firehose_elasticsearch.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json)),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"kinesis-firehose-es\",\n Destination = \"elasticsearch\",\n ElasticsearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n TypeName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_elasticsearchRolePolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := elasticsearch.NewDomain(ctx, \"test_cluster\", \u0026elasticsearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026elasticsearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"t2.small.elasticsearch\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026elasticsearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026elasticsearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirehose_elasticsearch := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"es:*\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\ttestCluster.Arn,\n\t\t\t\t\t\ttestCluster.Arn.ApplyT(func(arn string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v/*\", arn), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcs\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeVpcAttribute\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSubnets\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeSecurityGroups\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DescribeNetworkInterfaces\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterface\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:CreateNetworkInterfacePermission\"),\n\t\t\t\t\t\tpulumi.String(\"ec2:DeleteNetworkInterface\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = iam.NewRolePolicy(ctx, \"firehose-elasticsearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"elasticsearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.String(firehose_elasticsearch.ApplyT(func(firehose_elasticsearch iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026firehose_elasticsearch.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-es\"),\n\t\t\tDestination: pulumi.String(\"elasticsearch\"),\n\t\t\tElasticsearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tTypeName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_elasticsearchRolePolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.elasticsearch.Domain;\nimport com.pulumi.aws.elasticsearch.DomainArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.elasticsearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"t2.small.elasticsearch\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n final var firehose-elasticsearch = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements( \n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions(\"es:*\")\n .resources( \n testCluster.arn(),\n testCluster.arn().applyValue(arn -\u003e String.format(\"%s/*\", arn)))\n .build(),\n GetPolicyDocumentStatementArgs.builder()\n .effect(\"Allow\")\n .actions( \n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\")\n .resources(\"*\")\n .build())\n .build());\n\n var firehose_elasticsearchRolePolicy = new RolePolicy(\"firehose-elasticsearchRolePolicy\", RolePolicyArgs.builder()\n .name(\"elasticsearch\")\n .role(firehose.id())\n .policy(firehose_elasticsearch.applyValue(firehose_elasticsearch -\u003e firehose_elasticsearch.json()))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-es\")\n .destination(\"elasticsearch\")\n .elasticsearchConfiguration(FirehoseDeliveryStreamElasticsearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .typeName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_elasticsearchRolePolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:elasticsearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: t2.small.elasticsearch\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-elasticsearchRolePolicy:\n type: aws:iam:RolePolicy\n name: firehose-elasticsearch\n properties:\n name: elasticsearch\n role: ${firehose.id}\n policy: ${[\"firehose-elasticsearch\"].json}\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: kinesis-firehose-es\n destination: elasticsearch\n elasticsearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n typeName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependson:\n - ${[\"firehose-elasticsearchRolePolicy\"]}\nvariables:\n firehose-elasticsearch:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - effect: Allow\n actions:\n - es:*\n resources:\n - ${testCluster.arn}\n - ${testCluster.arn}/*\n - effect: Allow\n actions:\n - ec2:DescribeVpcs\n - ec2:DescribeVpcAttribute\n - ec2:DescribeSubnets\n - ec2:DescribeSecurityGroups\n - ec2:DescribeNetworkInterfaces\n - ec2:CreateNetworkInterface\n - ec2:CreateNetworkInterfacePermission\n - ec2:DeleteNetworkInterface\n resources:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {domainName: \"firehose-os-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\", domain_name=\"firehose-os-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"firehose-os-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"firehose-os-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"firehose-os-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: firehose-os-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Destination With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCluster = new aws.opensearch.Domain(\"test_cluster\", {\n domainName: \"es-test\",\n clusterConfig: {\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n instanceType: \"m4.large.search\",\n },\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n },\n vpcOptions: {\n securityGroupIds: [first.id],\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n },\n});\nconst firehose_opensearch = new aws.iam.RolePolicy(\"firehose-opensearch\", {\n name: \"opensearch\",\n role: firehose.id,\n policy: pulumi.interpolate`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`,\n});\nconst test = new aws.kinesis.FirehoseDeliveryStream(\"test\", {\n name: \"pulumi-kinesis-firehose-os\",\n destination: \"opensearch\",\n opensearchConfiguration: {\n domainArn: testCluster.arn,\n roleArn: firehose.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n },\n vpcConfig: {\n subnetIds: [\n firstAwsSubnet.id,\n second.id,\n ],\n securityGroupIds: [first.id],\n roleArn: firehose.arn,\n },\n },\n}, {\n dependsOn: [firehose_opensearch],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_cluster = aws.opensearch.Domain(\"test_cluster\",\n domain_name=\"es-test\",\n cluster_config={\n \"instance_count\": 2,\n \"zone_awareness_enabled\": True,\n \"instance_type\": \"m4.large.search\",\n },\n ebs_options={\n \"ebs_enabled\": True,\n \"volume_size\": 10,\n },\n vpc_options={\n \"security_group_ids\": [first[\"id\"]],\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n })\nfirehose_opensearch = aws.iam.RolePolicy(\"firehose-opensearch\",\n name=\"opensearch\",\n role=firehose[\"id\"],\n policy=pulumi.Output.all(\n testClusterArn=test_cluster.arn,\n testClusterArn1=test_cluster.arn\n).apply(lambda resolved_outputs: f\"\"\"{{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"{resolved_outputs['testClusterArn']}\",\n \"{resolved_outputs['testClusterArn1']}/*\"\n ]\n }},\n {{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }}\n ]\n}}\n\"\"\")\n)\ntest = aws.kinesis.FirehoseDeliveryStream(\"test\",\n name=\"pulumi-kinesis-firehose-os\",\n destination=\"opensearch\",\n opensearch_configuration={\n \"domain_arn\": test_cluster.arn,\n \"role_arn\": firehose[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [\n first_aws_subnet[\"id\"],\n second[\"id\"],\n ],\n \"security_group_ids\": [first[\"id\"]],\n \"role_arn\": firehose[\"arn\"],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[firehose_opensearch]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCluster = new Aws.OpenSearch.Domain(\"test_cluster\", new()\n {\n DomainName = \"es-test\",\n ClusterConfig = new Aws.OpenSearch.Inputs.DomainClusterConfigArgs\n {\n InstanceCount = 2,\n ZoneAwarenessEnabled = true,\n InstanceType = \"m4.large.search\",\n },\n EbsOptions = new Aws.OpenSearch.Inputs.DomainEbsOptionsArgs\n {\n EbsEnabled = true,\n VolumeSize = 10,\n },\n VpcOptions = new Aws.OpenSearch.Inputs.DomainVpcOptionsArgs\n {\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n },\n });\n\n var firehose_opensearch = new Aws.Iam.RolePolicy(\"firehose-opensearch\", new()\n {\n Name = \"opensearch\",\n Role = firehose.Id,\n Policy = Output.Tuple(testCluster.Arn, testCluster.Arn).Apply(values =\u003e\n {\n var testClusterArn = values.Item1;\n var testClusterArn1 = values.Item2;\n return @$\"{{\n \"\"Version\"\": \"\"2012-10-17\"\",\n \"\"Statement\"\": [\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"es:*\"\"\n ],\n \"\"Resource\"\": [\n \"\"{testClusterArn}\"\",\n \"\"{testClusterArn1}/*\"\"\n ]\n }},\n {{\n \"\"Effect\"\": \"\"Allow\"\",\n \"\"Action\"\": [\n \"\"ec2:DescribeVpcs\"\",\n \"\"ec2:DescribeVpcAttribute\"\",\n \"\"ec2:DescribeSubnets\"\",\n \"\"ec2:DescribeSecurityGroups\"\",\n \"\"ec2:DescribeNetworkInterfaces\"\",\n \"\"ec2:CreateNetworkInterface\"\",\n \"\"ec2:CreateNetworkInterfacePermission\"\",\n \"\"ec2:DeleteNetworkInterface\"\"\n ],\n \"\"Resource\"\": [\n \"\"*\"\"\n ]\n }}\n ]\n}}\n\";\n }),\n });\n\n var test = new Aws.Kinesis.FirehoseDeliveryStream(\"test\", new()\n {\n Name = \"pulumi-kinesis-firehose-os\",\n Destination = \"opensearch\",\n OpensearchConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs\n {\n DomainArn = testCluster.Arn,\n RoleArn = firehose.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n },\n VpcConfig = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs\n {\n SubnetIds = new[]\n {\n firstAwsSubnet.Id,\n second.Id,\n },\n SecurityGroupIds = new[]\n {\n first.Id,\n },\n RoleArn = firehose.Arn,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firehose_opensearch,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCluster, err := opensearch.NewDomain(ctx, \"test_cluster\", \u0026opensearch.DomainArgs{\n\t\t\tDomainName: pulumi.String(\"es-test\"),\n\t\t\tClusterConfig: \u0026opensearch.DomainClusterConfigArgs{\n\t\t\t\tInstanceCount: pulumi.Int(2),\n\t\t\t\tZoneAwarenessEnabled: pulumi.Bool(true),\n\t\t\t\tInstanceType: pulumi.String(\"m4.large.search\"),\n\t\t\t},\n\t\t\tEbsOptions: \u0026opensearch.DomainEbsOptionsArgs{\n\t\t\t\tEbsEnabled: pulumi.Bool(true),\n\t\t\t\tVolumeSize: pulumi.Int(10),\n\t\t\t},\n\t\t\tVpcOptions: \u0026opensearch.DomainVpcOptionsArgs{\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tfirst.Id,\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\tsecond.Id,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewRolePolicy(ctx, \"firehose-opensearch\", \u0026iam.RolePolicyArgs{\n\t\t\tName: pulumi.String(\"opensearch\"),\n\t\t\tRole: pulumi.Any(firehose.Id),\n\t\t\tPolicy: pulumi.All(testCluster.Arn, testCluster.Arn).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\ttestClusterArn := _args[0].(string)\n\t\t\t\ttestClusterArn1 := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(`{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%v\",\n \"%v/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n`, testClusterArn, testClusterArn1), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"pulumi-kinesis-firehose-os\"),\n\t\t\tDestination: pulumi.String(\"opensearch\"),\n\t\t\tOpensearchConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{\n\t\t\t\tDomainArn: testCluster.Arn,\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t},\n\t\t\t\tVpcConfig: \u0026kinesis.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs{\n\t\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\t\tfirstAwsSubnet.Id,\n\t\t\t\t\t\tsecond.Id,\n\t\t\t\t\t},\n\t\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\t\tfirst.Id,\n\t\t\t\t\t},\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirehose_opensearch,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.Domain;\nimport com.pulumi.aws.opensearch.DomainArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainClusterConfigArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainEbsOptionsArgs;\nimport com.pulumi.aws.opensearch.inputs.DomainVpcOptionsArgs;\nimport com.pulumi.aws.iam.RolePolicy;\nimport com.pulumi.aws.iam.RolePolicyArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCluster = new Domain(\"testCluster\", DomainArgs.builder()\n .domainName(\"es-test\")\n .clusterConfig(DomainClusterConfigArgs.builder()\n .instanceCount(2)\n .zoneAwarenessEnabled(true)\n .instanceType(\"m4.large.search\")\n .build())\n .ebsOptions(DomainEbsOptionsArgs.builder()\n .ebsEnabled(true)\n .volumeSize(10)\n .build())\n .vpcOptions(DomainVpcOptionsArgs.builder()\n .securityGroupIds(first.id())\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .build())\n .build());\n\n var firehose_opensearch = new RolePolicy(\"firehose-opensearch\", RolePolicyArgs.builder()\n .name(\"opensearch\")\n .role(firehose.id())\n .policy(Output.tuple(testCluster.arn(), testCluster.arn()).applyValue(values -\u003e {\n var testClusterArn = values.t1;\n var testClusterArn1 = values.t2;\n return \"\"\"\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"%s\",\n \"%s/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n\", testClusterArn,testClusterArn1);\n }))\n .build());\n\n var test = new FirehoseDeliveryStream(\"test\", FirehoseDeliveryStreamArgs.builder()\n .name(\"pulumi-kinesis-firehose-os\")\n .destination(\"opensearch\")\n .opensearchConfiguration(FirehoseDeliveryStreamOpensearchConfigurationArgs.builder()\n .domainArn(testCluster.arn())\n .roleArn(firehose.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .build())\n .vpcConfig(FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs.builder()\n .subnetIds( \n firstAwsSubnet.id(),\n second.id())\n .securityGroupIds(first.id())\n .roleArn(firehose.arn())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firehose_opensearch)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCluster:\n type: aws:opensearch:Domain\n name: test_cluster\n properties:\n domainName: es-test\n clusterConfig:\n instanceCount: 2\n zoneAwarenessEnabled: true\n instanceType: m4.large.search\n ebsOptions:\n ebsEnabled: true\n volumeSize: 10\n vpcOptions:\n securityGroupIds:\n - ${first.id}\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n firehose-opensearch:\n type: aws:iam:RolePolicy\n properties:\n name: opensearch\n role: ${firehose.id}\n policy: |\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"es:*\"\n ],\n \"Resource\": [\n \"${testCluster.arn}\",\n \"${testCluster.arn}/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:DescribeVpcs\",\n \"ec2:DescribeVpcAttribute\",\n \"ec2:DescribeSubnets\",\n \"ec2:DescribeSecurityGroups\",\n \"ec2:DescribeNetworkInterfaces\",\n \"ec2:CreateNetworkInterface\",\n \"ec2:CreateNetworkInterfacePermission\",\n \"ec2:DeleteNetworkInterface\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n }\n test:\n type: aws:kinesis:FirehoseDeliveryStream\n properties:\n name: pulumi-kinesis-firehose-os\n destination: opensearch\n opensearchConfiguration:\n domainArn: ${testCluster.arn}\n roleArn: ${firehose.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n vpcConfig:\n subnetIds:\n - ${firstAwsSubnet.id}\n - ${second.id}\n securityGroupIds:\n - ${first.id}\n roleArn: ${firehose.arn}\n options:\n dependson:\n - ${[\"firehose-opensearch\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch Serverless Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testCollection = new aws.opensearch.ServerlessCollection(\"test_collection\", {name: \"firehose-osserverless-test\"});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"opensearchserverless\",\n opensearchserverlessConfiguration: {\n collectionEndpoint: testCollection.collectionEndpoint,\n roleArn: firehoseRole.arn,\n indexName: \"test\",\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_collection = aws.opensearch.ServerlessCollection(\"test_collection\", name=\"firehose-osserverless-test\")\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"opensearchserverless\",\n opensearchserverless_configuration={\n \"collection_endpoint\": test_collection.collection_endpoint,\n \"role_arn\": firehose_role[\"arn\"],\n \"index_name\": \"test\",\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testCollection = new Aws.OpenSearch.ServerlessCollection(\"test_collection\", new()\n {\n Name = \"firehose-osserverless-test\",\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"opensearchserverless\",\n OpensearchserverlessConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs\n {\n CollectionEndpoint = testCollection.CollectionEndpoint,\n RoleArn = firehoseRole.Arn,\n IndexName = \"test\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestCollection, err := opensearch.NewServerlessCollection(ctx, \"test_collection\", \u0026opensearch.ServerlessCollectionArgs{\n\t\t\tName: pulumi.String(\"firehose-osserverless-test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"opensearchserverless\"),\n\t\t\tOpensearchserverlessConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs{\n\t\t\t\tCollectionEndpoint: testCollection.CollectionEndpoint,\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tIndexName: pulumi.String(\"test\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.opensearch.ServerlessCollection;\nimport com.pulumi.aws.opensearch.ServerlessCollectionArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testCollection = new ServerlessCollection(\"testCollection\", ServerlessCollectionArgs.builder()\n .name(\"firehose-osserverless-test\")\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"opensearchserverless\")\n .opensearchserverlessConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs.builder()\n .collectionEndpoint(testCollection.collectionEndpoint())\n .roleArn(firehoseRole.arn())\n .indexName(\"test\")\n .s3Configuration(FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .processingConfiguration(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testCollection:\n type: aws:opensearch:ServerlessCollection\n name: test_collection\n properties:\n name: firehose-osserverless-test\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: opensearchserverless\n opensearchserverlessConfiguration:\n collectionEndpoint: ${testCollection.collectionEndpoint}\n roleArn: ${firehoseRole.arn}\n indexName: test\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Iceberg Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getCallerIdentity({});\nconst currentGetPartition = aws.getPartition({});\nconst currentGetRegion = aws.getRegion({});\nconst bucket = new aws.s3.BucketV2(\"bucket\", {\n bucket: \"test-bucket\",\n forceDestroy: true,\n});\nconst test = new aws.glue.CatalogDatabase(\"test\", {name: \"test\"});\nconst testCatalogTable = new aws.glue.CatalogTable(\"test\", {\n name: \"test\",\n databaseName: test.name,\n parameters: {\n format: \"parquet\",\n },\n tableType: \"EXTERNAL_TABLE\",\n openTableFormatInput: {\n icebergInput: {\n metadataOperation: \"CREATE\",\n version: \"2\",\n },\n },\n storageDescriptor: {\n location: pulumi.interpolate`s3://${bucket.id}`,\n columns: [{\n name: \"my_column_1\",\n type: \"int\",\n }],\n },\n});\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"iceberg\",\n icebergConfiguration: {\n roleArn: firehoseRole.arn,\n catalogArn: Promise.all([currentGetPartition, currentGetRegion, current]).then(([currentGetPartition, currentGetRegion, current]) =\u003e `arn:${currentGetPartition.partition}:glue:${currentGetRegion.name}:${current.accountId}:catalog`),\n bufferingSize: 10,\n bufferingInterval: 400,\n s3Configuration: {\n roleArn: firehoseRole.arn,\n bucketArn: bucket.arn,\n },\n destinationTableConfigurations: [{\n databaseName: test.name,\n tableName: testCatalogTable.name,\n }],\n processingConfiguration: {\n enabled: true,\n processors: [{\n type: \"Lambda\",\n parameters: [{\n parameterName: \"LambdaArn\",\n parameterValue: `${lambdaProcessor.arn}:$LATEST`,\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\ncurrent_get_partition = aws.get_partition()\ncurrent_get_region = aws.get_region()\nbucket = aws.s3.BucketV2(\"bucket\",\n bucket=\"test-bucket\",\n force_destroy=True)\ntest = aws.glue.CatalogDatabase(\"test\", name=\"test\")\ntest_catalog_table = aws.glue.CatalogTable(\"test\",\n name=\"test\",\n database_name=test.name,\n parameters={\n \"format\": \"parquet\",\n },\n table_type=\"EXTERNAL_TABLE\",\n open_table_format_input={\n \"iceberg_input\": {\n \"metadata_operation\": \"CREATE\",\n \"version\": \"2\",\n },\n },\n storage_descriptor={\n \"location\": bucket.id.apply(lambda id: f\"s3://{id}\"),\n \"columns\": [{\n \"name\": \"my_column_1\",\n \"type\": \"int\",\n }],\n })\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"iceberg\",\n iceberg_configuration={\n \"role_arn\": firehose_role[\"arn\"],\n \"catalog_arn\": f\"arn:{current_get_partition.partition}:glue:{current_get_region.name}:{current.account_id}:catalog\",\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"s3_configuration\": {\n \"role_arn\": firehose_role[\"arn\"],\n \"bucket_arn\": bucket.arn,\n },\n \"destination_table_configurations\": [{\n \"database_name\": test.name,\n \"table_name\": test_catalog_table.name,\n }],\n \"processing_configuration\": {\n \"enabled\": True,\n \"processors\": [{\n \"type\": \"Lambda\",\n \"parameters\": [{\n \"parameter_name\": \"LambdaArn\",\n \"parameter_value\": f\"{lambda_processor['arn']}:$LATEST\",\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Aws.GetCallerIdentity.Invoke();\n\n var currentGetPartition = Aws.GetPartition.Invoke();\n\n var currentGetRegion = Aws.GetRegion.Invoke();\n\n var bucket = new Aws.S3.BucketV2(\"bucket\", new()\n {\n Bucket = \"test-bucket\",\n ForceDestroy = true,\n });\n\n var test = new Aws.Glue.CatalogDatabase(\"test\", new()\n {\n Name = \"test\",\n });\n\n var testCatalogTable = new Aws.Glue.CatalogTable(\"test\", new()\n {\n Name = \"test\",\n DatabaseName = test.Name,\n Parameters = \n {\n { \"format\", \"parquet\" },\n },\n TableType = \"EXTERNAL_TABLE\",\n OpenTableFormatInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputArgs\n {\n IcebergInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputIcebergInputArgs\n {\n MetadataOperation = \"CREATE\",\n Version = \"2\",\n },\n },\n StorageDescriptor = new Aws.Glue.Inputs.CatalogTableStorageDescriptorArgs\n {\n Location = bucket.Id.Apply(id =\u003e $\"s3://{id}\"),\n Columns = new[]\n {\n new Aws.Glue.Inputs.CatalogTableStorageDescriptorColumnArgs\n {\n Name = \"my_column_1\",\n Type = \"int\",\n },\n },\n },\n });\n\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"iceberg\",\n IcebergConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n CatalogArn = Output.Tuple(currentGetPartition, currentGetRegion, current).Apply(values =\u003e\n {\n var currentGetPartition = values.Item1;\n var currentGetRegion = values.Item2;\n var current = values.Item3;\n return $\"arn:{currentGetPartition.Apply(getPartitionResult =\u003e getPartitionResult.Partition)}:glue:{currentGetRegion.Apply(getRegionResult =\u003e getRegionResult.Name)}:{current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.AccountId)}:catalog\";\n }),\n BufferingSize = 10,\n BufferingInterval = 400,\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs\n {\n RoleArn = firehoseRole.Arn,\n BucketArn = bucket.Arn,\n },\n DestinationTableConfigurations = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs\n {\n DatabaseName = test.Name,\n TableName = testCatalogTable.Name,\n },\n },\n ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs\n {\n Enabled = true,\n Processors = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs\n {\n Type = \"Lambda\",\n Parameters = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs\n {\n ParameterName = \"LambdaArn\",\n ParameterValue = $\"{lambdaProcessor.Arn}:$LATEST\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetPartition, err := aws.GetPartition(ctx, \u0026aws.GetPartitionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrentGetRegion, err := aws.GetRegion(ctx, \u0026aws.GetRegionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := s3.NewBucketV2(ctx, \"bucket\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"test-bucket\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := glue.NewCatalogDatabase(ctx, \"test\", \u0026glue.CatalogDatabaseArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestCatalogTable, err := glue.NewCatalogTable(ctx, \"test\", \u0026glue.CatalogTableArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDatabaseName: test.Name,\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"format\": pulumi.String(\"parquet\"),\n\t\t\t},\n\t\t\tTableType: pulumi.String(\"EXTERNAL_TABLE\"),\n\t\t\tOpenTableFormatInput: \u0026glue.CatalogTableOpenTableFormatInputArgs{\n\t\t\t\tIcebergInput: \u0026glue.CatalogTableOpenTableFormatInputIcebergInputArgs{\n\t\t\t\t\tMetadataOperation: pulumi.String(\"CREATE\"),\n\t\t\t\t\tVersion: pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorageDescriptor: \u0026glue.CatalogTableStorageDescriptorArgs{\n\t\t\t\tLocation: bucket.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"s3://%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tColumns: glue.CatalogTableStorageDescriptorColumnArray{\n\t\t\t\t\t\u0026glue.CatalogTableStorageDescriptorColumnArgs{\n\t\t\t\t\t\tName: pulumi.String(\"my_column_1\"),\n\t\t\t\t\t\tType: pulumi.String(\"int\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"iceberg\"),\n\t\t\tIcebergConfiguration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\tCatalogArn: pulumi.Sprintf(\"arn:%v:glue:%v:%v:catalog\", currentGetPartition.Partition, currentGetRegion.Name, current.AccountId),\n\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehoseRole.Arn),\n\t\t\t\t\tBucketArn: bucket.Arn,\n\t\t\t\t},\n\t\t\t\tDestinationTableConfigurations: kinesis.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArray{\n\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs{\n\t\t\t\t\t\tDatabaseName: test.Name,\n\t\t\t\t\t\tTableName: testCatalogTable.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tProcessingConfiguration: \u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tProcessors: kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Lambda\"),\n\t\t\t\t\t\t\tParameters: kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArray{\n\t\t\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs{\n\t\t\t\t\t\t\t\t\tParameterName: pulumi.String(\"LambdaArn\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.Sprintf(\"%v:$LATEST\", lambdaProcessor.Arn),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.inputs.GetPartitionArgs;\nimport com.pulumi.aws.inputs.GetRegionArgs;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.glue.CatalogDatabase;\nimport com.pulumi.aws.glue.CatalogDatabaseArgs;\nimport com.pulumi.aws.glue.CatalogTable;\nimport com.pulumi.aws.glue.CatalogTableArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOpenTableFormatInputArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOpenTableFormatInputIcebergInputArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableStorageDescriptorArgs;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AwsFunctions.getCallerIdentity();\n\n final var currentGetPartition = AwsFunctions.getPartition();\n\n final var currentGetRegion = AwsFunctions.getRegion();\n\n var bucket = new BucketV2(\"bucket\", BucketV2Args.builder()\n .bucket(\"test-bucket\")\n .forceDestroy(true)\n .build());\n\n var test = new CatalogDatabase(\"test\", CatalogDatabaseArgs.builder()\n .name(\"test\")\n .build());\n\n var testCatalogTable = new CatalogTable(\"testCatalogTable\", CatalogTableArgs.builder()\n .name(\"test\")\n .databaseName(test.name())\n .parameters(Map.of(\"format\", \"parquet\"))\n .tableType(\"EXTERNAL_TABLE\")\n .openTableFormatInput(CatalogTableOpenTableFormatInputArgs.builder()\n .icebergInput(CatalogTableOpenTableFormatInputIcebergInputArgs.builder()\n .metadataOperation(\"CREATE\")\n .version(2)\n .build())\n .build())\n .storageDescriptor(CatalogTableStorageDescriptorArgs.builder()\n .location(bucket.id().applyValue(id -\u003e String.format(\"s3://%s\", id)))\n .columns(CatalogTableStorageDescriptorColumnArgs.builder()\n .name(\"my_column_1\")\n .type(\"int\")\n .build())\n .build())\n .build());\n\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"iceberg\")\n .icebergConfiguration(FirehoseDeliveryStreamIcebergConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .catalogArn(String.format(\"arn:%s:glue:%s:%s:catalog\", currentGetPartition.applyValue(getPartitionResult -\u003e getPartitionResult.partition()),currentGetRegion.applyValue(getRegionResult -\u003e getRegionResult.name()),current.applyValue(getCallerIdentityResult -\u003e getCallerIdentityResult.accountId())))\n .bufferingSize(10)\n .bufferingInterval(400)\n .s3Configuration(FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehoseRole.arn())\n .bucketArn(bucket.arn())\n .build())\n .destinationTableConfigurations(FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs.builder()\n .databaseName(test.name())\n .tableName(testCatalogTable.name())\n .build())\n .processingConfiguration(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs.builder()\n .enabled(\"true\")\n .processors(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs.builder()\n .type(\"Lambda\")\n .parameters(FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs.builder()\n .parameterName(\"LambdaArn\")\n .parameterValue(String.format(\"%s:$LATEST\", lambdaProcessor.arn()))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: aws:s3:BucketV2\n properties:\n bucket: test-bucket\n forceDestroy: true\n test:\n type: aws:glue:CatalogDatabase\n properties:\n name: test\n testCatalogTable:\n type: aws:glue:CatalogTable\n name: test\n properties:\n name: test\n databaseName: ${test.name}\n parameters:\n format: parquet\n tableType: EXTERNAL_TABLE\n openTableFormatInput:\n icebergInput:\n metadataOperation: CREATE\n version: 2\n storageDescriptor:\n location: s3://${bucket.id}\n columns:\n - name: my_column_1\n type: int\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: iceberg\n icebergConfiguration:\n roleArn: ${firehoseRole.arn}\n catalogArn: arn:${currentGetPartition.partition}:glue:${currentGetRegion.name}:${current.accountId}:catalog\n bufferingSize: 10\n bufferingInterval: 400\n s3Configuration:\n roleArn: ${firehoseRole.arn}\n bucketArn: ${bucket.arn}\n destinationTableConfigurations:\n - databaseName: ${test.name}\n tableName: ${testCatalogTable.name}\n processingConfiguration:\n enabled: 'true'\n processors:\n - type: Lambda\n parameters:\n - parameterName: LambdaArn\n parameterValue: ${lambdaProcessor.arn}:$LATEST\nvariables:\n current:\n fn::invoke:\n Function: aws:getCallerIdentity\n Arguments: {}\n currentGetPartition:\n fn::invoke:\n Function: aws:getPartition\n Arguments: {}\n currentGetRegion:\n fn::invoke:\n Function: aws:getRegion\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Splunk Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"splunk\",\n splunkConfiguration: {\n hecEndpoint: \"https://http-inputs-mydomain.splunkcloud.com:443\",\n hecToken: \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n hecAcknowledgmentTimeout: 600,\n hecEndpointType: \"Event\",\n s3BackupMode: \"FailedEventsOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"splunk\",\n splunk_configuration={\n \"hec_endpoint\": \"https://http-inputs-mydomain.splunkcloud.com:443\",\n \"hec_token\": \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n \"hec_acknowledgment_timeout\": 600,\n \"hec_endpoint_type\": \"Event\",\n \"s3_backup_mode\": \"FailedEventsOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"splunk\",\n SplunkConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationArgs\n {\n HecEndpoint = \"https://http-inputs-mydomain.splunkcloud.com:443\",\n HecToken = \"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\",\n HecAcknowledgmentTimeout = 600,\n HecEndpointType = \"Event\",\n S3BackupMode = \"FailedEventsOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"splunk\"),\n\t\t\tSplunkConfiguration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationArgs{\n\t\t\t\tHecEndpoint: pulumi.String(\"https://http-inputs-mydomain.splunkcloud.com:443\"),\n\t\t\t\tHecToken: pulumi.String(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\"),\n\t\t\t\tHecAcknowledgmentTimeout: pulumi.Int(600),\n\t\t\t\tHecEndpointType: pulumi.String(\"Event\"),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedEventsOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"splunk\")\n .splunkConfiguration(FirehoseDeliveryStreamSplunkConfigurationArgs.builder()\n .hecEndpoint(\"https://http-inputs-mydomain.splunkcloud.com:443\")\n .hecToken(\"51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\")\n .hecAcknowledgmentTimeout(600)\n .hecEndpointType(\"Event\")\n .s3BackupMode(\"FailedEventsOnly\")\n .s3Configuration(FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: splunk\n splunkConfiguration:\n hecEndpoint: https://http-inputs-mydomain.splunkcloud.com:443\n hecToken: 51D4DA16-C61B-4F5F-8EC7-ED4301342A4A\n hecAcknowledgmentTimeout: 600\n hecEndpointType: Event\n s3BackupMode: FailedEventsOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### HTTP Endpoint (e.g., New Relic) Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testStream = new aws.kinesis.FirehoseDeliveryStream(\"test_stream\", {\n name: \"kinesis-firehose-test-stream\",\n destination: \"http_endpoint\",\n httpEndpointConfiguration: {\n url: \"https://aws-api.newrelic.com/firehose/v1\",\n name: \"New Relic\",\n accessKey: \"my-key\",\n bufferingSize: 15,\n bufferingInterval: 600,\n roleArn: firehose.arn,\n s3BackupMode: \"FailedDataOnly\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n requestConfiguration: {\n contentEncoding: \"GZIP\",\n commonAttributes: [\n {\n name: \"testname\",\n value: \"testvalue\",\n },\n {\n name: \"testname2\",\n value: \"testvalue2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_stream = aws.kinesis.FirehoseDeliveryStream(\"test_stream\",\n name=\"kinesis-firehose-test-stream\",\n destination=\"http_endpoint\",\n http_endpoint_configuration={\n \"url\": \"https://aws-api.newrelic.com/firehose/v1\",\n \"name\": \"New Relic\",\n \"access_key\": \"my-key\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"role_arn\": firehose[\"arn\"],\n \"s3_backup_mode\": \"FailedDataOnly\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n \"request_configuration\": {\n \"content_encoding\": \"GZIP\",\n \"common_attributes\": [\n {\n \"name\": \"testname\",\n \"value\": \"testvalue\",\n },\n {\n \"name\": \"testname2\",\n \"value\": \"testvalue2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testStream = new Aws.Kinesis.FirehoseDeliveryStream(\"test_stream\", new()\n {\n Name = \"kinesis-firehose-test-stream\",\n Destination = \"http_endpoint\",\n HttpEndpointConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs\n {\n Url = \"https://aws-api.newrelic.com/firehose/v1\",\n Name = \"New Relic\",\n AccessKey = \"my-key\",\n BufferingSize = 15,\n BufferingInterval = 600,\n RoleArn = firehose.Arn,\n S3BackupMode = \"FailedDataOnly\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n RequestConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs\n {\n ContentEncoding = \"GZIP\",\n CommonAttributes = new[]\n {\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname\",\n Value = \"testvalue\",\n },\n new Aws.Kinesis.Inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs\n {\n Name = \"testname2\",\n Value = \"testvalue2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"test_stream\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"kinesis-firehose-test-stream\"),\n\t\t\tDestination: pulumi.String(\"http_endpoint\"),\n\t\t\tHttpEndpointConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationArgs{\n\t\t\t\tUrl: pulumi.String(\"https://aws-api.newrelic.com/firehose/v1\"),\n\t\t\t\tName: pulumi.String(\"New Relic\"),\n\t\t\t\tAccessKey: pulumi.String(\"my-key\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tS3BackupMode: pulumi.String(\"FailedDataOnly\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t\tRequestConfiguration: \u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs{\n\t\t\t\t\tContentEncoding: pulumi.String(\"GZIP\"),\n\t\t\t\t\tCommonAttributes: kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArray{\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"testname2\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"testvalue2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testStream = new FirehoseDeliveryStream(\"testStream\", FirehoseDeliveryStreamArgs.builder()\n .name(\"kinesis-firehose-test-stream\")\n .destination(\"http_endpoint\")\n .httpEndpointConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationArgs.builder()\n .url(\"https://aws-api.newrelic.com/firehose/v1\")\n .name(\"New Relic\")\n .accessKey(\"my-key\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .roleArn(firehose.arn())\n .s3BackupMode(\"FailedDataOnly\")\n .s3Configuration(FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .requestConfiguration(FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs.builder()\n .contentEncoding(\"GZIP\")\n .commonAttributes( \n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname\")\n .value(\"testvalue\")\n .build(),\n FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs.builder()\n .name(\"testname2\")\n .value(\"testvalue2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testStream:\n type: aws:kinesis:FirehoseDeliveryStream\n name: test_stream\n properties:\n name: kinesis-firehose-test-stream\n destination: http_endpoint\n httpEndpointConfiguration:\n url: https://aws-api.newrelic.com/firehose/v1\n name: New Relic\n accessKey: my-key\n bufferingSize: 15\n bufferingInterval: 600\n roleArn: ${firehose.arn}\n s3BackupMode: FailedDataOnly\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n requestConfiguration:\n contentEncoding: GZIP\n commonAttributes:\n - name: testname\n value: testvalue\n - name: testname2\n value: testvalue2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snowflake Destination\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleSnowflakeDestination = new aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", {\n name: \"example-snowflake-destination\",\n destination: \"snowflake\",\n snowflakeConfiguration: {\n accountUrl: \"https://example.snowflakecomputing.com\",\n bufferingSize: 15,\n bufferingInterval: 600,\n database: \"example-db\",\n privateKey: \"...\",\n roleArn: firehose.arn,\n schema: \"example-schema\",\n table: \"example-table\",\n user: \"example-usr\",\n s3Configuration: {\n roleArn: firehose.arn,\n bucketArn: bucket.arn,\n bufferingSize: 10,\n bufferingInterval: 400,\n compressionFormat: \"GZIP\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_snowflake_destination = aws.kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\",\n name=\"example-snowflake-destination\",\n destination=\"snowflake\",\n snowflake_configuration={\n \"account_url\": \"https://example.snowflakecomputing.com\",\n \"buffering_size\": 15,\n \"buffering_interval\": 600,\n \"database\": \"example-db\",\n \"private_key\": \"...\",\n \"role_arn\": firehose[\"arn\"],\n \"schema\": \"example-schema\",\n \"table\": \"example-table\",\n \"user\": \"example-usr\",\n \"s3_configuration\": {\n \"role_arn\": firehose[\"arn\"],\n \"bucket_arn\": bucket[\"arn\"],\n \"buffering_size\": 10,\n \"buffering_interval\": 400,\n \"compression_format\": \"GZIP\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleSnowflakeDestination = new Aws.Kinesis.FirehoseDeliveryStream(\"example_snowflake_destination\", new()\n {\n Name = \"example-snowflake-destination\",\n Destination = \"snowflake\",\n SnowflakeConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs\n {\n AccountUrl = \"https://example.snowflakecomputing.com\",\n BufferingSize = 15,\n BufferingInterval = 600,\n Database = \"example-db\",\n PrivateKey = \"...\",\n RoleArn = firehose.Arn,\n Schema = \"example-schema\",\n Table = \"example-table\",\n User = \"example-usr\",\n S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs\n {\n RoleArn = firehose.Arn,\n BucketArn = bucket.Arn,\n BufferingSize = 10,\n BufferingInterval = 400,\n CompressionFormat = \"GZIP\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kinesis.NewFirehoseDeliveryStream(ctx, \"example_snowflake_destination\", \u0026kinesis.FirehoseDeliveryStreamArgs{\n\t\t\tName: pulumi.String(\"example-snowflake-destination\"),\n\t\t\tDestination: pulumi.String(\"snowflake\"),\n\t\t\tSnowflakeConfiguration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationArgs{\n\t\t\t\tAccountUrl: pulumi.String(\"https://example.snowflakecomputing.com\"),\n\t\t\t\tBufferingSize: pulumi.Int(15),\n\t\t\t\tBufferingInterval: pulumi.Int(600),\n\t\t\t\tDatabase: pulumi.String(\"example-db\"),\n\t\t\t\tPrivateKey: pulumi.String(\"...\"),\n\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\tSchema: pulumi.String(\"example-schema\"),\n\t\t\t\tTable: pulumi.String(\"example-table\"),\n\t\t\t\tUser: pulumi.String(\"example-usr\"),\n\t\t\t\tS3Configuration: \u0026kinesis.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs{\n\t\t\t\t\tRoleArn: pulumi.Any(firehose.Arn),\n\t\t\t\t\tBucketArn: pulumi.Any(bucket.Arn),\n\t\t\t\t\tBufferingSize: pulumi.Int(10),\n\t\t\t\t\tBufferingInterval: pulumi.Int(400),\n\t\t\t\t\tCompressionFormat: pulumi.String(\"GZIP\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStream;\nimport com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationArgs;\nimport com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleSnowflakeDestination = new FirehoseDeliveryStream(\"exampleSnowflakeDestination\", FirehoseDeliveryStreamArgs.builder()\n .name(\"example-snowflake-destination\")\n .destination(\"snowflake\")\n .snowflakeConfiguration(FirehoseDeliveryStreamSnowflakeConfigurationArgs.builder()\n .accountUrl(\"https://example.snowflakecomputing.com\")\n .bufferingSize(15)\n .bufferingInterval(600)\n .database(\"example-db\")\n .privateKey(\"...\")\n .roleArn(firehose.arn())\n .schema(\"example-schema\")\n .table(\"example-table\")\n .user(\"example-usr\")\n .s3Configuration(FirehoseDeliveryStreamSnowflakeConfigurationS3ConfigurationArgs.builder()\n .roleArn(firehose.arn())\n .bucketArn(bucket.arn())\n .bufferingSize(10)\n .bufferingInterval(400)\n .compressionFormat(\"GZIP\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleSnowflakeDestination:\n type: aws:kinesis:FirehoseDeliveryStream\n name: example_snowflake_destination\n properties:\n name: example-snowflake-destination\n destination: snowflake\n snowflakeConfiguration:\n accountUrl: https://example.snowflakecomputing.com\n bufferingSize: 15\n bufferingInterval: 600\n database: example-db\n privateKey: '...'\n roleArn: ${firehose.arn}\n schema: example-schema\n table: example-table\n user: example-usr\n s3Configuration:\n roleArn: ${firehose.arn}\n bucketArn: ${bucket.arn}\n bufferingSize: 10\n bufferingInterval: 400\n compressionFormat: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Kinesis Firehose Delivery streams using the stream ARN. For example:\n\n```sh\n$ pulumi import aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream foo arn:aws:firehose:us-east-1:XXX:deliverystream/example\n```\nNote: Import does not work for stream destination `s3`. Consider using `extended_s3` since `s3` destination is deprecated.\n\n",
"properties": {
"arn": {
"type": "string",
@@ -286108,6 +287368,10 @@
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamHttpEndpointConfiguration:FirehoseDeliveryStreamHttpEndpointConfiguration",
"description": "Configuration options when `destination` is `http_endpoint`. Requires the user to also specify an `s3_configuration` block. See `http_endpoint_configuration` block below for details.\n"
},
+ "icebergConfiguration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfiguration:FirehoseDeliveryStreamIcebergConfiguration",
+ "description": "Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.\n"
+ },
"kinesisSourceConfiguration": {
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamKinesisSourceConfiguration:FirehoseDeliveryStreamKinesisSourceConfiguration",
"description": "The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.\n"
@@ -286196,6 +287460,10 @@
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamHttpEndpointConfiguration:FirehoseDeliveryStreamHttpEndpointConfiguration",
"description": "Configuration options when `destination` is `http_endpoint`. Requires the user to also specify an `s3_configuration` block. See `http_endpoint_configuration` block below for details.\n"
},
+ "icebergConfiguration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfiguration:FirehoseDeliveryStreamIcebergConfiguration",
+ "description": "Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.\n"
+ },
"kinesisSourceConfiguration": {
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamKinesisSourceConfiguration:FirehoseDeliveryStreamKinesisSourceConfiguration",
"description": "The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.\n",
@@ -286276,6 +287544,10 @@
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamHttpEndpointConfiguration:FirehoseDeliveryStreamHttpEndpointConfiguration",
"description": "Configuration options when `destination` is `http_endpoint`. Requires the user to also specify an `s3_configuration` block. See `http_endpoint_configuration` block below for details.\n"
},
+ "icebergConfiguration": {
+ "$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamIcebergConfiguration:FirehoseDeliveryStreamIcebergConfiguration",
+ "description": "Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.\n"
+ },
"kinesisSourceConfiguration": {
"$ref": "#/types/aws:kinesis/FirehoseDeliveryStreamKinesisSourceConfiguration:FirehoseDeliveryStreamKinesisSourceConfiguration",
"description": "The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.\n",
@@ -288384,7 +289656,7 @@
}
},
"aws:lakeformation/dataLakeSettings:DataLakeSettings": {
- "description": "Manages Lake Formation principals designated as data lake administrators and lists of principal permission entries for default create database and default create table permissions.\n\n\u003e **NOTE:** Lake Formation introduces fine-grained access control for data in your data lake. Part of the changes include the `IAMAllowedPrincipals` principal in order to make Lake Formation backwards compatible with existing IAM and Glue permissions. For more information, see [Changing the Default Security Settings for Your Data Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) and [Upgrading AWS Glue Data Permissions to the AWS Lake Formation Model](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html).\n\n## Example Usage\n\n### Data Lake Admins\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {admins: [\n test.arn,\n testAwsIamRole.arn,\n]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\", admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create Default Permissions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {\n admins: [\n test.arn,\n testAwsIamRole.arn,\n ],\n createDatabaseDefaultPermissions: [{\n permissions: [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n principal: test.arn,\n }],\n createTableDefaultPermissions: [{\n permissions: [\"ALL\"],\n principal: testAwsIamRole.arn,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\",\n admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n ],\n create_database_default_permissions=[{\n \"permissions\": [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n \"principal\": test[\"arn\"],\n }],\n create_table_default_permissions=[{\n \"permissions\": [\"ALL\"],\n \"principal\": test_aws_iam_role[\"arn\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n CreateDatabaseDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n },\n Principal = test.Arn,\n },\n },\n CreateTableDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"ALL\",\n },\n Principal = testAwsIamRole.Arn,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t\tCreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\t\t\tpulumi.String(\"ALTER\"),\n\t\t\t\t\t\tpulumi.String(\"DROP\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(test.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(testAwsIamRole.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()\n .permissions( \n \"SELECT\",\n \"ALTER\",\n \"DROP\")\n .principal(test.arn())\n .build())\n .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()\n .permissions(\"ALL\")\n .principal(testAwsIamRole.arn())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n createDatabaseDefaultPermissions:\n - permissions:\n - SELECT\n - ALTER\n - DROP\n principal: ${test.arn}\n createTableDefaultPermissions:\n - permissions:\n - ALL\n principal: ${testAwsIamRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable EMR access to LakeFormation resources\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {\n admins: [\n test.arn,\n testAwsIamRole.arn,\n ],\n createDatabaseDefaultPermissions: [{\n permissions: [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n principal: test.arn,\n }],\n createTableDefaultPermissions: [{\n permissions: [\"ALL\"],\n principal: testAwsIamRole.arn,\n }],\n allowExternalDataFiltering: true,\n externalDataFilteringAllowLists: [\n current.accountId,\n thirdParty.accountId,\n ],\n authorizedSessionTagValueLists: [\"Amazon EMR\"],\n allowFullTableExternalDataAccess: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\",\n admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n ],\n create_database_default_permissions=[{\n \"permissions\": [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n \"principal\": test[\"arn\"],\n }],\n create_table_default_permissions=[{\n \"permissions\": [\"ALL\"],\n \"principal\": test_aws_iam_role[\"arn\"],\n }],\n allow_external_data_filtering=True,\n external_data_filtering_allow_lists=[\n current[\"accountId\"],\n third_party[\"accountId\"],\n ],\n authorized_session_tag_value_lists=[\"Amazon EMR\"],\n allow_full_table_external_data_access=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n CreateDatabaseDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n },\n Principal = test.Arn,\n },\n },\n CreateTableDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"ALL\",\n },\n Principal = testAwsIamRole.Arn,\n },\n },\n AllowExternalDataFiltering = true,\n ExternalDataFilteringAllowLists = new[]\n {\n current.AccountId,\n thirdParty.AccountId,\n },\n AuthorizedSessionTagValueLists = new[]\n {\n \"Amazon EMR\",\n },\n AllowFullTableExternalDataAccess = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t\tCreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\t\t\tpulumi.String(\"ALTER\"),\n\t\t\t\t\t\tpulumi.String(\"DROP\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(test.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(testAwsIamRole.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllowExternalDataFiltering: pulumi.Bool(true),\n\t\t\tExternalDataFilteringAllowLists: pulumi.StringArray{\n\t\t\t\tcurrent.AccountId,\n\t\t\t\tthirdParty.AccountId,\n\t\t\t},\n\t\t\tAuthorizedSessionTagValueLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Amazon EMR\"),\n\t\t\t},\n\t\t\tAllowFullTableExternalDataAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()\n .permissions( \n \"SELECT\",\n \"ALTER\",\n \"DROP\")\n .principal(test.arn())\n .build())\n .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()\n .permissions(\"ALL\")\n .principal(testAwsIamRole.arn())\n .build())\n .allowExternalDataFiltering(true)\n .externalDataFilteringAllowLists( \n current.accountId(),\n thirdParty.accountId())\n .authorizedSessionTagValueLists(\"Amazon EMR\")\n .allowFullTableExternalDataAccess(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n createDatabaseDefaultPermissions:\n - permissions:\n - SELECT\n - ALTER\n - DROP\n principal: ${test.arn}\n createTableDefaultPermissions:\n - permissions:\n - ALL\n principal: ${testAwsIamRole.arn}\n allowExternalDataFiltering: true\n externalDataFilteringAllowLists:\n - ${current.accountId}\n - ${thirdParty.accountId}\n authorizedSessionTagValueLists:\n - Amazon EMR\n allowFullTableExternalDataAccess: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "description": "Manages Lake Formation principals designated as data lake administrators and lists of principal permission entries for default create database and default create table permissions.\n\n\u003e **NOTE:** Lake Formation introduces fine-grained access control for data in your data lake. Part of the changes include the `IAMAllowedPrincipals` principal in order to make Lake Formation backwards compatible with existing IAM and Glue permissions. For more information, see [Changing the Default Security Settings for Your Data Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) and [Upgrading AWS Glue Data Permissions to the AWS Lake Formation Model](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html).\n\n## Example Usage\n\n### Data Lake Admins\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {admins: [\n test.arn,\n testAwsIamRole.arn,\n]});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\", admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create Default Permissions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {\n admins: [\n test.arn,\n testAwsIamRole.arn,\n ],\n createDatabaseDefaultPermissions: [{\n permissions: [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n principal: test.arn,\n }],\n createTableDefaultPermissions: [{\n permissions: [\"ALL\"],\n principal: testAwsIamRole.arn,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\",\n admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n ],\n create_database_default_permissions=[{\n \"permissions\": [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n \"principal\": test[\"arn\"],\n }],\n create_table_default_permissions=[{\n \"permissions\": [\"ALL\"],\n \"principal\": test_aws_iam_role[\"arn\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n CreateDatabaseDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n },\n Principal = test.Arn,\n },\n },\n CreateTableDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"ALL\",\n },\n Principal = testAwsIamRole.Arn,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t\tCreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\t\t\tpulumi.String(\"ALTER\"),\n\t\t\t\t\t\tpulumi.String(\"DROP\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(test.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(testAwsIamRole.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()\n .permissions( \n \"SELECT\",\n \"ALTER\",\n \"DROP\")\n .principal(test.arn())\n .build())\n .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()\n .permissions(\"ALL\")\n .principal(testAwsIamRole.arn())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n createDatabaseDefaultPermissions:\n - permissions:\n - SELECT\n - ALTER\n - DROP\n principal: ${test.arn}\n createTableDefaultPermissions:\n - permissions:\n - ALL\n principal: ${testAwsIamRole.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable EMR access to LakeFormation resources\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {\n admins: [\n test.arn,\n testAwsIamRole.arn,\n ],\n createDatabaseDefaultPermissions: [{\n permissions: [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n principal: test.arn,\n }],\n createTableDefaultPermissions: [{\n permissions: [\"ALL\"],\n principal: testAwsIamRole.arn,\n }],\n allowExternalDataFiltering: true,\n externalDataFilteringAllowLists: [\n current.accountId,\n thirdParty.accountId,\n ],\n authorizedSessionTagValueLists: [\"Amazon EMR\"],\n allowFullTableExternalDataAccess: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\",\n admins=[\n test[\"arn\"],\n test_aws_iam_role[\"arn\"],\n ],\n create_database_default_permissions=[{\n \"permissions\": [\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n ],\n \"principal\": test[\"arn\"],\n }],\n create_table_default_permissions=[{\n \"permissions\": [\"ALL\"],\n \"principal\": test_aws_iam_role[\"arn\"],\n }],\n allow_external_data_filtering=True,\n external_data_filtering_allow_lists=[\n current[\"accountId\"],\n third_party[\"accountId\"],\n ],\n authorized_session_tag_value_lists=[\"Amazon EMR\"],\n allow_full_table_external_data_access=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Admins = new[]\n {\n test.Arn,\n testAwsIamRole.Arn,\n },\n CreateDatabaseDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"SELECT\",\n \"ALTER\",\n \"DROP\",\n },\n Principal = test.Arn,\n },\n },\n CreateTableDefaultPermissions = new[]\n {\n new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs\n {\n Permissions = new[]\n {\n \"ALL\",\n },\n Principal = testAwsIamRole.Arn,\n },\n },\n AllowExternalDataFiltering = true,\n ExternalDataFilteringAllowLists = new[]\n {\n current.AccountId,\n thirdParty.AccountId,\n },\n AuthorizedSessionTagValueLists = new[]\n {\n \"Amazon EMR\",\n },\n AllowFullTableExternalDataAccess = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tAdmins: pulumi.StringArray{\n\t\t\t\ttest.Arn,\n\t\t\t\ttestAwsIamRole.Arn,\n\t\t\t},\n\t\t\tCreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SELECT\"),\n\t\t\t\t\t\tpulumi.String(\"ALTER\"),\n\t\t\t\t\t\tpulumi.String(\"DROP\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(test.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{\n\t\t\t\t\u0026lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{\n\t\t\t\t\tPermissions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrincipal: pulumi.Any(testAwsIamRole.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllowExternalDataFiltering: pulumi.Bool(true),\n\t\t\tExternalDataFilteringAllowLists: pulumi.StringArray{\n\t\t\t\tcurrent.AccountId,\n\t\t\t\tthirdParty.AccountId,\n\t\t\t},\n\t\t\tAuthorizedSessionTagValueLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Amazon EMR\"),\n\t\t\t},\n\t\t\tAllowFullTableExternalDataAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;\nimport com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .admins( \n test.arn(),\n testAwsIamRole.arn())\n .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()\n .permissions( \n \"SELECT\",\n \"ALTER\",\n \"DROP\")\n .principal(test.arn())\n .build())\n .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()\n .permissions(\"ALL\")\n .principal(testAwsIamRole.arn())\n .build())\n .allowExternalDataFiltering(true)\n .externalDataFilteringAllowLists( \n current.accountId(),\n thirdParty.accountId())\n .authorizedSessionTagValueLists(\"Amazon EMR\")\n .allowFullTableExternalDataAccess(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n admins:\n - ${test.arn}\n - ${testAwsIamRole.arn}\n createDatabaseDefaultPermissions:\n - permissions:\n - SELECT\n - ALTER\n - DROP\n principal: ${test.arn}\n createTableDefaultPermissions:\n - permissions:\n - ALL\n principal: ${testAwsIamRole.arn}\n allowExternalDataFiltering: true\n externalDataFilteringAllowLists:\n - ${current.accountId}\n - ${thirdParty.accountId}\n authorizedSessionTagValueLists:\n - Amazon EMR\n allowFullTableExternalDataAccess: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Change Cross Account Version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lakeformation.DataLakeSettings(\"example\", {parameters: {\n CROSS_ACCOUNT_VERSION: \"3\",\n}});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lakeformation.DataLakeSettings(\"example\", parameters={\n \"CROSS_ACCOUNT_VERSION\": \"3\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.LakeFormation.DataLakeSettings(\"example\", new()\n {\n Parameters = \n {\n { \"CROSS_ACCOUNT_VERSION\", \"3\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lakeformation.NewDataLakeSettings(ctx, \"example\", \u0026lakeformation.DataLakeSettingsArgs{\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"CROSS_ACCOUNT_VERSION\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lakeformation.DataLakeSettings;\nimport com.pulumi.aws.lakeformation.DataLakeSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new DataLakeSettings(\"example\", DataLakeSettingsArgs.builder()\n .parameters(Map.of(\"CROSS_ACCOUNT_VERSION\", \"3\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:lakeformation:DataLakeSettings\n properties:\n parameters:\n CROSS_ACCOUNT_VERSION: '3'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"properties": {
"admins": {
"type": "array",
@@ -288399,7 +289671,7 @@
},
"allowFullTableExternalDataAccess": {
"type": "boolean",
- "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
+ "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n"
},
"authorizedSessionTagValueLists": {
"type": "array",
@@ -288433,6 +289705,13 @@
},
"description": "A list of the account IDs of Amazon Web Services accounts with Amazon EMR clusters that are to perform data filtering.\n"
},
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `\"1\"`, `\"2\"`, `\"3\"`, or `\"4\"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `\"1\"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `\"1\"`.\n"
+ },
"readOnlyAdmins": {
"type": "array",
"items": {
@@ -288445,7 +289724,7 @@
"items": {
"type": "string"
},
- "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n"
+ "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
}
},
"required": [
@@ -288454,6 +289733,7 @@
"createDatabaseDefaultPermissions",
"createTableDefaultPermissions",
"externalDataFilteringAllowLists",
+ "parameters",
"readOnlyAdmins",
"trustedResourceOwners"
],
@@ -288471,7 +289751,7 @@
},
"allowFullTableExternalDataAccess": {
"type": "boolean",
- "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
+ "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n"
},
"authorizedSessionTagValueLists": {
"type": "array",
@@ -288506,6 +289786,13 @@
},
"description": "A list of the account IDs of Amazon Web Services accounts with Amazon EMR clusters that are to perform data filtering.\n"
},
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `\"1\"`, `\"2\"`, `\"3\"`, or `\"4\"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `\"1\"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `\"1\"`.\n"
+ },
"readOnlyAdmins": {
"type": "array",
"items": {
@@ -288518,7 +289805,7 @@
"items": {
"type": "string"
},
- "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n"
+ "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
}
},
"stateInputs": {
@@ -288537,7 +289824,7 @@
},
"allowFullTableExternalDataAccess": {
"type": "boolean",
- "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
+ "description": "Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.\n"
},
"authorizedSessionTagValueLists": {
"type": "array",
@@ -288572,6 +289859,13 @@
},
"description": "A list of the account IDs of Amazon Web Services accounts with Amazon EMR clusters that are to perform data filtering.\n"
},
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `\"1\"`, `\"2\"`, `\"3\"`, or `\"4\"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `\"1\"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `\"1\"`.\n"
+ },
"readOnlyAdmins": {
"type": "array",
"items": {
@@ -288584,7 +289878,7 @@
"items": {
"type": "string"
},
- "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n"
+ "description": "List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).\n\n\u003e **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.\n"
}
},
"type": "object"
@@ -292003,6 +293297,10 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"required": [
@@ -292057,6 +293355,10 @@
"type": "string"
},
"description": "A 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.\n"
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"requiredInputs": [
@@ -292120,6 +293422,10 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "tcpIdleTimeoutSeconds": {
+ "type": "integer",
+ "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.\n"
}
},
"type": "object"
@@ -292395,155 +293701,163 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
- "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
- "type": "string",
- "description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
- },
- "idleTimeout": {
- "type": "integer",
- "description": "Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60.\n"
- },
- "internal": {
- "type": "boolean",
- "description": "If true, the LB will be internal. Defaults to `false`.\n"
- },
- "ipAddressType": {
- "type": "string",
- "description": "Type of IP addresses used by the subnets for your load balancer. The possible values depend upon the load balancer type: `ipv4` (all load balancer types), `dualstack` (all load balancer types), and `dualstack-without-public-ipv4` (type `application` only).\n"
- },
- "loadBalancerType": {
- "type": "string",
- "description": "Type of load balancer to create. Possible values are `application`, `gateway`, or `network`. The default value is `application`.\n"
- },
- "name": {
- "type": "string",
- "description": "Name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified, this provider will autogenerate a name beginning with `tf-lb`.\n"
- },
- "namePrefix": {
- "type": "string",
- "description": "Creates a unique name beginning with the specified prefix. Conflicts with `name`.\n"
- },
- "preserveHostHeader": {
- "type": "boolean",
- "description": "Whether the Application Load Balancer should preserve the Host header in the HTTP request and send it to the target without any change. Defaults to `false`.\n"
- },
- "securityGroups": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` security groups cannot be added if none are currently present, and cannot all be removed once added. If either of these conditions are met, this will force a recreation of the resource.\n"
- },
- "subnetMappings": {
- "type": "array",
- "items": {
- "$ref": "#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping"
- },
- "description": "Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added.\n"
- },
- "subnets": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of subnet IDs to attach to the LB. For Load Balancers of type `network` subnets can only be added (see [Availability Zones](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#availability-zones)), deleting a subnet for load balancers of type `network` will force a recreation of the resource.\n"
- },
- "tags": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- },
- "description": "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.\n"
- },
- "tagsAll": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- },
- "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
- "deprecationMessage": "Please use `tags` instead."
- },
- "vpcId": {
- "type": "string"
- },
- "xffHeaderProcessingMode": {
- "type": "string",
- "description": "Determines how the load balancer modifies the `X-Forwarded-For` header in the HTTP request before sending the request to the target. The possible values are `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`.\n"
- },
- "zoneId": {
- "type": "string",
- "description": "Canonical hosted zone ID of the load balancer (to be used in a Route 53 Alias record).\n"
- }
- },
- "required": [
- "arn",
- "arnSuffix",
- "dnsName",
- "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
- "internal",
- "ipAddressType",
- "name",
- "namePrefix",
- "securityGroups",
- "subnetMappings",
- "subnets",
- "tagsAll",
- "vpcId",
- "zoneId"
- ],
- "inputProperties": {
- "accessLogs": {
- "$ref": "#/types/aws:lb/LoadBalancerAccessLogs:LoadBalancerAccessLogs",
- "description": "Access Logs block. See below.\n"
- },
- "clientKeepAlive": {
- "type": "integer",
- "description": "Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n"
- },
- "connectionLogs": {
- "$ref": "#/types/aws:lb/LoadBalancerConnectionLogs:LoadBalancerConnectionLogs",
- "description": "Connection Logs block. See below. Only valid for Load Balancers of type `application`.\n"
- },
- "customerOwnedIpv4Pool": {
- "type": "string",
- "description": "ID of the customer owned ipv4 pool to use for this load balancer.\n",
- "willReplaceOnChanges": true
- },
- "desyncMitigationMode": {
- "type": "string",
- "description": "How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`.\n"
- },
- "dnsRecordClientRoutingPolicy": {
- "type": "string",
- "description": "How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. See [Availability Zone DNS affinity](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#zonal-dns-affinity) for additional details. Only valid for `network` type load balancers.\n"
- },
- "dropInvalidHeaderFields": {
- "type": "boolean",
- "description": "Whether HTTP headers with header fields that are not valid are removed by the load balancer (true) or routed to targets (false). The default is false. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens. Only valid for Load Balancers of type `application`.\n"
- },
- "enableCrossZoneLoadBalancing": {
- "type": "boolean",
- "description": "If true, cross-zone load balancing of the load balancer will be enabled. For `network` and `gateway` type load balancers, this feature is disabled by default (`false`). For `application` load balancer this feature is always enabled (`true`) and cannot be disabled. Defaults to `false`.\n"
- },
- "enableDeletionProtection": {
- "type": "boolean",
- "description": "If true, deletion of the load balancer will be disabled via the AWS API. This will prevent this provider from deleting the load balancer. Defaults to `false`.\n"
- },
- "enableHttp2": {
- "type": "boolean",
- "description": "Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`.\n"
- },
- "enableTlsVersionAndCipherSuiteHeaders": {
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
+ "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
+ "type": "string",
+ "description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
+ },
+ "idleTimeout": {
+ "type": "integer",
+ "description": "Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60.\n"
+ },
+ "internal": {
+ "type": "boolean",
+ "description": "If true, the LB will be internal. Defaults to `false`.\n"
+ },
+ "ipAddressType": {
+ "type": "string",
+ "description": "Type of IP addresses used by the subnets for your load balancer. The possible values depend upon the load balancer type: `ipv4` (all load balancer types), `dualstack` (all load balancer types), and `dualstack-without-public-ipv4` (type `application` only).\n"
+ },
+ "loadBalancerType": {
+ "type": "string",
+ "description": "Type of load balancer to create. Possible values are `application`, `gateway`, or `network`. The default value is `application`.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified, this provider will autogenerate a name beginning with `tf-lb`.\n"
+ },
+ "namePrefix": {
+ "type": "string",
+ "description": "Creates a unique name beginning with the specified prefix. Conflicts with `name`.\n"
+ },
+ "preserveHostHeader": {
+ "type": "boolean",
+ "description": "Whether the Application Load Balancer should preserve the Host header in the HTTP request and send it to the target without any change. Defaults to `false`.\n"
+ },
+ "securityGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` security groups cannot be added if none are currently present, and cannot all be removed once added. If either of these conditions are met, this will force a recreation of the resource.\n"
+ },
+ "subnetMappings": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping"
+ },
+ "description": "Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added.\n"
+ },
+ "subnets": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of subnet IDs to attach to the LB. For Load Balancers of type `network` subnets can only be added (see [Availability Zones](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#availability-zones)), deleting a subnet for load balancers of type `network` will force a recreation of the resource.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "vpcId": {
+ "type": "string"
+ },
+ "xffHeaderProcessingMode": {
+ "type": "string",
+ "description": "Determines how the load balancer modifies the `X-Forwarded-For` header in the HTTP request before sending the request to the target. The possible values are `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`.\n"
+ },
+ "zoneId": {
+ "type": "string",
+ "description": "Canonical hosted zone ID of the load balancer (to be used in a Route 53 Alias record).\n"
+ }
+ },
+ "required": [
+ "arn",
+ "arnSuffix",
+ "dnsName",
+ "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
+ "internal",
+ "ipAddressType",
+ "name",
+ "namePrefix",
+ "securityGroups",
+ "subnetMappings",
+ "subnets",
+ "tagsAll",
+ "vpcId",
+ "zoneId"
+ ],
+ "inputProperties": {
+ "accessLogs": {
+ "$ref": "#/types/aws:lb/LoadBalancerAccessLogs:LoadBalancerAccessLogs",
+ "description": "Access Logs block. See below.\n"
+ },
+ "clientKeepAlive": {
+ "type": "integer",
+ "description": "Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n"
+ },
+ "connectionLogs": {
+ "$ref": "#/types/aws:lb/LoadBalancerConnectionLogs:LoadBalancerConnectionLogs",
+ "description": "Connection Logs block. See below. Only valid for Load Balancers of type `application`.\n"
+ },
+ "customerOwnedIpv4Pool": {
+ "type": "string",
+ "description": "ID of the customer owned ipv4 pool to use for this load balancer.\n",
+ "willReplaceOnChanges": true
+ },
+ "desyncMitigationMode": {
+ "type": "string",
+ "description": "How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`.\n"
+ },
+ "dnsRecordClientRoutingPolicy": {
+ "type": "string",
+ "description": "How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. See [Availability Zone DNS affinity](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#zonal-dns-affinity) for additional details. Only valid for `network` type load balancers.\n"
+ },
+ "dropInvalidHeaderFields": {
+ "type": "boolean",
+ "description": "Whether HTTP headers with header fields that are not valid are removed by the load balancer (true) or routed to targets (false). The default is false. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens. Only valid for Load Balancers of type `application`.\n"
+ },
+ "enableCrossZoneLoadBalancing": {
+ "type": "boolean",
+ "description": "If true, cross-zone load balancing of the load balancer will be enabled. For `network` and `gateway` type load balancers, this feature is disabled by default (`false`). For `application` load balancer this feature is always enabled (`true`) and cannot be disabled. Defaults to `false`.\n"
+ },
+ "enableDeletionProtection": {
+ "type": "boolean",
+ "description": "If true, deletion of the load balancer will be disabled via the AWS API. This will prevent this provider from deleting the load balancer. Defaults to `false`.\n"
+ },
+ "enableHttp2": {
+ "type": "boolean",
+ "description": "Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`.\n"
+ },
+ "enableTlsVersionAndCipherSuiteHeaders": {
+ "type": "boolean",
+ "description": "Whether the two headers (`x-amzn-tls-version` and `x-amzn-tls-cipher-suite`), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. Only valid for Load Balancers of type `application`. Defaults to `false`\n"
+ },
+ "enableWafFailOpen": {
+ "type": "boolean",
+ "description": "Whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. Defaults to `false`.\n"
+ },
+ "enableXffClientPort": {
+ "type": "boolean",
+ "description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
+ },
+ "enableZonalShift": {
"type": "boolean",
- "description": "Whether the two headers (`x-amzn-tls-version` and `x-amzn-tls-cipher-suite`), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. Only valid for Load Balancers of type `application`. Defaults to `false`\n"
- },
- "enableWafFailOpen": {
- "type": "boolean",
- "description": "Whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. Defaults to `false`.\n"
- },
- "enableXffClientPort": {
- "type": "boolean",
- "description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
},
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
@@ -292682,6 +293996,10 @@
"type": "boolean",
"description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n"
},
+ "enableZonalShift": {
+ "type": "boolean",
+ "description": "Whether zonal shift is enabled. Defaults to `false`.\n"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string",
"description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.\n"
@@ -336201,6 +337519,152 @@
"type": "object"
}
},
+ "aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy": {
+ "description": "Resource for managing an AWS Resilience Hub Resiliency Policy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:resiliencehub:ResiliencyPolicy\n properties:\n policyName: testexample\n policyDescription: testexample\n tier: NonCritical\n dataLocationConstraint: AnyLocation\n policy:\n - region:\n - rpo: 24h\n rto: 24h\n az:\n - rpo: 24h\n rto: 24h\n hardware:\n - rpo: 24h\n rto: 24h\n software:\n - rpo: 24h\n rto: 24h\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Resilience Hub Resiliency Policy using the `arn`. For example:\n\n```sh\n$ pulumi import aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy example arn:aws:resiliencehub:us-east-1:123456789012:resiliency-policy/8c1cfa29-d1dd-4421-aa68-c9f64cced4c2\n```\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "ARN of the Resiliency Policy.\n"
+ },
+ "dataLocationConstraint": {
+ "type": "string",
+ "description": "Data Location Constraint of the Policy.\nValid values are `AnyLocation`, `SameContinent`, and `SameCountry`.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description of Resiliency Policy.\n"
+ },
+ "estimatedCostTier": {
+ "type": "string",
+ "description": "Estimated Cost Tier of the Resiliency Policy.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of Resiliency Policy.\nMust be between 2 and 60 characters long.\nMust start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.\n"
+ },
+ "policy": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicy:ResiliencyPolicyPolicy",
+ "description": "The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.\n\nThe following arguments are optional:\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "tier": {
+ "type": "string",
+ "description": "Resiliency Policy Tier.\nValid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.\n"
+ },
+ "timeouts": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyTimeouts:ResiliencyPolicyTimeouts"
+ }
+ },
+ "required": [
+ "arn",
+ "dataLocationConstraint",
+ "estimatedCostTier",
+ "name",
+ "tagsAll",
+ "tier"
+ ],
+ "inputProperties": {
+ "dataLocationConstraint": {
+ "type": "string",
+ "description": "Data Location Constraint of the Policy.\nValid values are `AnyLocation`, `SameContinent`, and `SameCountry`.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description of Resiliency Policy.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of Resiliency Policy.\nMust be between 2 and 60 characters long.\nMust start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.\n"
+ },
+ "policy": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicy:ResiliencyPolicyPolicy",
+ "description": "The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.\n\nThe following arguments are optional:\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tier": {
+ "type": "string",
+ "description": "Resiliency Policy Tier.\nValid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.\n"
+ },
+ "timeouts": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyTimeouts:ResiliencyPolicyTimeouts"
+ }
+ },
+ "requiredInputs": [
+ "tier"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering ResiliencyPolicy resources.\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "ARN of the Resiliency Policy.\n"
+ },
+ "dataLocationConstraint": {
+ "type": "string",
+ "description": "Data Location Constraint of the Policy.\nValid values are `AnyLocation`, `SameContinent`, and `SameCountry`.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "Description of Resiliency Policy.\n"
+ },
+ "estimatedCostTier": {
+ "type": "string",
+ "description": "Estimated Cost Tier of the Resiliency Policy.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of Resiliency Policy.\nMust be between 2 and 60 characters long.\nMust start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.\n"
+ },
+ "policy": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyPolicy:ResiliencyPolicyPolicy",
+ "description": "The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.\n\nThe following arguments are optional:\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "tier": {
+ "type": "string",
+ "description": "Resiliency Policy Tier.\nValid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.\n"
+ },
+ "timeouts": {
+ "$ref": "#/types/aws:resiliencehub/ResiliencyPolicyTimeouts:ResiliencyPolicyTimeouts"
+ }
+ },
+ "type": "object"
+ }
+ },
"aws:resourceexplorer/index:Index": {
"description": "Provides a resource to manage a Resource Explorer index in the current AWS Region.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.resourceexplorer.Index(\"example\", {type: \"LOCAL\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.resourceexplorer.Index(\"example\", type=\"LOCAL\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ResourceExplorer.Index(\"example\", new()\n {\n Type = \"LOCAL\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/resourceexplorer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := resourceexplorer.NewIndex(ctx, \"example\", \u0026resourceexplorer.IndexArgs{\n\t\t\tType: pulumi.String(\"LOCAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.resourceexplorer.Index;\nimport com.pulumi.aws.resourceexplorer.IndexArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Index(\"example\", IndexArgs.builder()\n .type(\"LOCAL\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:resourceexplorer:Index\n properties:\n type: LOCAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Resource Explorer indexes using the `arn`. For example:\n\n```sh\n$ pulumi import aws:resourceexplorer/index:Index example arn:aws:resource-explorer-2:us-east-1:123456789012:index/6047ac4e-207e-4487-9bcf-cb53bb0ff5cc\n```\n",
"properties": {
@@ -337612,7 +339076,7 @@
},
"name": {
"type": "string",
- "description": "Name of the Profile Association.\n"
+ "description": "Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\\\-_' ']+)`.\n"
},
"ownerId": {
"type": "string"
@@ -337627,7 +339091,7 @@
},
"status": {
"type": "string",
- "description": "Status of the Profile Association. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)\n"
+ "description": "Status of the Profile Association. See the [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html) for valid values.\n"
},
"statusMessage": {
"type": "string",
@@ -337663,7 +339127,7 @@
"inputProperties": {
"name": {
"type": "string",
- "description": "Name of the Profile Association.\n"
+ "description": "Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\\\-_' ']+)`.\n"
},
"profileId": {
"type": "string",
@@ -337695,7 +339159,7 @@
},
"name": {
"type": "string",
- "description": "Name of the Profile Association.\n"
+ "description": "Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\\\-_' ']+)`.\n"
},
"ownerId": {
"type": "string"
@@ -337710,7 +339174,7 @@
},
"status": {
"type": "string",
- "description": "Status of the Profile Association. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)\n"
+ "description": "Status of the Profile Association. See the [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html) for valid values.\n"
},
"statusMessage": {
"type": "string",
@@ -347853,6 +349317,10 @@
},
"description": "The VPC subnets that Studio uses for communication.\n"
},
+ "tagPropagation": {
+ "type": "string",
+ "description": "Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.\n"
+ },
"tags": {
"type": "object",
"additionalProperties": {
@@ -347894,13 +349362,11 @@
"inputProperties": {
"appNetworkAccessType": {
"type": "string",
- "description": "Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.\n",
- "willReplaceOnChanges": true
+ "description": "Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.\n"
},
"appSecurityGroupManagement": {
"type": "string",
- "description": "The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.\n",
- "willReplaceOnChanges": true
+ "description": "The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.\n"
},
"authMode": {
"type": "string",
@@ -347942,6 +349408,10 @@
"description": "The VPC subnets that Studio uses for communication.\n",
"willReplaceOnChanges": true
},
+ "tagPropagation": {
+ "type": "string",
+ "description": "Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.\n"
+ },
"tags": {
"type": "object",
"additionalProperties": {
@@ -347967,13 +349437,11 @@
"properties": {
"appNetworkAccessType": {
"type": "string",
- "description": "Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.\n",
- "willReplaceOnChanges": true
+ "description": "Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.\n"
},
"appSecurityGroupManagement": {
"type": "string",
- "description": "The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.\n",
- "willReplaceOnChanges": true
+ "description": "The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.\n"
},
"arn": {
"type": "string",
@@ -348035,6 +349503,10 @@
"description": "The VPC subnets that Studio uses for communication.\n",
"willReplaceOnChanges": true
},
+ "tagPropagation": {
+ "type": "string",
+ "description": "Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.\n"
+ },
"tags": {
"type": "object",
"additionalProperties": {
@@ -348404,6 +349876,9 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "throughputConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupThroughputConfig:FeatureGroupThroughputConfig"
}
},
"required": [
@@ -348413,7 +349888,8 @@
"featureGroupName",
"recordIdentifierFeatureName",
"roleArn",
- "tagsAll"
+ "tagsAll",
+ "throughputConfig"
],
"inputProperties": {
"description": {
@@ -348465,6 +349941,9 @@
"type": "string"
},
"description": "Map of resource tags for the resource. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
+ },
+ "throughputConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupThroughputConfig:FeatureGroupThroughputConfig"
}
},
"requiredInputs": [
@@ -348538,6 +350017,9 @@
},
"description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
"deprecationMessage": "Please use `tags` instead."
+ },
+ "throughputConfig": {
+ "$ref": "#/types/aws:sagemaker/FeatureGroupThroughputConfig:FeatureGroupThroughputConfig"
}
},
"type": "object"
@@ -348699,6 +350181,147 @@
"type": "object"
}
},
+ "aws:sagemaker/hub:Hub": {
+ "description": "Provides a SageMaker Hub resource.\n\n## Example Usage\n\n### Basic usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.Hub(\"example\", {\n hubName: \"example\",\n hubDescription: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.Hub(\"example\",\n hub_name=\"example\",\n hub_description=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.Hub(\"example\", new()\n {\n HubName = \"example\",\n HubDescription = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewHub(ctx, \"example\", \u0026sagemaker.HubArgs{\n\t\t\tHubName: pulumi.String(\"example\"),\n\t\t\tHubDescription: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.Hub;\nimport com.pulumi.aws.sagemaker.HubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Hub(\"example\", HubArgs.builder()\n .hubName(\"example\")\n .hubDescription(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:Hub\n properties:\n hubName: example\n hubDescription: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker Hubs using the `name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/hub:Hub test_hub my-code-repo\n```\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) assigned by AWS to this Hub.\n"
+ },
+ "hubDescription": {
+ "type": "string",
+ "description": "A description of the hub.\n"
+ },
+ "hubDisplayName": {
+ "type": "string",
+ "description": "The display name of the hub.\n"
+ },
+ "hubName": {
+ "type": "string",
+ "description": "The name of the hub.\n"
+ },
+ "hubSearchKeywords": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The searchable keywords for the hub.\n"
+ },
+ "s3StorageConfig": {
+ "$ref": "#/types/aws:sagemaker/HubS3StorageConfig:HubS3StorageConfig",
+ "description": "The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ }
+ },
+ "required": [
+ "arn",
+ "hubDescription",
+ "hubName",
+ "tagsAll"
+ ],
+ "inputProperties": {
+ "hubDescription": {
+ "type": "string",
+ "description": "A description of the hub.\n"
+ },
+ "hubDisplayName": {
+ "type": "string",
+ "description": "The display name of the hub.\n"
+ },
+ "hubName": {
+ "type": "string",
+ "description": "The name of the hub.\n",
+ "willReplaceOnChanges": true
+ },
+ "hubSearchKeywords": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The searchable keywords for the hub.\n"
+ },
+ "s3StorageConfig": {
+ "$ref": "#/types/aws:sagemaker/HubS3StorageConfig:HubS3StorageConfig",
+ "description": "The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.\n",
+ "willReplaceOnChanges": true
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ }
+ },
+ "requiredInputs": [
+ "hubDescription",
+ "hubName"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering Hub resources.\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) assigned by AWS to this Hub.\n"
+ },
+ "hubDescription": {
+ "type": "string",
+ "description": "A description of the hub.\n"
+ },
+ "hubDisplayName": {
+ "type": "string",
+ "description": "The display name of the hub.\n"
+ },
+ "hubName": {
+ "type": "string",
+ "description": "The name of the hub.\n",
+ "willReplaceOnChanges": true
+ },
+ "hubSearchKeywords": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The searchable keywords for the hub.\n"
+ },
+ "s3StorageConfig": {
+ "$ref": "#/types/aws:sagemaker/HubS3StorageConfig:HubS3StorageConfig",
+ "description": "The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.\n",
+ "willReplaceOnChanges": true
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ }
+ },
+ "type": "object"
+ }
+ },
"aws:sagemaker/humanTaskUI:HumanTaskUI": {
"description": "Provides a SageMaker Human Task UI resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new aws.sagemaker.HumanTaskUI(\"example\", {\n humanTaskUiName: \"example\",\n uiTemplate: {\n content: std.file({\n input: \"sagemaker-human-task-ui-template.html\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_std as std\n\nexample = aws.sagemaker.HumanTaskUI(\"example\",\n human_task_ui_name=\"example\",\n ui_template={\n \"content\": std.file(input=\"sagemaker-human-task-ui-template.html\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.HumanTaskUI(\"example\", new()\n {\n HumanTaskUiName = \"example\",\n UiTemplate = new Aws.Sagemaker.Inputs.HumanTaskUIUiTemplateArgs\n {\n Content = Std.File.Invoke(new()\n {\n Input = \"sagemaker-human-task-ui-template.html\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"sagemaker-human-task-ui-template.html\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sagemaker.NewHumanTaskUI(ctx, \"example\", \u0026sagemaker.HumanTaskUIArgs{\n\t\t\tHumanTaskUiName: pulumi.String(\"example\"),\n\t\t\tUiTemplate: \u0026sagemaker.HumanTaskUIUiTemplateArgs{\n\t\t\t\tContent: pulumi.String(invokeFile.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.HumanTaskUI;\nimport com.pulumi.aws.sagemaker.HumanTaskUIArgs;\nimport com.pulumi.aws.sagemaker.inputs.HumanTaskUIUiTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HumanTaskUI(\"example\", HumanTaskUIArgs.builder()\n .humanTaskUiName(\"example\")\n .uiTemplate(HumanTaskUIUiTemplateArgs.builder()\n .content(StdFunctions.file(FileArgs.builder()\n .input(\"sagemaker-human-task-ui-template.html\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:HumanTaskUI\n properties:\n humanTaskUiName: example\n uiTemplate:\n content:\n fn::invoke:\n Function: std:file\n Arguments:\n input: sagemaker-human-task-ui-template.html\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker Human Task UIs using the `human_task_ui_name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/humanTaskUI:HumanTaskUI example example\n```\n",
"properties": {
@@ -348998,6 +350621,177 @@
"type": "object"
}
},
+ "aws:sagemaker/mlflowTrackingServer:MlflowTrackingServer": {
+ "description": "Provides a SageMaker MLFlow Tracking Server resource.\n\n## Example Usage\n\n### Cognito Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.sagemaker.MlflowTrackingServer(\"example\", {\n trackingServerName: \"example\",\n roleArn: exampleAwsIamRole.arn,\n artifactStoreUri: `s3://${exampleAwsS3Bucket.bucket}/path`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sagemaker.MlflowTrackingServer(\"example\",\n tracking_server_name=\"example\",\n role_arn=example_aws_iam_role[\"arn\"],\n artifact_store_uri=f\"s3://{example_aws_s3_bucket['bucket']}/path\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Sagemaker.MlflowTrackingServer(\"example\", new()\n {\n TrackingServerName = \"example\",\n RoleArn = exampleAwsIamRole.Arn,\n ArtifactStoreUri = $\"s3://{exampleAwsS3Bucket.Bucket}/path\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sagemaker.NewMlflowTrackingServer(ctx, \"example\", \u0026sagemaker.MlflowTrackingServerArgs{\n\t\t\tTrackingServerName: pulumi.String(\"example\"),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tArtifactStoreUri: pulumi.Sprintf(\"s3://%v/path\", exampleAwsS3Bucket.Bucket),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.sagemaker.MlflowTrackingServer;\nimport com.pulumi.aws.sagemaker.MlflowTrackingServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new MlflowTrackingServer(\"example\", MlflowTrackingServerArgs.builder()\n .trackingServerName(\"example\")\n .roleArn(exampleAwsIamRole.arn())\n .artifactStoreUri(String.format(\"s3://%s/path\", exampleAwsS3Bucket.bucket()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:MlflowTrackingServer\n properties:\n trackingServerName: example\n roleArn: ${exampleAwsIamRole.arn}\n artifactStoreUri: s3://${exampleAwsS3Bucket.bucket}/path\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SageMaker MLFlow Tracking Servers using the `workteam_name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/mlflowTrackingServer:MlflowTrackingServer example example\n```\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) assigned by AWS to this MLFlow Tracking Server.\n"
+ },
+ "artifactStoreUri": {
+ "type": "string",
+ "description": "The S3 URI for a general purpose bucket to use as the MLflow Tracking Server artifact store.\n"
+ },
+ "automaticModelRegistration": {
+ "type": "boolean",
+ "description": "A list of Member Definitions that contains objects that identify the workers that make up the work team.\n"
+ },
+ "mlflowVersion": {
+ "type": "string",
+ "description": "The version of MLflow that the tracking server uses. To see which MLflow versions are available to use, see [How it works](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html#mlflow-create-tracking-server-how-it-works).\n"
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for an IAM role in your account that the MLflow Tracking Server uses to access the artifact store in Amazon S3. The role should have AmazonS3FullAccess permissions. For more information on IAM permissions for tracking server creation, see [Set up IAM permissions for MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-iam.html).\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "trackingServerName": {
+ "type": "string",
+ "description": "A unique string identifying the tracking server name. This string is part of the tracking server ARN.\n"
+ },
+ "trackingServerSize": {
+ "type": "string",
+ "description": "The size of the tracking server you want to create. You can choose between \"Small\", \"Medium\", and \"Large\". The default MLflow Tracking Server configuration size is \"Small\". You can choose a size depending on the projected use of the tracking server such as the volume of data logged, number of users, and frequency of use.\n"
+ },
+ "trackingServerUrl": {
+ "type": "string",
+ "description": "The URL to connect to the MLflow user interface for the described tracking server.\n"
+ },
+ "weeklyMaintenanceWindowStart": {
+ "type": "string",
+ "description": "The day and time of the week in Coordinated Universal Time (UTC) 24-hour standard time that weekly maintenance updates are scheduled. For example: TUE:03:30.\n"
+ }
+ },
+ "required": [
+ "arn",
+ "artifactStoreUri",
+ "mlflowVersion",
+ "roleArn",
+ "tagsAll",
+ "trackingServerName",
+ "trackingServerUrl",
+ "weeklyMaintenanceWindowStart"
+ ],
+ "inputProperties": {
+ "artifactStoreUri": {
+ "type": "string",
+ "description": "The S3 URI for a general purpose bucket to use as the MLflow Tracking Server artifact store.\n"
+ },
+ "automaticModelRegistration": {
+ "type": "boolean",
+ "description": "A list of Member Definitions that contains objects that identify the workers that make up the work team.\n"
+ },
+ "mlflowVersion": {
+ "type": "string",
+ "description": "The version of MLflow that the tracking server uses. To see which MLflow versions are available to use, see [How it works](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html#mlflow-create-tracking-server-how-it-works).\n",
+ "willReplaceOnChanges": true
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for an IAM role in your account that the MLflow Tracking Server uses to access the artifact store in Amazon S3. The role should have AmazonS3FullAccess permissions. For more information on IAM permissions for tracking server creation, see [Set up IAM permissions for MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-iam.html).\n",
+ "willReplaceOnChanges": true
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "trackingServerName": {
+ "type": "string",
+ "description": "A unique string identifying the tracking server name. This string is part of the tracking server ARN.\n",
+ "willReplaceOnChanges": true
+ },
+ "trackingServerSize": {
+ "type": "string",
+ "description": "The size of the tracking server you want to create. You can choose between \"Small\", \"Medium\", and \"Large\". The default MLflow Tracking Server configuration size is \"Small\". You can choose a size depending on the projected use of the tracking server such as the volume of data logged, number of users, and frequency of use.\n"
+ },
+ "weeklyMaintenanceWindowStart": {
+ "type": "string",
+ "description": "The day and time of the week in Coordinated Universal Time (UTC) 24-hour standard time that weekly maintenance updates are scheduled. For example: TUE:03:30.\n"
+ }
+ },
+ "requiredInputs": [
+ "artifactStoreUri",
+ "roleArn",
+ "trackingServerName"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering MlflowTrackingServer resources.\n",
+ "properties": {
+ "arn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) assigned by AWS to this MLFlow Tracking Server.\n"
+ },
+ "artifactStoreUri": {
+ "type": "string",
+ "description": "The S3 URI for a general purpose bucket to use as the MLflow Tracking Server artifact store.\n"
+ },
+ "automaticModelRegistration": {
+ "type": "boolean",
+ "description": "A list of Member Definitions that contains objects that identify the workers that make up the work team.\n"
+ },
+ "mlflowVersion": {
+ "type": "string",
+ "description": "The version of MLflow that the tracking server uses. To see which MLflow versions are available to use, see [How it works](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html#mlflow-create-tracking-server-how-it-works).\n",
+ "willReplaceOnChanges": true
+ },
+ "roleArn": {
+ "type": "string",
+ "description": "The Amazon Resource Name (ARN) for an IAM role in your account that the MLflow Tracking Server uses to access the artifact store in Amazon S3. The role should have AmazonS3FullAccess permissions. For more information on IAM permissions for tracking server creation, see [Set up IAM permissions for MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-iam.html).\n",
+ "willReplaceOnChanges": true
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A 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.\n"
+ },
+ "tagsAll": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n",
+ "deprecationMessage": "Please use `tags` instead."
+ },
+ "trackingServerName": {
+ "type": "string",
+ "description": "A unique string identifying the tracking server name. This string is part of the tracking server ARN.\n",
+ "willReplaceOnChanges": true
+ },
+ "trackingServerSize": {
+ "type": "string",
+ "description": "The size of the tracking server you want to create. You can choose between \"Small\", \"Medium\", and \"Large\". The default MLflow Tracking Server configuration size is \"Small\". You can choose a size depending on the projected use of the tracking server such as the volume of data logged, number of users, and frequency of use.\n"
+ },
+ "trackingServerUrl": {
+ "type": "string",
+ "description": "The URL to connect to the MLflow user interface for the described tracking server.\n"
+ },
+ "weeklyMaintenanceWindowStart": {
+ "type": "string",
+ "description": "The day and time of the week in Coordinated Universal Time (UTC) 24-hour standard time that weekly maintenance updates are scheduled. For example: TUE:03:30.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
"aws:sagemaker/model:Model": {
"description": "Provides a SageMaker model resource.\n\n## Example Usage\n\nBasic usage:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst assumeRole = aws.iam.getPolicyDocument({\n statements: [{\n actions: [\"sts:AssumeRole\"],\n principals: [{\n type: \"Service\",\n identifiers: [\"sagemaker.amazonaws.com\"],\n }],\n }],\n});\nconst exampleRole = new aws.iam.Role(\"example\", {assumeRolePolicy: assumeRole.then(assumeRole =\u003e assumeRole.json)});\nconst test = aws.sagemaker.getPrebuiltEcrImage({\n repositoryName: \"kmeans\",\n});\nconst example = new aws.sagemaker.Model(\"example\", {\n name: \"my-model\",\n executionRoleArn: exampleRole.arn,\n primaryContainer: {\n image: test.then(test =\u003e test.registryPath),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nassume_role = aws.iam.get_policy_document(statements=[{\n \"actions\": [\"sts:AssumeRole\"],\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"sagemaker.amazonaws.com\"],\n }],\n}])\nexample_role = aws.iam.Role(\"example\", assume_role_policy=assume_role.json)\ntest = aws.sagemaker.get_prebuilt_ecr_image(repository_name=\"kmeans\")\nexample = aws.sagemaker.Model(\"example\",\n name=\"my-model\",\n execution_role_arn=example_role.arn,\n primary_container={\n \"image\": test.registry_path,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var assumeRole = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Actions = new[]\n {\n \"sts:AssumeRole\",\n },\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"sagemaker.amazonaws.com\",\n },\n },\n },\n },\n },\n });\n\n var exampleRole = new Aws.Iam.Role(\"example\", new()\n {\n AssumeRolePolicy = assumeRole.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n var test = Aws.Sagemaker.GetPrebuiltEcrImage.Invoke(new()\n {\n RepositoryName = \"kmeans\",\n });\n\n var example = new Aws.Sagemaker.Model(\"example\", new()\n {\n Name = \"my-model\",\n ExecutionRoleArn = exampleRole.Arn,\n PrimaryContainer = new Aws.Sagemaker.Inputs.ModelPrimaryContainerArgs\n {\n Image = test.Apply(getPrebuiltEcrImageResult =\u003e getPrebuiltEcrImageResult.RegistryPath),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassumeRole, err := iam.GetPolicyDocument(ctx, \u0026iam.GetPolicyDocumentArgs{\n\t\t\tStatements: []iam.GetPolicyDocumentStatement{\n\t\t\t\t{\n\t\t\t\t\tActions: []string{\n\t\t\t\t\t\t\"sts:AssumeRole\",\n\t\t\t\t\t},\n\t\t\t\t\tPrincipals: []iam.GetPolicyDocumentStatementPrincipal{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tType: \"Service\",\n\t\t\t\t\t\t\tIdentifiers: []string{\n\t\t\t\t\t\t\t\t\"sagemaker.amazonaws.com\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleRole, err := iam.NewRole(ctx, \"example\", \u0026iam.RoleArgs{\n\t\t\tAssumeRolePolicy: pulumi.String(assumeRole.Json),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := sagemaker.GetPrebuiltEcrImage(ctx, \u0026sagemaker.GetPrebuiltEcrImageArgs{\n\t\t\tRepositoryName: \"kmeans\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sagemaker.NewModel(ctx, \"example\", \u0026sagemaker.ModelArgs{\n\t\t\tName: pulumi.String(\"my-model\"),\n\t\t\tExecutionRoleArn: exampleRole.Arn,\n\t\t\tPrimaryContainer: \u0026sagemaker.ModelPrimaryContainerArgs{\n\t\t\t\tImage: pulumi.String(test.RegistryPath),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.iam.Role;\nimport com.pulumi.aws.iam.RoleArgs;\nimport com.pulumi.aws.sagemaker.SagemakerFunctions;\nimport com.pulumi.aws.sagemaker.inputs.GetPrebuiltEcrImageArgs;\nimport com.pulumi.aws.sagemaker.Model;\nimport com.pulumi.aws.sagemaker.ModelArgs;\nimport com.pulumi.aws.sagemaker.inputs.ModelPrimaryContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .actions(\"sts:AssumeRole\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"sagemaker.amazonaws.com\")\n .build())\n .build())\n .build());\n\n var exampleRole = new Role(\"exampleRole\", RoleArgs.builder()\n .assumeRolePolicy(assumeRole.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json()))\n .build());\n\n final var test = SagemakerFunctions.getPrebuiltEcrImage(GetPrebuiltEcrImageArgs.builder()\n .repositoryName(\"kmeans\")\n .build());\n\n var example = new Model(\"example\", ModelArgs.builder()\n .name(\"my-model\")\n .executionRoleArn(exampleRole.arn())\n .primaryContainer(ModelPrimaryContainerArgs.builder()\n .image(test.applyValue(getPrebuiltEcrImageResult -\u003e getPrebuiltEcrImageResult.registryPath()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sagemaker:Model\n properties:\n name: my-model\n executionRoleArn: ${exampleRole.arn}\n primaryContainer:\n image: ${test.registryPath}\n exampleRole:\n type: aws:iam:Role\n name: example\n properties:\n assumeRolePolicy: ${assumeRole.json}\nvariables:\n assumeRole:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n statements:\n - actions:\n - sts:AssumeRole\n principals:\n - type: Service\n identifiers:\n - sagemaker.amazonaws.com\n test:\n fn::invoke:\n Function: aws:sagemaker:getPrebuiltEcrImage\n Arguments:\n repositoryName: kmeans\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Inference Execution Config\n\n* `mode` - (Required) How containers in a multi-container are run. The following values are valid `Serial` and `Direct`.\n\n## Import\n\nUsing `pulumi import`, import models using the `name`. For example:\n\n```sh\n$ pulumi import aws:sagemaker/model:Model test_model model-foo\n```\n",
"properties": {
@@ -352881,7 +354675,7 @@
"properties": {
"standardsArn": {
"type": "string",
- "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n"
+ "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| CIS AWS Foundations Benchmark v3.0.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/3.0.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n"
}
},
"required": [
@@ -352890,7 +354684,7 @@
"inputProperties": {
"standardsArn": {
"type": "string",
- "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n",
+ "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| CIS AWS Foundations Benchmark v3.0.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/3.0.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n",
"willReplaceOnChanges": true
}
},
@@ -352902,7 +354696,7 @@
"properties": {
"standardsArn": {
"type": "string",
- "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n",
+ "description": "The ARN of a standard - see below.\n\nCurrently available standards (remember to replace `${var.partition}` and `${var.region}` as appropriate):\n\n| Name | ARN |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------|\n| AWS Foundational Security Best Practices | `arn:${var.partition}:securityhub:${var.region}::standards/aws-foundational-security-best-practices/v/1.0.0` |\n| AWS Resource Tagging Standard | `arn:${var.partition}:securityhub:${var.region}::standards/aws-resource-tagging-standard/v/1.0.0` |\n| CIS AWS Foundations Benchmark v1.2.0 | `arn:${var.partition}:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0` |\n| CIS AWS Foundations Benchmark v1.4.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/1.4.0` |\n| CIS AWS Foundations Benchmark v3.0.0 | `arn:${var.partition}:securityhub:${var.region}::standards/cis-aws-foundations-benchmark/v/3.0.0` |\n| NIST SP 800-53 Rev. 5 | `arn:${var.partition}:securityhub:${var.region}::standards/nist-800-53/v/5.0.0` |\n| PCI DSS | `arn:${var.partition}:securityhub:${var.region}::standards/pci-dss/v/3.2.1` |\n",
"willReplaceOnChanges": true
}
},
@@ -370184,7 +371978,7 @@
}
},
"aws:verifiedaccess/group:Group": {
- "description": "Resource for managing a Verified Access Group.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.verifiedaccess.Group(\"example\", {verifiedaccessInstanceId: exampleAwsVerifiedaccessInstance.id});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.verifiedaccess.Group(\"example\", verifiedaccess_instance_id=example_aws_verifiedaccess_instance[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.VerifiedAccess.Group(\"example\", new()\n {\n VerifiedaccessInstanceId = exampleAwsVerifiedaccessInstance.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/verifiedaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := verifiedaccess.NewGroup(ctx, \"example\", \u0026verifiedaccess.GroupArgs{\n\t\t\tVerifiedaccessInstanceId: pulumi.Any(exampleAwsVerifiedaccessInstance.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.verifiedaccess.Group;\nimport com.pulumi.aws.verifiedaccess.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Group(\"example\", GroupArgs.builder()\n .verifiedaccessInstanceId(exampleAwsVerifiedaccessInstance.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:verifiedaccess:Group\n properties:\n verifiedaccessInstanceId: ${exampleAwsVerifiedaccessInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage with KMS Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n testKey:\n type: aws:kms:Key\n name: test_key\n properties:\n description: KMS key for Verified Access Group test\n test:\n type: aws:verifiedaccess:Group\n properties:\n verifiedaccessInstanceId: ${testAwsVerifiedaccessInstanceTrustProviderAttachment.verifiedaccessInstanceId}\n serverSideEncryptionConfiguration:\n - kmsKeyArn: ${testKey.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "description": "Resource for managing a Verified Access Group.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.verifiedaccess.Group(\"example\", {verifiedaccessInstanceId: exampleAwsVerifiedaccessInstance.id});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.verifiedaccess.Group(\"example\", verifiedaccess_instance_id=example_aws_verifiedaccess_instance[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.VerifiedAccess.Group(\"example\", new()\n {\n VerifiedaccessInstanceId = exampleAwsVerifiedaccessInstance.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/verifiedaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := verifiedaccess.NewGroup(ctx, \"example\", \u0026verifiedaccess.GroupArgs{\n\t\t\tVerifiedaccessInstanceId: pulumi.Any(exampleAwsVerifiedaccessInstance.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.verifiedaccess.Group;\nimport com.pulumi.aws.verifiedaccess.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Group(\"example\", GroupArgs.builder()\n .verifiedaccessInstanceId(exampleAwsVerifiedaccessInstance.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:verifiedaccess:Group\n properties:\n verifiedaccessInstanceId: ${exampleAwsVerifiedaccessInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Usage with KMS Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst testKey = new aws.kms.Key(\"test_key\", {description: \"KMS key for Verified Access Group test\"});\nconst test = new aws.verifiedaccess.Group(\"test\", {\n verifiedaccessInstanceId: testAwsVerifiedaccessInstanceTrustProviderAttachment.verifiedaccessInstanceId,\n sseConfiguration: {\n kmsKeyArn: testKey.arn,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest_key = aws.kms.Key(\"test_key\", description=\"KMS key for Verified Access Group test\")\ntest = aws.verifiedaccess.Group(\"test\",\n verifiedaccess_instance_id=test_aws_verifiedaccess_instance_trust_provider_attachment[\"verifiedaccessInstanceId\"],\n sse_configuration={\n \"kms_key_arn\": test_key.arn,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testKey = new Aws.Kms.Key(\"test_key\", new()\n {\n Description = \"KMS key for Verified Access Group test\",\n });\n\n var test = new Aws.VerifiedAccess.Group(\"test\", new()\n {\n VerifiedaccessInstanceId = testAwsVerifiedaccessInstanceTrustProviderAttachment.VerifiedaccessInstanceId,\n SseConfiguration = new Aws.VerifiedAccess.Inputs.GroupSseConfigurationArgs\n {\n KmsKeyArn = testKey.Arn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/verifiedaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestKey, err := kms.NewKey(ctx, \"test_key\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"KMS key for Verified Access Group test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = verifiedaccess.NewGroup(ctx, \"test\", \u0026verifiedaccess.GroupArgs{\n\t\t\tVerifiedaccessInstanceId: pulumi.Any(testAwsVerifiedaccessInstanceTrustProviderAttachment.VerifiedaccessInstanceId),\n\t\t\tSseConfiguration: \u0026verifiedaccess.GroupSseConfigurationArgs{\n\t\t\t\tKmsKeyArn: testKey.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.verifiedaccess.Group;\nimport com.pulumi.aws.verifiedaccess.GroupArgs;\nimport com.pulumi.aws.verifiedaccess.inputs.GroupSseConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testKey = new Key(\"testKey\", KeyArgs.builder()\n .description(\"KMS key for Verified Access Group test\")\n .build());\n\n var test = new Group(\"test\", GroupArgs.builder()\n .verifiedaccessInstanceId(testAwsVerifiedaccessInstanceTrustProviderAttachment.verifiedaccessInstanceId())\n .sseConfiguration(GroupSseConfigurationArgs.builder()\n .kmsKeyArn(testKey.arn())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testKey:\n type: aws:kms:Key\n name: test_key\n properties:\n description: KMS key for Verified Access Group test\n test:\n type: aws:verifiedaccess:Group\n properties:\n verifiedaccessInstanceId: ${testAwsVerifiedaccessInstanceTrustProviderAttachment.verifiedaccessInstanceId}\n sseConfiguration:\n kmsKeyArn: ${testKey.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"properties": {
"creationTime": {
"type": "string",
@@ -377212,6 +379006,9 @@
"enableXffClientPort": {
"type": "boolean"
},
+ "enableZonalShift": {
+ "type": "boolean"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string"
},
@@ -377288,6 +379085,7 @@
"enableTlsVersionAndCipherSuiteHeaders",
"enableWafFailOpen",
"enableXffClientPort",
+ "enableZonalShift",
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
"idleTimeout",
"internal",
@@ -392534,7 +394332,7 @@
}
},
"aws:ec2/getSubnet:getSubnet": {
- "description": "`aws.ec2.Subnet` provides details about a specific VPC subnet.\n\nThis resource can prove useful when a module accepts a subnet ID as an input variable and needs to, for example, determine the ID of the VPC that the subnet belongs to.\n\n## Example Usage\n\nThe following example shows how one might accept a subnet ID as a variable and use this data source to obtain the data necessary to create a security group that allows connections from hosts in that subnet.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst subnetId = config.requireObject(\"subnetId\");\nconst selected = aws.ec2.getSubnet({\n id: subnetId,\n});\nconst subnet = new aws.ec2.SecurityGroup(\"subnet\", {\n vpcId: selected.then(selected =\u003e selected.vpcId),\n ingress: [{\n cidrBlocks: [selected.then(selected =\u003e selected.cidrBlock)],\n fromPort: 80,\n toPort: 80,\n protocol: \"tcp\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nsubnet_id = config.require_object(\"subnetId\")\nselected = aws.ec2.get_subnet(id=subnet_id)\nsubnet = aws.ec2.SecurityGroup(\"subnet\",\n vpc_id=selected.vpc_id,\n ingress=[{\n \"cidr_blocks\": [selected.cidr_block],\n \"from_port\": 80,\n \"to_port\": 80,\n \"protocol\": \"tcp\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var subnetId = config.RequireObject\u003cdynamic\u003e(\"subnetId\");\n var selected = Aws.Ec2.GetSubnet.Invoke(new()\n {\n Id = subnetId,\n });\n\n var subnet = new Aws.Ec2.SecurityGroup(\"subnet\", new()\n {\n VpcId = selected.Apply(getSubnetResult =\u003e getSubnetResult.VpcId),\n Ingress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupIngressArgs\n {\n CidrBlocks = new[]\n {\n selected.Apply(getSubnetResult =\u003e getSubnetResult.CidrBlock),\n },\n FromPort = 80,\n ToPort = 80,\n Protocol = \"tcp\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tsubnetId := cfg.RequireObject(\"subnetId\")\n\t\tselected, err := ec2.LookupSubnet(ctx, \u0026ec2.LookupSubnetArgs{\n\t\t\tId: pulumi.StringRef(subnetId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewSecurityGroup(ctx, \"subnet\", \u0026ec2.SecurityGroupArgs{\n\t\t\tVpcId: pulumi.String(selected.VpcId),\n\t\t\tIngress: ec2.SecurityGroupIngressArray{\n\t\t\t\t\u0026ec2.SecurityGroupIngressArgs{\n\t\t\t\t\tCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(selected.CidrBlock),\n\t\t\t\t\t},\n\t\t\t\t\tFromPort: pulumi.Int(80),\n\t\t\t\t\tToPort: pulumi.Int(80),\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupIngressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var subnetId = config.get(\"subnetId\");\n final var selected = Ec2Functions.getSubnet(GetSubnetArgs.builder()\n .id(subnetId)\n .build());\n\n var subnet = new SecurityGroup(\"subnet\", SecurityGroupArgs.builder()\n .vpcId(selected.applyValue(getSubnetResult -\u003e getSubnetResult.vpcId()))\n .ingress(SecurityGroupIngressArgs.builder()\n .cidrBlocks(selected.applyValue(getSubnetResult -\u003e getSubnetResult.cidrBlock()))\n .fromPort(80)\n .toPort(80)\n .protocol(\"tcp\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n subnetId:\n type: dynamic\nresources:\n subnet:\n type: aws:ec2:SecurityGroup\n properties:\n vpcId: ${selected.vpcId}\n ingress:\n - cidrBlocks:\n - ${selected.cidrBlock}\n fromPort: 80\n toPort: 80\n protocol: tcp\nvariables:\n selected:\n fn::invoke:\n Function: aws:ec2:getSubnet\n Arguments:\n id: ${subnetId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Filter Example\n\nIf you want to match against tag `Name`, use:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst selected = aws.ec2.getSubnet({\n filters: [{\n name: \"tag:Name\",\n values: [\"yakdriver\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nselected = aws.ec2.get_subnet(filters=[{\n \"name\": \"tag:Name\",\n \"values\": [\"yakdriver\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var selected = Aws.Ec2.GetSubnet.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ec2.Inputs.GetSubnetFilterInputArgs\n {\n Name = \"tag:Name\",\n Values = new[]\n {\n \"yakdriver\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.LookupSubnet(ctx, \u0026ec2.LookupSubnetArgs{\n\t\t\tFilters: []ec2.GetSubnetFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"tag:Name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"yakdriver\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var selected = Ec2Functions.getSubnet(GetSubnetArgs.builder()\n .filters(GetSubnetFilterArgs.builder()\n .name(\"tag:Name\")\n .values(\"yakdriver\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n selected:\n fn::invoke:\n Function: aws:ec2:getSubnet\n Arguments:\n filters:\n - name: tag:Name\n values:\n - yakdriver\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "description": "`aws.ec2.Subnet` provides details about a specific VPC subnet.\n\nThis resource can prove useful when a module accepts a subnet ID as an input variable and needs to, for example, determine the ID of the VPC that the subnet belongs to.\n\n## Example Usage\n\nThe following example shows how one might accept a subnet ID as a variable and use this data source to obtain the data necessary to create a security group that allows connections from hosts in that subnet.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst config = new pulumi.Config();\nconst subnetId = config.requireObject(\"subnetId\");\nconst selected = aws.ec2.getSubnet({\n id: subnetId,\n});\nconst subnetSecurityGroup = new aws.ec2.SecurityGroup(\"subnet_security_group\", {\n vpcId: selected.then(selected =\u003e selected.vpcId),\n ingress: [{\n cidrBlocks: [selected.then(selected =\u003e selected.cidrBlock)],\n fromPort: 80,\n toPort: 80,\n protocol: \"tcp\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nconfig = pulumi.Config()\nsubnet_id = config.require_object(\"subnetId\")\nselected = aws.ec2.get_subnet(id=subnet_id)\nsubnet_security_group = aws.ec2.SecurityGroup(\"subnet_security_group\",\n vpc_id=selected.vpc_id,\n ingress=[{\n \"cidr_blocks\": [selected.cidr_block],\n \"from_port\": 80,\n \"to_port\": 80,\n \"protocol\": \"tcp\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var subnetId = config.RequireObject\u003cdynamic\u003e(\"subnetId\");\n var selected = Aws.Ec2.GetSubnet.Invoke(new()\n {\n Id = subnetId,\n });\n\n var subnetSecurityGroup = new Aws.Ec2.SecurityGroup(\"subnet_security_group\", new()\n {\n VpcId = selected.Apply(getSubnetResult =\u003e getSubnetResult.VpcId),\n Ingress = new[]\n {\n new Aws.Ec2.Inputs.SecurityGroupIngressArgs\n {\n CidrBlocks = new[]\n {\n selected.Apply(getSubnetResult =\u003e getSubnetResult.CidrBlock),\n },\n FromPort = 80,\n ToPort = 80,\n Protocol = \"tcp\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tsubnetId := cfg.RequireObject(\"subnetId\")\n\t\tselected, err := ec2.LookupSubnet(ctx, \u0026ec2.LookupSubnetArgs{\n\t\t\tId: pulumi.StringRef(subnetId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewSecurityGroup(ctx, \"subnet_security_group\", \u0026ec2.SecurityGroupArgs{\n\t\t\tVpcId: pulumi.String(selected.VpcId),\n\t\t\tIngress: ec2.SecurityGroupIngressArray{\n\t\t\t\t\u0026ec2.SecurityGroupIngressArgs{\n\t\t\t\t\tCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(selected.CidrBlock),\n\t\t\t\t\t},\n\t\t\t\t\tFromPort: pulumi.Int(80),\n\t\t\t\t\tToPort: pulumi.Int(80),\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport com.pulumi.aws.ec2.SecurityGroup;\nimport com.pulumi.aws.ec2.SecurityGroupArgs;\nimport com.pulumi.aws.ec2.inputs.SecurityGroupIngressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var subnetId = config.get(\"subnetId\");\n final var selected = Ec2Functions.getSubnet(GetSubnetArgs.builder()\n .id(subnetId)\n .build());\n\n var subnetSecurityGroup = new SecurityGroup(\"subnetSecurityGroup\", SecurityGroupArgs.builder()\n .vpcId(selected.applyValue(getSubnetResult -\u003e getSubnetResult.vpcId()))\n .ingress(SecurityGroupIngressArgs.builder()\n .cidrBlocks(selected.applyValue(getSubnetResult -\u003e getSubnetResult.cidrBlock()))\n .fromPort(80)\n .toPort(80)\n .protocol(\"tcp\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n subnetId:\n type: dynamic\nresources:\n subnetSecurityGroup:\n type: aws:ec2:SecurityGroup\n name: subnet_security_group\n properties:\n vpcId: ${selected.vpcId}\n ingress:\n - cidrBlocks:\n - ${selected.cidrBlock}\n fromPort: 80\n toPort: 80\n protocol: tcp\nvariables:\n selected:\n fn::invoke:\n Function: aws:ec2:getSubnet\n Arguments:\n id: ${subnetId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Filter Example\n\nIf you want to match against tag `Name`, use:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst selected = aws.ec2.getSubnet({\n filters: [{\n name: \"tag:Name\",\n values: [\"yakdriver\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nselected = aws.ec2.get_subnet(filters=[{\n \"name\": \"tag:Name\",\n \"values\": [\"yakdriver\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var selected = Aws.Ec2.GetSubnet.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ec2.Inputs.GetSubnetFilterInputArgs\n {\n Name = \"tag:Name\",\n Values = new[]\n {\n \"yakdriver\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.LookupSubnet(ctx, \u0026ec2.LookupSubnetArgs{\n\t\t\tFilters: []ec2.GetSubnetFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"tag:Name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"yakdriver\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Ec2Functions;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var selected = Ec2Functions.getSubnet(GetSubnetArgs.builder()\n .filters(GetSubnetFilterArgs.builder()\n .name(\"tag:Name\")\n .values(\"yakdriver\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n selected:\n fn::invoke:\n Function: aws:ec2:getSubnet\n Arguments:\n filters:\n - name: tag:Name\n values:\n - yakdriver\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
"description": "A collection of arguments for invoking getSubnet.\n",
"properties": {
@@ -397990,7 +399788,7 @@
},
"productDescription": {
"type": "string",
- "description": "Engine type for the reserved cache node.\nValid values are `redis` and `memcached`.\n"
+ "description": "Engine type for the reserved cache node.\nValid values are `redis`, `valkey` and `memcached`.\n"
}
},
"type": "object",
@@ -398072,7 +399870,7 @@
"type": "string"
},
"dailySnapshotTime": {
- "description": "The daily time that snapshots will be created from the new serverless cache. Only available for engine type `\"redis\"`.\n",
+ "description": "The daily time that snapshots will be created from the new serverless cache. Only available for engine types `\"redis\"` and `\"valkey\"`.\n",
"type": "string"
},
"description": {
@@ -402084,6 +403882,7 @@
"owner",
"parentImage",
"platform",
+ "tags",
"targetRepositories",
"version",
"workingDirectory",
@@ -402691,6 +404490,7 @@
"owner",
"parentImage",
"platform",
+ "tags",
"userDataBase64",
"version",
"workingDirectory",
@@ -405162,6 +406962,13 @@
"description": "The provider-assigned unique ID for this managed resource.\n",
"type": "string"
},
+ "parameters": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value map of additional configuration. `CROSS_ACCOUNT_VERSION` will be set to values `\"1\"`, `\"2\"`, `\"3\"`, or `\"4\"`. `SET_CONTEXT` will also be returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `\"1\"`.\n",
+ "type": "object"
+ },
"readOnlyAdmins": {
"description": "List of ARNs of AWS Lake Formation principals (IAM users or roles) with only view access to the resources.\n",
"items": {
@@ -405185,6 +406992,7 @@
"createDatabaseDefaultPermissions",
"createTableDefaultPermissions",
"externalDataFilteringAllowLists",
+ "parameters",
"readOnlyAdmins",
"trustedResourceOwners",
"id"
@@ -406236,6 +408044,9 @@
"enableXffClientPort": {
"type": "boolean"
},
+ "enableZonalShift": {
+ "type": "boolean"
+ },
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
"type": "string"
},
@@ -406312,6 +408123,7 @@
"enableTlsVersionAndCipherSuiteHeaders",
"enableWafFailOpen",
"enableXffClientPort",
+ "enableZonalShift",
"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic",
"idleTimeout",
"internal",
@@ -420654,6 +422466,56 @@
"type": "object"
}
},
+ "aws:ssm/getPatchBaselines:getPatchBaselines": {
+ "description": "Data source for retrieving AWS SSM (Systems Manager) Patch Baselines.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.ssm.getPatchBaselines({});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.get_patch_baselines()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Ssm.GetPatchBaselines.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.GetPatchBaselines(ctx, \u0026ssm.GetPatchBaselinesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.SsmFunctions;\nimport com.pulumi.aws.ssm.inputs.GetPatchBaselinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = SsmFunctions.getPatchBaselines();\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: aws:ssm:getPatchBaselines\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Filters\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.ssm.getPatchBaselines({\n filters: [\n {\n key: \"OWNER\",\n values: [\"AWS\"],\n },\n {\n key: \"OPERATING_SYSTEM\",\n values: [\"WINDOWS\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssm.get_patch_baselines(filters=[\n {\n \"key\": \"OWNER\",\n \"values\": [\"AWS\"],\n },\n {\n \"key\": \"OPERATING_SYSTEM\",\n \"values\": [\"WINDOWS\"],\n },\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.Ssm.GetPatchBaselines.Invoke(new()\n {\n Filters = new[]\n {\n new Aws.Ssm.Inputs.GetPatchBaselinesFilterInputArgs\n {\n Key = \"OWNER\",\n Values = new[]\n {\n \"AWS\",\n },\n },\n new Aws.Ssm.Inputs.GetPatchBaselinesFilterInputArgs\n {\n Key = \"OPERATING_SYSTEM\",\n Values = new[]\n {\n \"WINDOWS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssm.GetPatchBaselines(ctx, \u0026ssm.GetPatchBaselinesArgs{\n\t\t\tFilters: []ssm.GetPatchBaselinesFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"OWNER\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"AWS\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"OPERATING_SYSTEM\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"WINDOWS\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssm.SsmFunctions;\nimport com.pulumi.aws.ssm.inputs.GetPatchBaselinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = SsmFunctions.getPatchBaselines(GetPatchBaselinesArgs.builder()\n .filters( \n GetPatchBaselinesFilterArgs.builder()\n .key(\"OWNER\")\n .values(\"AWS\")\n .build(),\n GetPatchBaselinesFilterArgs.builder()\n .key(\"OPERATING_SYSTEM\")\n .values(\"WINDOWS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: aws:ssm:getPatchBaselines\n Arguments:\n filters:\n - key: OWNER\n values:\n - AWS\n - key: OPERATING_SYSTEM\n values:\n - WINDOWS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "inputs": {
+ "description": "A collection of arguments for invoking getPatchBaselines.\n",
+ "properties": {
+ "defaultBaselines": {
+ "type": "boolean",
+ "description": "Only return baseline identities where `default_baseline` is `true`.\n"
+ },
+ "filters": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/aws:ssm/getPatchBaselinesFilter:getPatchBaselinesFilter"
+ },
+ "description": "Key-value pairs used to filter the results. See `filter` below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "outputs": {
+ "description": "A collection of values returned by getPatchBaselines.\n",
+ "properties": {
+ "baselineIdentities": {
+ "description": "List of baseline identities. See `baseline_identities` below.\n",
+ "items": {
+ "$ref": "#/types/aws:ssm/getPatchBaselinesBaselineIdentity:getPatchBaselinesBaselineIdentity"
+ },
+ "type": "array"
+ },
+ "defaultBaselines": {
+ "type": "boolean"
+ },
+ "filters": {
+ "items": {
+ "$ref": "#/types/aws:ssm/getPatchBaselinesFilter:getPatchBaselinesFilter"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "The provider-assigned unique ID for this managed resource.\n",
+ "type": "string"
+ }
+ },
+ "required": [
+ "baselineIdentities",
+ "id"
+ ],
+ "type": "object"
+ }
+ },
"aws:ssmcontacts/getContact:getContact": {
"description": "Data source for managing an AWS SSM Contact.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.ssmcontacts.getContact({\n arn: \"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ssmcontacts.get_contact(arn=\"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Aws.SsmContacts.GetContact.Invoke(new()\n {\n Arn = \"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssmcontacts\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ssmcontacts.LookupContact(ctx, \u0026ssmcontacts.LookupContactArgs{\n\t\t\tArn: \"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ssmcontacts.SsmcontactsFunctions;\nimport com.pulumi.aws.ssmcontacts.inputs.GetContactArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = SsmcontactsFunctions.getContact(GetContactArgs.builder()\n .arn(\"arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: aws:ssmcontacts:getContact\n Arguments:\n arn: arn:aws:ssm-contacts:us-west-2:123456789012:contact/contactalias\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
diff --git a/provider/go.mod b/provider/go.mod
index 3ff7135f5be..2e2767c5b4e 100644
--- a/provider/go.mod
+++ b/provider/go.mod
@@ -9,12 +9,12 @@ godebug tlskyber=0
require (
github.com/aws/aws-sdk-go-v2 v1.32.2
- github.com/aws/aws-sdk-go-v2/config v1.27.43
+ github.com/aws/aws-sdk-go-v2/config v1.28.0
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17
github.com/aws/aws-sdk-go-v2/service/appconfig v1.34.2
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.40.0
github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.2
- github.com/aws/aws-sdk-go-v2/service/s3 v1.65.3
+ github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0
github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.58
github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0
github.com/hashicorp/terraform-provider-aws v1.60.1-0.20220923175450-ca71523cdc36
@@ -73,7 +73,7 @@ require (
github.com/aws/aws-sdk-go v1.55.5 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.41 // indirect
- github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.32 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.33 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
@@ -90,21 +90,21 @@ require (
github.com/aws/aws-sdk-go-v2/service/appflow v1.45.3 // indirect
github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.2 // indirect
github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.28.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.0 // indirect
github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.6.2 // indirect
github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.2 // indirect
github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.2 // indirect
github.com/aws/aws-sdk-go-v2/service/appstream v1.41.2 // indirect
github.com/aws/aws-sdk-go-v2/service/appsync v1.38.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/athena v1.47.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/athena v1.48.0 // indirect
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/autoscaling v1.45.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/autoscaling v1.46.0 // indirect
github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.2 // indirect
github.com/aws/aws-sdk-go-v2/service/backup v1.39.3 // indirect
github.com/aws/aws-sdk-go-v2/service/batch v1.46.2 // indirect
github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/bedrock v1.20.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.23.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/bedrock v1.21.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.24.0 // indirect
github.com/aws/aws-sdk-go-v2/service/budgets v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.2 // indirect
github.com/aws/aws-sdk-go-v2/service/chime v1.34.2 // indirect
@@ -139,17 +139,17 @@ require (
github.com/aws/aws-sdk-go-v2/service/configservice v1.50.2 // indirect
github.com/aws/aws-sdk-go-v2/service/connect v1.113.2 // indirect
github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/controltower v1.18.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/controltower v1.18.3 // indirect
github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.2 // indirect
github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.10.2 // indirect
github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.42.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.43.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.0 // indirect
github.com/aws/aws-sdk-go-v2/service/databrew v1.33.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/dataexchange v1.32.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.0 // indirect
github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.2 // indirect
github.com/aws/aws-sdk-go-v2/service/datasync v1.42.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/datazone v1.22.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/datazone v1.23.0 // indirect
github.com/aws/aws-sdk-go-v2/service/dax v1.23.2 // indirect
github.com/aws/aws-sdk-go-v2/service/detective v1.31.2 // indirect
github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.2 // indirect
@@ -161,12 +161,12 @@ require (
github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.13.2 // indirect
github.com/aws/aws-sdk-go-v2/service/drs v1.30.2 // indirect
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.36.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/ec2 v1.182.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ec2 v1.184.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2 // indirect
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/ecs v1.47.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ecs v1.47.4 // indirect
github.com/aws/aws-sdk-go-v2/service/efs v1.33.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/eks v1.50.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/eks v1.51.0 // indirect
github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.0 // indirect
github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.2 // indirect
@@ -180,7 +180,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/finspace v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/firehose v1.34.2 // indirect
github.com/aws/aws-sdk-go-v2/service/fis v1.30.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/fms v1.37.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/fms v1.38.0 // indirect
github.com/aws/aws-sdk-go-v2/service/fsx v1.49.2 // indirect
github.com/aws/aws-sdk-go-v2/service/gamelift v1.36.2 // indirect
github.com/aws/aws-sdk-go-v2/service/glacier v1.26.2 // indirect
@@ -193,6 +193,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/healthlake v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/iam v1.37.2 // indirect
github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.0 // indirect
github.com/aws/aws-sdk-go-v2/service/inspector v1.25.2 // indirect
github.com/aws/aws-sdk-go-v2/service/inspector2 v1.32.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect
@@ -224,7 +225,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/lightsail v1.42.2 // indirect
github.com/aws/aws-sdk-go-v2/service/location v1.42.2 // indirect
github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/m2 v1.17.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/m2 v1.18.0 // indirect
github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.2 // indirect
github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.2 // indirect
github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.61.2 // indirect
@@ -251,16 +252,16 @@ require (
github.com/aws/aws-sdk-go-v2/service/pcaconnectorad v1.9.2 // indirect
github.com/aws/aws-sdk-go-v2/service/pcs v1.2.2 // indirect
github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.15.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/pipes v1.17.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.16.0 // indirect
+ github.com/aws/aws-sdk-go-v2/service/pipes v1.18.0 // indirect
github.com/aws/aws-sdk-go-v2/service/polly v1.45.2 // indirect
github.com/aws/aws-sdk-go-v2/service/pricing v1.32.2 // indirect
github.com/aws/aws-sdk-go-v2/service/qbusiness v1.14.0 // indirect
github.com/aws/aws-sdk-go-v2/service/qldb v1.25.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/quicksight v1.76.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/quicksight v1.77.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ram v1.29.2 // indirect
github.com/aws/aws-sdk-go-v2/service/rbin v1.20.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/rds v1.87.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/rds v1.88.0 // indirect
github.com/aws/aws-sdk-go-v2/service/redshift v1.50.0 // indirect
github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.30.2 // indirect
github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.23.2 // indirect
@@ -316,7 +317,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.2 // indirect
github.com/aws/aws-sdk-go-v2/service/waf v1.25.2 // indirect
github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/wafv2 v1.54.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.0 // indirect
github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.2 // indirect
github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 // indirect
github.com/aws/aws-sdk-go-v2/service/workspaces v1.48.2 // indirect
@@ -399,7 +400,7 @@ require (
github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 // indirect
github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1 // indirect
github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 // indirect
- github.com/hashicorp/terraform-plugin-framework-validators v0.13.0 // indirect
+ github.com/hashicorp/terraform-plugin-framework-validators v0.14.0 // indirect
github.com/hashicorp/terraform-plugin-go v0.24.0 // indirect
github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect
github.com/hashicorp/terraform-plugin-mux v0.16.0 // indirect
diff --git a/provider/go.sum b/provider/go.sum
index e01eefdd4e9..1c5ee0adb5d 100644
--- a/provider/go.sum
+++ b/provider/go.sum
@@ -1238,14 +1238,14 @@ github.com/aws/aws-sdk-go-v2 v1.32.2 h1:AkNLZEyYMLnx/Q/mSKkcMqwNFXMAvFto9bNsHqcT
github.com/aws/aws-sdk-go-v2 v1.32.2/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 h1:pT3hpW0cOHRJx8Y0DfJUEQuqPild8jRGmSFmBgvydr0=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6/go.mod h1:j/I2++U0xX+cr44QjHay4Cvxj6FUbnxrgmqN3H1jTZA=
-github.com/aws/aws-sdk-go-v2/config v1.27.43 h1:p33fDDihFC390dhhuv8nOmX419wjOSDQRb+USt20RrU=
-github.com/aws/aws-sdk-go-v2/config v1.27.43/go.mod h1:pYhbtvg1siOOg8h5an77rXle9tVG8T+BWLWAo7cOukc=
+github.com/aws/aws-sdk-go-v2/config v1.28.0 h1:FosVYWcqEtWNxHn8gB/Vs6jOlNwSoyOCA/g/sxyySOQ=
+github.com/aws/aws-sdk-go-v2/config v1.28.0/go.mod h1:pYhbtvg1siOOg8h5an77rXle9tVG8T+BWLWAo7cOukc=
github.com/aws/aws-sdk-go-v2/credentials v1.17.41 h1:7gXo+Axmp+R4Z+AK8YFQO0ZV3L0gizGINCOWxSLY9W8=
github.com/aws/aws-sdk-go-v2/credentials v1.17.41/go.mod h1:u4Eb8d3394YLubphT4jLEwN1rLNq2wFOlT6OuxFwPzU=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 h1:TMH3f/SCAWdNtXXVPPu5D6wrr4G5hI1rAxbcocKfC7Q=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17/go.mod h1:1ZRXLdTpzdJb9fwTMXiLipENRxkGMTn1sfKexGllQCw=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.32 h1:C2hE+gJ40Cb4vzhFJ+tTzjvBpPloUq7XP6PD3A2Fk7g=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.32/go.mod h1:0OmMtVNp+10JFBTfmA2AIeqBDm0YthDXmE+N7poaptk=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.33 h1:X+4YY5kZRI/cOoSMVMGTqFXHAMg1bvvay7IBcqHpybQ=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.33/go.mod h1:DPynzu+cn92k5UQ6tZhX+wfTB4ah6QDU/NgdHqatmvk=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 h1:UAsR3xA31QGf79WzpG/ixT9FZvQlh5HY1NRqSHBNOCk=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21/go.mod h1:JNr43NFf5L9YaG3eKTm7HQzls9J+A9YYcGI5Quh1r2Y=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 h1:6jZVETqmYCadGFvrYEQfC5fAQmlo80CeL5psbno6r0s=
@@ -1280,8 +1280,8 @@ github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.2 h1:r/++KdfZx8Woi3pI
github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.2/go.mod h1:bcwWgN13kk3Y7iq5stSA+joIygO0/QK7d18ohTEF188=
github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.2 h1:douQmMbPFGG5AxFDoWdImN3T+8N1z32hkQXPIL7NKGs=
github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.2/go.mod h1:yg5Zb3dlzZMV7FsmL5fI82xPgUa62sQP4MeQwTS3NRk=
-github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.28.2 h1:gOn6bFXWTsGHSBMdMUU5hwmZzop650HoYPq0JSqM+so=
-github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.28.2/go.mod h1:6igoPKTMLmlS5UzkIaVsJYLXQjSQAVs75HiY2xdJyKI=
+github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.0 h1:eI1i6YZDDwAd+wN2v40yWwzRd7DMVPO3227233q9vgA=
+github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.0/go.mod h1:6igoPKTMLmlS5UzkIaVsJYLXQjSQAVs75HiY2xdJyKI=
github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.6.2 h1:VhZVJ0HiiWieoahI0LC+/rrAkgwPpuWw37HlVxs8OrM=
github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.6.2/go.mod h1:GzJ9Fze7pxMh9r8wIjFWWDpR7LidenXT5/xEAlZjBkQ=
github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.2 h1:YWAxOgkdNG0+K25He+mU3QnxoB7HAGoqDOSLkIA4Ix8=
@@ -1292,12 +1292,12 @@ github.com/aws/aws-sdk-go-v2/service/appstream v1.41.2 h1:gNGJ/+acSa5t10VkXTi0FK
github.com/aws/aws-sdk-go-v2/service/appstream v1.41.2/go.mod h1:zjq724ntnP8ame8ZzDW0/yca9YPb4CeENOS4hSH/t0Y=
github.com/aws/aws-sdk-go-v2/service/appsync v1.38.2 h1:ygiw0umAkC+Gdzcs77aaLtjq4UUJOW6lIu7eK8vpaxM=
github.com/aws/aws-sdk-go-v2/service/appsync v1.38.2/go.mod h1:L7JKjMdMuWIfvOLPkN0dGNSLbKrcey+XATTHeB+dCJM=
-github.com/aws/aws-sdk-go-v2/service/athena v1.47.2 h1:y8ela03RAsDRd4ajx/M2l/aZQAjwz763LWvuvltxXak=
-github.com/aws/aws-sdk-go-v2/service/athena v1.47.2/go.mod h1:bmGCoIiNCRnfKa6T64nCTKrWOtw362tPUKDpq/fjMDU=
+github.com/aws/aws-sdk-go-v2/service/athena v1.48.0 h1:oGuR6wuok/T96ISXwQZ64jA83g0qw+poXrDqElx8jk0=
+github.com/aws/aws-sdk-go-v2/service/athena v1.48.0/go.mod h1:bmGCoIiNCRnfKa6T64nCTKrWOtw362tPUKDpq/fjMDU=
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.2 h1:n6IT2Q6DJg+540tWwIBnJHMrO3Vl5nu+HafGNNo077c=
github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.2/go.mod h1:IZovD0WWpMx5oFy87RwgPPQcnMCQsiFHir7C9SCV50E=
-github.com/aws/aws-sdk-go-v2/service/autoscaling v1.45.2 h1:NurelK9YO5OB0HlIUj1ycEZJIFNvkuG5iJjo7/r6AJ4=
-github.com/aws/aws-sdk-go-v2/service/autoscaling v1.45.2/go.mod h1:YmWinWbpoVdOgnBZQFeZJ2l4kT97lvnRlTvX2zyyBfc=
+github.com/aws/aws-sdk-go-v2/service/autoscaling v1.46.0 h1:HQ0OvPxqTh2mYKRx4BappkCeLBU+E6oWAKSJ5JpP03c=
+github.com/aws/aws-sdk-go-v2/service/autoscaling v1.46.0/go.mod h1:YmWinWbpoVdOgnBZQFeZJ2l4kT97lvnRlTvX2zyyBfc=
github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.2 h1:adYgaCwIbN816Nxyjhfh4P+YkbgoWX5u/+195qOeDH8=
github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.2/go.mod h1:FJIWPT79C+J0TC0svBOcVZi3agyv/t8ej+nZekrTItU=
github.com/aws/aws-sdk-go-v2/service/backup v1.39.3 h1:mjYDN7CPl0CHrTBe36EKqAAGGXAKy8MXuNF+2qHkVdM=
@@ -1306,10 +1306,10 @@ github.com/aws/aws-sdk-go-v2/service/batch v1.46.2 h1:QS0NsLcQjsigdaswnWN/xlqZuC
github.com/aws/aws-sdk-go-v2/service/batch v1.46.2/go.mod h1:cAqXVRS4uwp/DsssDOY+Gi2wiDoQ4xgRWaPAX/mJbi8=
github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.2 h1:phRK57EADWnti25vt4PoNtsOgD/ZH5ojlm5Netstokk=
github.com/aws/aws-sdk-go-v2/service/bcmdataexports v1.7.2/go.mod h1:l/bYZQeSpoxKlYA8gEcQQDqkec+MId5k1g3r/EXpYdg=
-github.com/aws/aws-sdk-go-v2/service/bedrock v1.20.2 h1:5lZExZBtvE/iWK387JSMbfLWnVSiGCUB4nZdc413RCs=
-github.com/aws/aws-sdk-go-v2/service/bedrock v1.20.2/go.mod h1:o0EnsM4cr3V+xf+dQw3TzeqOSYkxxq7VgGnDsgyjgBw=
-github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.23.2 h1:xy4po1FFPotL07BNMDNDrgivQB9rxi6/rV2+Q4qQQ5M=
-github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.23.2/go.mod h1:gYKKDvLQt8S5EdovDwxZBDTVWa4aC86GixDtsmxcZqM=
+github.com/aws/aws-sdk-go-v2/service/bedrock v1.21.0 h1:STFP+23Q1vXMnauv3OWu5vLenuzWPKYeTC1JUHolW8U=
+github.com/aws/aws-sdk-go-v2/service/bedrock v1.21.0/go.mod h1:o0EnsM4cr3V+xf+dQw3TzeqOSYkxxq7VgGnDsgyjgBw=
+github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.24.0 h1:NbiMdHggevTwK+YY/4gpPEgt60z7dfdPpznhUR1qi1c=
+github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.24.0/go.mod h1:gYKKDvLQt8S5EdovDwxZBDTVWa4aC86GixDtsmxcZqM=
github.com/aws/aws-sdk-go-v2/service/budgets v1.28.2 h1:bHYXDkOhPR44ewGRD+7jU6zAvgqAJfNWQ5tsMp4C+UE=
github.com/aws/aws-sdk-go-v2/service/budgets v1.28.2/go.mod h1:VS+/KtauBBdzOBHe4v7LjF0lHb4l5f+/Bwlq6aG/LJ0=
github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.2 h1:/q5MHgjvnVjFwXS+DVhfvk8HS9B+TlwcywoDD0+HiyA=
@@ -1378,8 +1378,8 @@ github.com/aws/aws-sdk-go-v2/service/connect v1.113.2 h1:h45hg2xWdzhr+eFn7aqfg26
github.com/aws/aws-sdk-go-v2/service/connect v1.113.2/go.mod h1:Cr/NBm+YdRHJg0uHNTIDEF++8IQL207oUsjhTAyS4zE=
github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.2 h1:BtBIsvj3F0LrsDoLPSZO9qanyXYoDFmXCNJ3I+X80XI=
github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.2/go.mod h1:ZrU0ZA81zcKXOUnC8rvjYddEFB3pl7t9tYCdtIRFAb4=
-github.com/aws/aws-sdk-go-v2/service/controltower v1.18.2 h1:IZi4ivxDbOAfCZvEeNhvYwrBANiYF9RE35yczZb4f0Y=
-github.com/aws/aws-sdk-go-v2/service/controltower v1.18.2/go.mod h1:15mOn+tmGhx9+TidoQaa8gSBItjFx/A5XT9GV1L+LPc=
+github.com/aws/aws-sdk-go-v2/service/controltower v1.18.3 h1:v4aBi2Jw4vGmLv58u5YZduJbbErX8a0ML1+RRWI7Sko=
+github.com/aws/aws-sdk-go-v2/service/controltower v1.18.3/go.mod h1:15mOn+tmGhx9+TidoQaa8gSBItjFx/A5XT9GV1L+LPc=
github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.2 h1:i7yTib7O8olbSmTyW2c5C2asN6GUfMI2RLmdKsc/3e4=
github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.2/go.mod h1:2Ux5wul+bF0/JIAATf1cv3PWJatZqi/dFt7bRSeYEcU=
github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.2 h1:Tg7kuCaHMCFOW+HhK/maIH7qtkeDbzahqQOUO9c+/L8=
@@ -1388,18 +1388,18 @@ github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.10.2 h1:3MtTruznyGml
github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.10.2/go.mod h1:khyqDEa/5mT22FwodCCtZN4n+9C62VXwqNiPeAkqYlY=
github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.42.2 h1:dHQXIHPlijJIBUubNpShhIUooNDUKB/B8nJ6OSsJfmQ=
github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.42.2/go.mod h1:n9F5nRLYyqBz1khsBptXyceq6ZJG9xqzl2pIyVqYq/8=
-github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.43.0 h1:jb9QBxC7Xh0cSpprVOtzJtlyVbJrnLs0oAplby2sZ78=
-github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.43.0/go.mod h1:+JQlP0jMyl8iWGcUcGzTf+qculjIY+08UN7RKiljmps=
+github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.0 h1:u/zESCIEwz9UoEHFZgITa097TkQZWyrqR5bNHZn/Ozw=
+github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.0/go.mod h1:+JQlP0jMyl8iWGcUcGzTf+qculjIY+08UN7RKiljmps=
github.com/aws/aws-sdk-go-v2/service/databrew v1.33.2 h1:M18nqFfXtAgxfGoUaaeJS7x8vfZum5SeGq1+5Iu0DLQ=
github.com/aws/aws-sdk-go-v2/service/databrew v1.33.2/go.mod h1:CVFxoBbEUNT6MbNBrDAv2rAZJSuYYLUssU9pyXVQbEc=
-github.com/aws/aws-sdk-go-v2/service/dataexchange v1.32.2 h1:Xm45iokXdZeq+gSsl7P3ZLzPnHIAUWdH2RLOEYt342Y=
-github.com/aws/aws-sdk-go-v2/service/dataexchange v1.32.2/go.mod h1:s7mEeIfGsxtBz5vAt/0N+cTHrO+jktEyJMuRxhaLQG8=
+github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.0 h1:k6mEvId7/e7VFQHDYERVSIINa/b+9rTs8kASzsS5aQ0=
+github.com/aws/aws-sdk-go-v2/service/dataexchange v1.33.0/go.mod h1:s7mEeIfGsxtBz5vAt/0N+cTHrO+jktEyJMuRxhaLQG8=
github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.2 h1:RyuqjcKTFUrAcOrORvZTc7OrqO280S8CKBHjNuSQWHY=
github.com/aws/aws-sdk-go-v2/service/datapipeline v1.25.2/go.mod h1:s5RnNkqKX4CuWw48LUh0l18kxmcY1ft7Vz1uZOogxmk=
github.com/aws/aws-sdk-go-v2/service/datasync v1.42.2 h1:mNOyYZFjd3CakcvYIVCmqXFZ0pZJSGobtDx5UciBLOc=
github.com/aws/aws-sdk-go-v2/service/datasync v1.42.2/go.mod h1:qWAvIKfkNqX/IN0sXwOiq73zzSCW/Ar96mHbfY/5D9c=
-github.com/aws/aws-sdk-go-v2/service/datazone v1.22.2 h1:d/oy2uO4xd8CdUvpPBtdMcyicNvmjcv1FMR2uz8GeAQ=
-github.com/aws/aws-sdk-go-v2/service/datazone v1.22.2/go.mod h1:vP3xFM0eQ1QJiEyoLeMQQZFPyVDyAiz8oZT6Oyktc44=
+github.com/aws/aws-sdk-go-v2/service/datazone v1.23.0 h1:vPcABuqO6byiCK1ziiuqRGhwJIZ5olcLIVqdfsVjnLc=
+github.com/aws/aws-sdk-go-v2/service/datazone v1.23.0/go.mod h1:vP3xFM0eQ1QJiEyoLeMQQZFPyVDyAiz8oZT6Oyktc44=
github.com/aws/aws-sdk-go-v2/service/dax v1.23.2 h1:sa4Tc0fyVoQ4TYTpYEts24eme3A/gJ8JtJ8ivPnmZfU=
github.com/aws/aws-sdk-go-v2/service/dax v1.23.2/go.mod h1:I0tRaWbXqL20SQYLpkj/SMfF7DWn2uixcWh6wgxPmIA=
github.com/aws/aws-sdk-go-v2/service/detective v1.31.2 h1:YNJKvWXuq2bSP7gGiiUAFovKsIfRroQ+hrH7jAUN0IE=
@@ -1422,18 +1422,18 @@ github.com/aws/aws-sdk-go-v2/service/drs v1.30.2 h1:x3Npo3YynC7zY+2NBo7BGpyJ2FQ6
github.com/aws/aws-sdk-go-v2/service/drs v1.30.2/go.mod h1:J+ZP4mpSfSaWNFekoJULiHE2yZBzjYRMtWSlQhjZUQY=
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.36.2 h1:kJqyYcGqhWFmXqjRrtFFD4Oc9FXiskhsll2xnlpe8Do=
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.36.2/go.mod h1:+t2Zc5VNOzhaWzpGE+cEYZADsgAAQT5v55AO+fhU+2s=
-github.com/aws/aws-sdk-go-v2/service/ec2 v1.182.0 h1:LaeziEhHZ/SJZYBK223QVzl3ucHvA9IP4tQMcxGrc9I=
-github.com/aws/aws-sdk-go-v2/service/ec2 v1.182.0/go.mod h1:kYXaB4FzyhEJjvrJ84oPnMElLiEAjGxxUunVW2tBSng=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.184.0 h1:SZnuDlml1uFv5ojh+QTxS+Yru89Hr3QYIUwWoY71frI=
+github.com/aws/aws-sdk-go-v2/service/ec2 v1.184.0/go.mod h1:kYXaB4FzyhEJjvrJ84oPnMElLiEAjGxxUunVW2tBSng=
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2 h1:VDQaVwGOokbd3VUbHF+wupiffdrbAZPdQnr5XZMJqrs=
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2/go.mod h1:lvUlMghKYmSxSfv0vU7pdU/8jSY+s0zpG8xXhaGKCw0=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2 h1:Zru9Iy2JPM5+uRnFnoqeOZzi8JIVIHJ0ua6JdeDHcyg=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2/go.mod h1:PtQC3XjutCYFCn1+i8+wtpDaXvEK+vXF2gyLIKAmh4A=
-github.com/aws/aws-sdk-go-v2/service/ecs v1.47.3 h1:4eCmSyAxsmZ1i8Bf3YoXX0XXx4hN1G4Y+ujCY4/VYHE=
-github.com/aws/aws-sdk-go-v2/service/ecs v1.47.3/go.mod h1:sMFLFhL27cKYa/eQYZp4asvIwHsnJWrAzTUpy9AQdnU=
+github.com/aws/aws-sdk-go-v2/service/ecs v1.47.4 h1:CTkPGE8fiElvLtYWl/U+Eu5+1fVXiZbJUjyVCRSRgxk=
+github.com/aws/aws-sdk-go-v2/service/ecs v1.47.4/go.mod h1:sMFLFhL27cKYa/eQYZp4asvIwHsnJWrAzTUpy9AQdnU=
github.com/aws/aws-sdk-go-v2/service/efs v1.33.2 h1:ePgaKeaN4kXAqzxvDsSilIIq+jftioJb4KXRobIM6ko=
github.com/aws/aws-sdk-go-v2/service/efs v1.33.2/go.mod h1:ZEnNWIxtJp/3H1pPE+IZE4exGTJkAdoGfpM5m5/evxo=
-github.com/aws/aws-sdk-go-v2/service/eks v1.50.2 h1:vL3RqZ4x6uqpKswp5gB0KyGcsrgkUdKmLTXCDHDUUZw=
-github.com/aws/aws-sdk-go-v2/service/eks v1.50.2/go.mod h1:oaPCqTzAe8C5RQZJGRD4RENcV7A4n99uGxbD4rULbNg=
+github.com/aws/aws-sdk-go-v2/service/eks v1.51.0 h1:BYyB+byjQ7oyupe3v+YjTp1yfmfNEwChYA2naCc85xI=
+github.com/aws/aws-sdk-go-v2/service/eks v1.51.0/go.mod h1:oaPCqTzAe8C5RQZJGRD4RENcV7A4n99uGxbD4rULbNg=
github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.0 h1:rebYexCOCdOpR1zU1ObUIn+or4pS38W1IVQGKzZcSos=
github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.0/go.mod h1:pfx/wDobZvEpxE96P1i0nHbTYEJMCCMv3uMk7UPvdsE=
github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.2 h1:La4LqsDHSMdCKoYzKs5b20wSYHfvc6xFBb8OAPDFuGg=
@@ -1462,8 +1462,8 @@ github.com/aws/aws-sdk-go-v2/service/firehose v1.34.2 h1:9uMAwYszi6P6FTbUVq1X6MM
github.com/aws/aws-sdk-go-v2/service/firehose v1.34.2/go.mod h1:yGI4W+5bau/K+JNUGepk4lwqLPt77Le6bLL8XrmKAMY=
github.com/aws/aws-sdk-go-v2/service/fis v1.30.2 h1:qw7ZkSCy0akQJbJdIgRQaqXEHe7PrA3DHvE4VvemFJw=
github.com/aws/aws-sdk-go-v2/service/fis v1.30.2/go.mod h1:CArS66NFuL1fBiSLVfWZV6oQjicsdViLm7Ic9Lte7x4=
-github.com/aws/aws-sdk-go-v2/service/fms v1.37.2 h1:TwT5oa4EUI2O97pPSzLQmJH/4R1aqV+ucnMatvksjXE=
-github.com/aws/aws-sdk-go-v2/service/fms v1.37.2/go.mod h1:sWvDxD23qcn9nbwvVfCmXOQx2HufC9n76agqoio9pfg=
+github.com/aws/aws-sdk-go-v2/service/fms v1.38.0 h1:GcVv0jgW1fXkNkDFYVQTfpkYB+J4UBXXQ69Epx8MzyE=
+github.com/aws/aws-sdk-go-v2/service/fms v1.38.0/go.mod h1:sWvDxD23qcn9nbwvVfCmXOQx2HufC9n76agqoio9pfg=
github.com/aws/aws-sdk-go-v2/service/fsx v1.49.2 h1:Wc2N860CGBc3GJTqfucK7IvQCtGECZXOrHACyFth3sI=
github.com/aws/aws-sdk-go-v2/service/fsx v1.49.2/go.mod h1:sk7ZHm49x4rJzJAfeo1dl43sCL26lZx5/Yx2b2VUJkU=
github.com/aws/aws-sdk-go-v2/service/gamelift v1.36.2 h1:YN63wWC/rOHKr2sKdCQ7d8GA1xkWpiAqxDeZEBRxvqg=
@@ -1488,6 +1488,8 @@ github.com/aws/aws-sdk-go-v2/service/iam v1.37.2 h1:E7vCDUFeDN8uOk8Nb2d4E1howWS1
github.com/aws/aws-sdk-go-v2/service/iam v1.37.2/go.mod h1:QzMecFrIFYJ1cyxjlUoIFRzYSDX19gdqYUd0Tyws2J8=
github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.2 h1:QSrf6HsounqUtlFAwArhVNHPt3WXmSm0pz7RtojjBdo=
github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.2/go.mod h1:PtkL4CXOQy84zudggyFtyJFXCGDRY8igg9Nfo9df1sU=
+github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.0 h1:+gsGZbypyP+atqTDsrtaKe26TgrONg3z6rLTm5RmIhg=
+github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.0/go.mod h1:hqe5ZWGAMgZC14I2GrXc+tUPpucDfGb94RB/7IOdQ/o=
github.com/aws/aws-sdk-go-v2/service/inspector v1.25.2 h1:xiQ70pTvXs9PFYmewDgeICVxRpiQP+cWQZmunV5uYKk=
github.com/aws/aws-sdk-go-v2/service/inspector v1.25.2/go.mod h1:sDcAla3dh7DO6AAdh+29e+rowLaIcw2fxuwNFCIlBuA=
github.com/aws/aws-sdk-go-v2/service/inspector2 v1.32.2 h1:D0nDW7y3KLPGShqF7gaKFRswY8ekG8jsfN4r3CWqAjQ=
@@ -1550,8 +1552,8 @@ github.com/aws/aws-sdk-go-v2/service/location v1.42.2 h1:QeEPlMSVn/GtUGVz/G9FBFV
github.com/aws/aws-sdk-go-v2/service/location v1.42.2/go.mod h1:nCDXuPUnJLC/PvDh6iXjM/4LIUak0MTzXamdVn9Typk=
github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.2 h1:xq/m847nPu/qjcGWfT5AMmLfmb0Z8RzYmsiPQCnqWRg=
github.com/aws/aws-sdk-go-v2/service/lookoutmetrics v1.31.2/go.mod h1:sWTm2Cszymy7WYqCuLvw/Zvzy1t08ceZP6Brpo7COY0=
-github.com/aws/aws-sdk-go-v2/service/m2 v1.17.2 h1:2U0/1YSsugrRPnSa9WSPQqBEt5/8ZuTPwYhSFjndIzY=
-github.com/aws/aws-sdk-go-v2/service/m2 v1.17.2/go.mod h1:HWB51wlVsdbT1BrpH4BYrgpxhc012ja8je2TTwjzr/0=
+github.com/aws/aws-sdk-go-v2/service/m2 v1.18.0 h1:4yncbqHQ5TmL+AElqjSIppgEvCiNgboMDk0FcQ5qSW8=
+github.com/aws/aws-sdk-go-v2/service/m2 v1.18.0/go.mod h1:HWB51wlVsdbT1BrpH4BYrgpxhc012ja8je2TTwjzr/0=
github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.2 h1:MbR0vRNd7am1So5hcYho+N11dxzhZbB4qdsi+cmcBp0=
github.com/aws/aws-sdk-go-v2/service/macie2 v1.43.2/go.mod h1:B2FFzz9qQQ8l3MZV/MjMi4ua9VbqcQK8Huuv6066RZ8=
github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.35.2 h1:AibWQdB6x5CTlJ11/C0wp+fAUUKmCFLwU5H4h9kov0c=
@@ -1604,10 +1606,10 @@ github.com/aws/aws-sdk-go-v2/service/pcs v1.2.2 h1:UGa4l3NHvmTWb+tbaNrpqYt0jHgiQ
github.com/aws/aws-sdk-go-v2/service/pcs v1.2.2/go.mod h1:IisjjF5pkMDOaPgMt3XtIp4ovE0eIghP6Xt4UjZOejs=
github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.2 h1:2M25NsmsuIgFd4JLfcrgOhaikgJ77QghJitjCJM2fRM=
github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.2/go.mod h1:MXITGxBf1myinMhDcLjx/8dskl5uwwOkjQuSk97mBe0=
-github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.15.2 h1:2c/NwrSaSvoMIUeNIaFlF7OODfzAt/Pfm73ytyRkKUk=
-github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.15.2/go.mod h1:jndiYCP1PdoEayQPElKL+m9Rg6sG+TElnL04eNBPZa4=
-github.com/aws/aws-sdk-go-v2/service/pipes v1.17.2 h1:M6llQCYVeHTlLBK45YcwXpmQptmI/at47l3QXnGY6rU=
-github.com/aws/aws-sdk-go-v2/service/pipes v1.17.2/go.mod h1:XtWK2mf8LxoRhiuidG/bsHd/kOGUijNkS2MKu5Yz2ZY=
+github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.16.0 h1:oqt4D9ke97Mry5q6RWxRavlq+Z/mppBUGunongcrP5I=
+github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.16.0/go.mod h1:jndiYCP1PdoEayQPElKL+m9Rg6sG+TElnL04eNBPZa4=
+github.com/aws/aws-sdk-go-v2/service/pipes v1.18.0 h1:G6JDBcdwWA+c4pUrf1L6N7qx+l7nDhQyEHpwjxrj5vI=
+github.com/aws/aws-sdk-go-v2/service/pipes v1.18.0/go.mod h1:XtWK2mf8LxoRhiuidG/bsHd/kOGUijNkS2MKu5Yz2ZY=
github.com/aws/aws-sdk-go-v2/service/polly v1.45.2 h1:8SxFBXQz6ugH4+/91nQlYMHGpH4pdFDSOin+oQnMvJ8=
github.com/aws/aws-sdk-go-v2/service/polly v1.45.2/go.mod h1:PAg+2IgPApH1b/uKkuf30SV6JTzew21vz0ztIFFas/M=
github.com/aws/aws-sdk-go-v2/service/pricing v1.32.2 h1:eBKzA9Te6JHD1TfVjuja7pa8iEdXVzW5z0QPcbrPhNs=
@@ -1616,14 +1618,14 @@ github.com/aws/aws-sdk-go-v2/service/qbusiness v1.14.0 h1:o+1+kyTMk1Wxiegc6tFGhY
github.com/aws/aws-sdk-go-v2/service/qbusiness v1.14.0/go.mod h1:O4hOPHq3wkF16n15JtVWRfHV9FgR9cWVK+ZEiVrZQt4=
github.com/aws/aws-sdk-go-v2/service/qldb v1.25.2 h1:4JPtMnMSUvNI0WmbmS6z3PrnFaYMivMOM61RaXlqFs4=
github.com/aws/aws-sdk-go-v2/service/qldb v1.25.2/go.mod h1:LmPnnHoe1VWC1pnVVBP2IMJ2i/Fc70C9yamwgmwOyA4=
-github.com/aws/aws-sdk-go-v2/service/quicksight v1.76.2 h1:kne8Igc11d2/rTfrjDql4Eg5CAl/EC2VXbagPgeEqHQ=
-github.com/aws/aws-sdk-go-v2/service/quicksight v1.76.2/go.mod h1:q9eOAAmLIZKHy+3ONua6b/WW2HwdtyVb8gUSBbh8Ejs=
+github.com/aws/aws-sdk-go-v2/service/quicksight v1.77.0 h1:rduomqww7uQsAZhwOQeKbjSk37v7gvuBLcGytuhFT6Q=
+github.com/aws/aws-sdk-go-v2/service/quicksight v1.77.0/go.mod h1:q9eOAAmLIZKHy+3ONua6b/WW2HwdtyVb8gUSBbh8Ejs=
github.com/aws/aws-sdk-go-v2/service/ram v1.29.2 h1:MzE8+xBV5omQ8aP7I2XarPS1bORO3tHpJcyCkMQQa+8=
github.com/aws/aws-sdk-go-v2/service/ram v1.29.2/go.mod h1:/rvsX6270oRGq4zBWQlFAenU4144KSJcaOFrDffHsjk=
github.com/aws/aws-sdk-go-v2/service/rbin v1.20.2 h1:U+BnnWf3/yxyTQO5GBXkFO9S2lxJwtEcHskMSNIqqE0=
github.com/aws/aws-sdk-go-v2/service/rbin v1.20.2/go.mod h1:B7r89tuqcg/tnDE5rtukNU1irjRhC+S10GjEFIFAj1M=
-github.com/aws/aws-sdk-go-v2/service/rds v1.87.2 h1:EUBCpvWYJRDV+baakcOlytZsEnjq21dBBw+di4q5TUE=
-github.com/aws/aws-sdk-go-v2/service/rds v1.87.2/go.mod h1:KziDa/w2AVz3dfANxwuBV0XqoQjxTKbVQyLNH5BRvO4=
+github.com/aws/aws-sdk-go-v2/service/rds v1.88.0 h1:QdpwmIB0ZZN/devOnw+dJSF2VFnmn3LM5kuEKQ0kpj0=
+github.com/aws/aws-sdk-go-v2/service/rds v1.88.0/go.mod h1:KziDa/w2AVz3dfANxwuBV0XqoQjxTKbVQyLNH5BRvO4=
github.com/aws/aws-sdk-go-v2/service/redshift v1.50.0 h1:AT056ID/JR3pCAhwpak11ATQ6wRtaQpFqoJYjoEG7aM=
github.com/aws/aws-sdk-go-v2/service/redshift v1.50.0/go.mod h1:LuUSvbRK6lNleFaeXOm3gJxnnau2qoZd1wPU7DwjS4w=
github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.30.2 h1:nghfgMfAqF3xl783g5Ig0UZafPMNAHm+Bx8G2l63aEg=
@@ -1656,8 +1658,8 @@ github.com/aws/aws-sdk-go-v2/service/route53resolver v1.33.0 h1:CBZvorZuZJOtHRnM
github.com/aws/aws-sdk-go-v2/service/route53resolver v1.33.0/go.mod h1:hw1tbJqbXUc5KzxQjgMhxQ7jrvlJHEnnvpBbrpECoy4=
github.com/aws/aws-sdk-go-v2/service/rum v1.21.2 h1:/Pkl6B1xo1Q+/O31/M6+jIu/8DxyNR4R/7BUbTrpG5M=
github.com/aws/aws-sdk-go-v2/service/rum v1.21.2/go.mod h1:TdJqY9exgK2kZ9ltoAubxiJ+a+mfF4qLYXsQaI1JkUI=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.65.3 h1:xxHGZ+wUgZNACQmxtdvP5tgzfsxGS3vPpTP5Hy3iToE=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.65.3/go.mod h1:cB6oAuus7YXRZhWCc1wIwPywwZ1XwweNp2TVAEGYeB8=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0 h1:xA6XhTF7PE89BCNHJbQi8VvPzcgMtmGC5dr8S8N7lHk=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.66.0/go.mod h1:cB6oAuus7YXRZhWCc1wIwPywwZ1XwweNp2TVAEGYeB8=
github.com/aws/aws-sdk-go-v2/service/s3control v1.49.2 h1:W1nwi6M/LfTRO8bPw9wlKJ1tDy1tIT4fytBsHXpIRIw=
github.com/aws/aws-sdk-go-v2/service/s3control v1.49.2/go.mod h1:+EAvXfnipjpvEfaKWS98sgU7KgzEuH4/qxJIeEG+GTY=
github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.2 h1:n5Pq/tEiZFuk6Ylju7zyWjA6tlgOvpBVx7h3KJtMC5k=
@@ -1738,8 +1740,8 @@ github.com/aws/aws-sdk-go-v2/service/waf v1.25.2 h1:mGMfHPEXIR1G2mRJ5BGQnksDTt7J
github.com/aws/aws-sdk-go-v2/service/waf v1.25.2/go.mod h1:g7m/OfmrD3MK7JHjJ/NBxMy87Mffp1KhNhQIKskMp2U=
github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.2 h1:PMBOZsPm34AE5+0FUkBD94hoEdAsRiVNO+V1NcVstWk=
github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.2/go.mod h1:Zw9xd/Zg0wMX3V57Pi/KAiQdqXg9ikfdEd0IK83v9B0=
-github.com/aws/aws-sdk-go-v2/service/wafv2 v1.54.2 h1:SXwBXwm13cbQKjV3nt7Fkkxs/blH3lrbV9aKdjT+Zmk=
-github.com/aws/aws-sdk-go-v2/service/wafv2 v1.54.2/go.mod h1:0omlXhQY21zKfGkdIfufpV7kLt564XtjQcywixaNXrM=
+github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.0 h1:sS3SDk8EugdW+KW56VR6qcEg8JpC8pNLVICVBr8mMb4=
+github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.0/go.mod h1:0omlXhQY21zKfGkdIfufpV7kLt564XtjQcywixaNXrM=
github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.2 h1:uhOu5pbceq96a/0nWtf/2Drt/M9hh94ic5d4LaEdFzE=
github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.2/go.mod h1:VJNJ9aES48jXBIc74SZnP0KmQr6Fku2eYHSV8854qpc=
github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 h1:VN3Qydtdl3UlJRHVxQxSP1d8I5gtvT5zdaCCAfZST7Y=
@@ -2178,8 +2180,8 @@ github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1 h1:gm5b1kHgFFhaK
github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1/go.mod h1:MsjL1sQ9L7wGwzJ5RjcI6FzEMdyoBnw+XK8ZnOvQOLY=
github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 h1:v3DapR8gsp3EM8fKMh6up9cJUFQ2iRaFsYLP8UJnCco=
github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0/go.mod h1:c3PnGE9pHBDfdEVG9t1S1C9ia5LW+gkFR0CygXlM8ak=
-github.com/hashicorp/terraform-plugin-framework-validators v0.13.0 h1:bxZfGo9DIUoLLtHMElsu+zwqI4IsMZQBRRy4iLzZJ8E=
-github.com/hashicorp/terraform-plugin-framework-validators v0.13.0/go.mod h1:wGeI02gEhj9nPANU62F2jCaHjXulejm/X+af4PdZaNo=
+github.com/hashicorp/terraform-plugin-framework-validators v0.14.0 h1:3PCn9iyzdVOgHYOBmncpSSOxjQhCTYmc+PGvbdlqSaI=
+github.com/hashicorp/terraform-plugin-framework-validators v0.14.0/go.mod h1:LwDKNdzxrDY/mHBrlC6aYfE2fQ3Dk3gaJD64vNiXvo4=
github.com/hashicorp/terraform-plugin-go v0.22.0/go.mod h1:mPULV91VKss7sik6KFEcEu7HuTogMLLO/EvWCuFkRVE=
github.com/hashicorp/terraform-plugin-go v0.24.0 h1:2WpHhginCdVhFIrWHxDEg6RBn3YaWzR2o6qUeIEat2U=
github.com/hashicorp/terraform-plugin-go v0.24.0/go.mod h1:tUQ53lAsOyYSckFGEefGC5C8BAaO0ENqzFd3bQeuYQg=
diff --git a/provider/resources.go b/provider/resources.go
index 1d855c10d73..97294358855 100644
--- a/provider/resources.go
+++ b/provider/resources.go
@@ -202,6 +202,7 @@ const (
qldbMod = "Qldb" // QLDB
quicksightMod = "Quicksight" // Quicksight
ramMod = "Ram" // Resource Access Manager
+ resilienceHubMod = "ResilienceHub" // Resilience Hub
rbinMod = "Rbin" // Recycle Bin
rdsMod = "Rds" // Relational Database Service (RDS)
rekognitionMod = "Rekognition" // Amazon Rekognition"
@@ -433,6 +434,7 @@ var moduleMap = map[string]string{
"redshiftdata": redshiftDataMod,
"redshiftserverless": redshiftServerlessMod,
"rekognition": rekognitionMod,
+ "resiliencehub": resilienceHubMod,
"resourcegroups": resourcegroupsMod,
"resourcegroupstaggingapi": resourcegroupsTaggingApiMod,
"rolesanywhere": rolesAnywhereMod,
@@ -5865,7 +5867,9 @@ func setupComputedIDs(prov *tfbridge.ProviderInfo) {
prov.Resources["aws_iam_user_policies_exclusive"].ComputeID = func(ctx context.Context, state resource.PropertyMap) (resource.ID, error) {
return attr(state, "userName"), nil
}
- prov.Resources["aws_backup_restore_testing_plan"].ComputeID = func(ctx context.Context, state resource.PropertyMap) (resource.ID, error) {
+ prov.Resources["aws_backup_restore_testing_plan"].ComputeID = func(
+ ctx context.Context, state resource.PropertyMap,
+ ) (resource.ID, error) {
return attr(state, "name"), nil
}
prov.Resources["aws_backup_restore_testing_selection"].ComputeID = func(
@@ -5890,4 +5894,9 @@ func setupComputedIDs(prov *tfbridge.ProviderInfo) {
) (resource.ID, error) {
return attrWithSeparator(state, "userName"), nil
}
+ prov.Resources["aws_resiliencehub_resiliency_policy"].ComputeID = func(
+ ctx context.Context, state resource.PropertyMap,
+ ) (resource.ID, error) {
+ return attrWithSeparator(state, "arn"), nil
+ }
}
diff --git a/sdk/dotnet/Alb/GetLoadBalancer.cs b/sdk/dotnet/Alb/GetLoadBalancer.cs
index fa3b5c182b2..469dd2ef92a 100644
--- a/sdk/dotnet/Alb/GetLoadBalancer.cs
+++ b/sdk/dotnet/Alb/GetLoadBalancer.cs
@@ -169,6 +169,7 @@ public sealed class GetLoadBalancerResult
public readonly bool EnableTlsVersionAndCipherSuiteHeaders;
public readonly bool EnableWafFailOpen;
public readonly bool EnableXffClientPort;
+ public readonly bool EnableZonalShift;
public readonly string EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic;
///
/// The provider-assigned unique ID for this managed resource.
@@ -222,6 +223,8 @@ private GetLoadBalancerResult(
bool enableXffClientPort,
+ bool enableZonalShift,
+
string enforceSecurityGroupInboundRulesOnPrivateLinkTraffic,
string id,
@@ -268,6 +271,7 @@ private GetLoadBalancerResult(
EnableTlsVersionAndCipherSuiteHeaders = enableTlsVersionAndCipherSuiteHeaders;
EnableWafFailOpen = enableWafFailOpen;
EnableXffClientPort = enableXffClientPort;
+ EnableZonalShift = enableZonalShift;
EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic = enforceSecurityGroupInboundRulesOnPrivateLinkTraffic;
Id = id;
IdleTimeout = idleTimeout;
diff --git a/sdk/dotnet/Alb/Listener.cs b/sdk/dotnet/Alb/Listener.cs
index dd62d0219ff..12cf6cab422 100644
--- a/sdk/dotnet/Alb/Listener.cs
+++ b/sdk/dotnet/Alb/Listener.cs
@@ -413,6 +413,12 @@ public partial class Listener : global::Pulumi.CustomResource
[Output("tagsAll")]
public Output> TagsAll { get; private set; } = null!;
+ ///
+ /// TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.
+ ///
+ [Output("tcpIdleTimeoutSeconds")]
+ public Output TcpIdleTimeoutSeconds { get; private set; } = null!;
+
///
/// Create a Listener resource with the given unique name, arguments, and options.
@@ -531,6 +537,12 @@ public InputMap Tags
set => _tags = value;
}
+ ///
+ /// TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.
+ ///
+ [Input("tcpIdleTimeoutSeconds")]
+ public Input? TcpIdleTimeoutSeconds { get; set; }
+
public ListenerArgs()
{
}
@@ -626,6 +638,12 @@ public InputMap TagsAll
set => _tagsAll = value;
}
+ ///
+ /// TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.
+ ///
+ [Input("tcpIdleTimeoutSeconds")]
+ public Input? TcpIdleTimeoutSeconds { get; set; }
+
public ListenerState()
{
}
diff --git a/sdk/dotnet/Alb/LoadBalancer.cs b/sdk/dotnet/Alb/LoadBalancer.cs
index a548cc7c264..93cbdbfbb5a 100644
--- a/sdk/dotnet/Alb/LoadBalancer.cs
+++ b/sdk/dotnet/Alb/LoadBalancer.cs
@@ -255,6 +255,12 @@ public partial class LoadBalancer : global::Pulumi.CustomResource
[Output("enableXffClientPort")]
public Output EnableXffClientPort { get; private set; } = null!;
+ ///
+ /// Whether zonal shift is enabled. Defaults to `false`.
+ ///
+ [Output("enableZonalShift")]
+ public Output EnableZonalShift { get; private set; } = null!;
+
///
/// Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.
///
@@ -476,6 +482,12 @@ public sealed class LoadBalancerArgs : global::Pulumi.ResourceArgs
[Input("enableXffClientPort")]
public Input? EnableXffClientPort { get; set; }
+ ///
+ /// Whether zonal shift is enabled. Defaults to `false`.
+ ///
+ [Input("enableZonalShift")]
+ public Input? EnableZonalShift { get; set; }
+
///
/// Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.
///
@@ -682,6 +694,12 @@ public sealed class LoadBalancerState : global::Pulumi.ResourceArgs
[Input("enableXffClientPort")]
public Input? EnableXffClientPort { get; set; }
+ ///
+ /// Whether zonal shift is enabled. Defaults to `false`.
+ ///
+ [Input("enableZonalShift")]
+ public Input? EnableZonalShift { get; set; }
+
///
/// Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.
///
diff --git a/sdk/dotnet/CodeDeploy/DeploymentConfig.cs b/sdk/dotnet/CodeDeploy/DeploymentConfig.cs
index e5737958e39..de38e5a95ba 100644
--- a/sdk/dotnet/CodeDeploy/DeploymentConfig.cs
+++ b/sdk/dotnet/CodeDeploy/DeploymentConfig.cs
@@ -181,6 +181,12 @@ public partial class DeploymentConfig : global::Pulumi.CustomResource
[Output("trafficRoutingConfig")]
public Output TrafficRoutingConfig { get; private set; } = null!;
+ ///
+ /// A zonal_config block. Zonal Config is documented below.
+ ///
+ [Output("zonalConfig")]
+ public Output ZonalConfig { get; private set; } = null!;
+
///
/// Create a DeploymentConfig resource with the given unique name, arguments, and options.
@@ -251,6 +257,12 @@ public sealed class DeploymentConfigArgs : global::Pulumi.ResourceArgs
[Input("trafficRoutingConfig")]
public Input? TrafficRoutingConfig { get; set; }
+ ///
+ /// A zonal_config block. Zonal Config is documented below.
+ ///
+ [Input("zonalConfig")]
+ public Input? ZonalConfig { get; set; }
+
public DeploymentConfigArgs()
{
}
@@ -295,6 +307,12 @@ public sealed class DeploymentConfigState : global::Pulumi.ResourceArgs
[Input("trafficRoutingConfig")]
public Input? TrafficRoutingConfig { get; set; }
+ ///
+ /// A zonal_config block. Zonal Config is documented below.
+ ///
+ [Input("zonalConfig")]
+ public Input? ZonalConfig { get; set; }
+
public DeploymentConfigState()
{
}
diff --git a/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigArgs.cs b/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigArgs.cs
new file mode 100644
index 00000000000..13b96d30beb
--- /dev/null
+++ b/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.CodeDeploy.Inputs
+{
+
+ public sealed class DeploymentConfigZonalConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The period of time, in seconds, that CodeDeploy must wait after completing a deployment to the first Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the second Availability Zone. If you don't specify a value for `first_zone_monitor_duration_in_seconds`, then CodeDeploy uses the `monitor_duration_in_seconds` value for the first Availability Zone.
+ ///
+ [Input("firstZoneMonitorDurationInSeconds")]
+ public Input? FirstZoneMonitorDurationInSeconds { get; set; }
+
+ ///
+ /// The number or percentage of instances that must remain available per Availability Zone during a deployment. If you don't specify a value under `minimum_healthy_hosts_per_zone`, then CodeDeploy uses a default value of 0 percent. This block is more documented below.
+ ///
+ [Input("minimumHealthyHostsPerZone")]
+ public Input? MinimumHealthyHostsPerZone { get; set; }
+
+ ///
+ /// The period of time, in seconds, that CodeDeploy must wait after completing a deployment to an Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the next Availability Zone. If you don't specify a `monitor_duration_in_seconds`, CodeDeploy starts deploying to the next Availability Zone immediately.
+ ///
+ [Input("monitorDurationInSeconds")]
+ public Input? MonitorDurationInSeconds { get; set; }
+
+ public DeploymentConfigZonalConfigArgs()
+ {
+ }
+ public static new DeploymentConfigZonalConfigArgs Empty => new DeploymentConfigZonalConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigGetArgs.cs b/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigGetArgs.cs
new file mode 100644
index 00000000000..21ec2f626ae
--- /dev/null
+++ b/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.CodeDeploy.Inputs
+{
+
+ public sealed class DeploymentConfigZonalConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The period of time, in seconds, that CodeDeploy must wait after completing a deployment to the first Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the second Availability Zone. If you don't specify a value for `first_zone_monitor_duration_in_seconds`, then CodeDeploy uses the `monitor_duration_in_seconds` value for the first Availability Zone.
+ ///
+ [Input("firstZoneMonitorDurationInSeconds")]
+ public Input? FirstZoneMonitorDurationInSeconds { get; set; }
+
+ ///
+ /// The number or percentage of instances that must remain available per Availability Zone during a deployment. If you don't specify a value under `minimum_healthy_hosts_per_zone`, then CodeDeploy uses a default value of 0 percent. This block is more documented below.
+ ///
+ [Input("minimumHealthyHostsPerZone")]
+ public Input? MinimumHealthyHostsPerZone { get; set; }
+
+ ///
+ /// The period of time, in seconds, that CodeDeploy must wait after completing a deployment to an Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the next Availability Zone. If you don't specify a `monitor_duration_in_seconds`, CodeDeploy starts deploying to the next Availability Zone immediately.
+ ///
+ [Input("monitorDurationInSeconds")]
+ public Input? MonitorDurationInSeconds { get; set; }
+
+ public DeploymentConfigZonalConfigGetArgs()
+ {
+ }
+ public static new DeploymentConfigZonalConfigGetArgs Empty => new DeploymentConfigZonalConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneArgs.cs b/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneArgs.cs
new file mode 100644
index 00000000000..7061c8d195a
--- /dev/null
+++ b/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.CodeDeploy.Inputs
+{
+
+ public sealed class DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The type can either be `FLEET_PERCENT` or `HOST_COUNT`.
+ ///
+ [Input("type")]
+ public Input? Type { get; set; }
+
+ ///
+ /// The value when the type is `FLEET_PERCENT` represents the minimum number of healthy instances as a percentage of the total number of instances in the Availability Zone during a deployment. If you specify FLEET_PERCENT, at the start of the deployment, AWS CodeDeploy converts the percentage to the equivalent number of instance and rounds up fractional instances. When the type is `HOST_COUNT`, the value represents the minimum number of healthy instances in the Availability Zone as an absolute value.
+ ///
+ [Input("value")]
+ public Input? Value { get; set; }
+
+ public DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneArgs()
+ {
+ }
+ public static new DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneArgs Empty => new DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneArgs();
+ }
+}
diff --git a/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneGetArgs.cs b/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneGetArgs.cs
new file mode 100644
index 00000000000..ec08417774d
--- /dev/null
+++ b/sdk/dotnet/CodeDeploy/Inputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.CodeDeploy.Inputs
+{
+
+ public sealed class DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The type can either be `FLEET_PERCENT` or `HOST_COUNT`.
+ ///
+ [Input("type")]
+ public Input? Type { get; set; }
+
+ ///
+ /// The value when the type is `FLEET_PERCENT` represents the minimum number of healthy instances as a percentage of the total number of instances in the Availability Zone during a deployment. If you specify FLEET_PERCENT, at the start of the deployment, AWS CodeDeploy converts the percentage to the equivalent number of instance and rounds up fractional instances. When the type is `HOST_COUNT`, the value represents the minimum number of healthy instances in the Availability Zone as an absolute value.
+ ///
+ [Input("value")]
+ public Input? Value { get; set; }
+
+ public DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneGetArgs()
+ {
+ }
+ public static new DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneGetArgs Empty => new DeploymentConfigZonalConfigMinimumHealthyHostsPerZoneGetArgs();
+ }
+}
diff --git a/sdk/dotnet/CodeDeploy/Outputs/DeploymentConfigZonalConfig.cs b/sdk/dotnet/CodeDeploy/Outputs/DeploymentConfigZonalConfig.cs
new file mode 100644
index 00000000000..372faf38efe
--- /dev/null
+++ b/sdk/dotnet/CodeDeploy/Outputs/DeploymentConfigZonalConfig.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.CodeDeploy.Outputs
+{
+
+ [OutputType]
+ public sealed class DeploymentConfigZonalConfig
+ {
+ ///
+ /// The period of time, in seconds, that CodeDeploy must wait after completing a deployment to the first Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the second Availability Zone. If you don't specify a value for `first_zone_monitor_duration_in_seconds`, then CodeDeploy uses the `monitor_duration_in_seconds` value for the first Availability Zone.
+ ///
+ public readonly int? FirstZoneMonitorDurationInSeconds;
+ ///
+ /// The number or percentage of instances that must remain available per Availability Zone during a deployment. If you don't specify a value under `minimum_healthy_hosts_per_zone`, then CodeDeploy uses a default value of 0 percent. This block is more documented below.
+ ///
+ public readonly Outputs.DeploymentConfigZonalConfigMinimumHealthyHostsPerZone? MinimumHealthyHostsPerZone;
+ ///
+ /// The period of time, in seconds, that CodeDeploy must wait after completing a deployment to an Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the next Availability Zone. If you don't specify a `monitor_duration_in_seconds`, CodeDeploy starts deploying to the next Availability Zone immediately.
+ ///
+ public readonly int? MonitorDurationInSeconds;
+
+ [OutputConstructor]
+ private DeploymentConfigZonalConfig(
+ int? firstZoneMonitorDurationInSeconds,
+
+ Outputs.DeploymentConfigZonalConfigMinimumHealthyHostsPerZone? minimumHealthyHostsPerZone,
+
+ int? monitorDurationInSeconds)
+ {
+ FirstZoneMonitorDurationInSeconds = firstZoneMonitorDurationInSeconds;
+ MinimumHealthyHostsPerZone = minimumHealthyHostsPerZone;
+ MonitorDurationInSeconds = monitorDurationInSeconds;
+ }
+ }
+}
diff --git a/sdk/dotnet/CodeDeploy/Outputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZone.cs b/sdk/dotnet/CodeDeploy/Outputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZone.cs
new file mode 100644
index 00000000000..1e0aa421e7e
--- /dev/null
+++ b/sdk/dotnet/CodeDeploy/Outputs/DeploymentConfigZonalConfigMinimumHealthyHostsPerZone.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.CodeDeploy.Outputs
+{
+
+ [OutputType]
+ public sealed class DeploymentConfigZonalConfigMinimumHealthyHostsPerZone
+ {
+ ///
+ /// The type can either be `FLEET_PERCENT` or `HOST_COUNT`.
+ ///
+ public readonly string? Type;
+ ///
+ /// The value when the type is `FLEET_PERCENT` represents the minimum number of healthy instances as a percentage of the total number of instances in the Availability Zone during a deployment. If you specify FLEET_PERCENT, at the start of the deployment, AWS CodeDeploy converts the percentage to the equivalent number of instance and rounds up fractional instances. When the type is `HOST_COUNT`, the value represents the minimum number of healthy instances in the Availability Zone as an absolute value.
+ ///
+ public readonly int? Value;
+
+ [OutputConstructor]
+ private DeploymentConfigZonalConfigMinimumHealthyHostsPerZone(
+ string? type,
+
+ int? value)
+ {
+ Type = type;
+ Value = value;
+ }
+ }
+}
diff --git a/sdk/dotnet/CostExplorer/Inputs/AnomalySubscriptionThresholdExpressionArgs.cs b/sdk/dotnet/CostExplorer/Inputs/AnomalySubscriptionThresholdExpressionArgs.cs
index 65e643e6daa..57517ae03b8 100644
--- a/sdk/dotnet/CostExplorer/Inputs/AnomalySubscriptionThresholdExpressionArgs.cs
+++ b/sdk/dotnet/CostExplorer/Inputs/AnomalySubscriptionThresholdExpressionArgs.cs
@@ -37,7 +37,7 @@ public InputList Ands
public Input? Dimension { get; set; }
///
- /// Return results that match both Dimension object.
+ /// Return results that do not match the Dimension object.
///
[Input("not")]
public Input? Not { get; set; }
@@ -46,7 +46,7 @@ public InputList Ands
private InputList? _ors;
///
- /// Return results that match both Dimension object.
+ /// Return results that match either Dimension object.
///
public InputList Ors
{
diff --git a/sdk/dotnet/CostExplorer/Inputs/AnomalySubscriptionThresholdExpressionGetArgs.cs b/sdk/dotnet/CostExplorer/Inputs/AnomalySubscriptionThresholdExpressionGetArgs.cs
index 58fbf863eec..25f3c1d2a92 100644
--- a/sdk/dotnet/CostExplorer/Inputs/AnomalySubscriptionThresholdExpressionGetArgs.cs
+++ b/sdk/dotnet/CostExplorer/Inputs/AnomalySubscriptionThresholdExpressionGetArgs.cs
@@ -37,7 +37,7 @@ public InputList Ands
public Input? Dimension { get; set; }
///
- /// Return results that match both Dimension object.
+ /// Return results that do not match the Dimension object.
///
[Input("not")]
public Input? Not { get; set; }
@@ -46,7 +46,7 @@ public InputList Ands
private InputList? _ors;
///
- /// Return results that match both Dimension object.
+ /// Return results that match either Dimension object.
///
public InputList Ors
{
diff --git a/sdk/dotnet/CostExplorer/Outputs/AnomalySubscriptionThresholdExpression.cs b/sdk/dotnet/CostExplorer/Outputs/AnomalySubscriptionThresholdExpression.cs
index 03e6da7e0c4..47e794aa5c1 100644
--- a/sdk/dotnet/CostExplorer/Outputs/AnomalySubscriptionThresholdExpression.cs
+++ b/sdk/dotnet/CostExplorer/Outputs/AnomalySubscriptionThresholdExpression.cs
@@ -26,11 +26,11 @@ public sealed class AnomalySubscriptionThresholdExpression
///
public readonly Outputs.AnomalySubscriptionThresholdExpressionDimension? Dimension;
///
- /// Return results that match both Dimension object.
+ /// Return results that do not match the Dimension object.
///
public readonly Outputs.AnomalySubscriptionThresholdExpressionNot? Not;
///
- /// Return results that match both Dimension object.
+ /// Return results that match either Dimension object.
///
public readonly ImmutableArray Ors;
///
diff --git a/sdk/dotnet/DynamoDB/KinesisStreamingDestination.cs b/sdk/dotnet/DynamoDB/KinesisStreamingDestination.cs
index 8c8283baefb..3d641419ceb 100644
--- a/sdk/dotnet/DynamoDB/KinesisStreamingDestination.cs
+++ b/sdk/dotnet/DynamoDB/KinesisStreamingDestination.cs
@@ -46,6 +46,7 @@ namespace Pulumi.Aws.DynamoDB
/// {
/// StreamArn = exampleStream.Arn,
/// TableName = example.Name,
+ /// ApproximateCreationDateTimePrecision = "MICROSECOND",
/// });
///
/// });
@@ -62,6 +63,12 @@ namespace Pulumi.Aws.DynamoDB
[AwsResourceType("aws:dynamodb/kinesisStreamingDestination:KinesisStreamingDestination")]
public partial class KinesisStreamingDestination : global::Pulumi.CustomResource
{
+ ///
+ /// Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.
+ ///
+ [Output("approximateCreationDateTimePrecision")]
+ public Output ApproximateCreationDateTimePrecision { get; private set; } = null!;
+
///
/// The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.
///
@@ -69,8 +76,7 @@ public partial class KinesisStreamingDestination : global::Pulumi.CustomResource
public Output StreamArn { get; private set; } = null!;
///
- /// The name of the DynamoDB table. There
- /// can only be one Kinesis streaming destination for a given DynamoDB table.
+ /// The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.
///
[Output("tableName")]
public Output TableName { get; private set; } = null!;
@@ -121,6 +127,12 @@ public static KinesisStreamingDestination Get(string name, Input id, Kin
public sealed class KinesisStreamingDestinationArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.
+ ///
+ [Input("approximateCreationDateTimePrecision")]
+ public Input? ApproximateCreationDateTimePrecision { get; set; }
+
///
/// The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.
///
@@ -128,8 +140,7 @@ public sealed class KinesisStreamingDestinationArgs : global::Pulumi.ResourceArg
public Input StreamArn { get; set; } = null!;
///
- /// The name of the DynamoDB table. There
- /// can only be one Kinesis streaming destination for a given DynamoDB table.
+ /// The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.
///
[Input("tableName", required: true)]
public Input TableName { get; set; } = null!;
@@ -142,6 +153,12 @@ public KinesisStreamingDestinationArgs()
public sealed class KinesisStreamingDestinationState : global::Pulumi.ResourceArgs
{
+ ///
+ /// Toggle for the precision of Kinesis data stream timestamp. Valid values: `MILLISECOND` and `MICROSECOND`.
+ ///
+ [Input("approximateCreationDateTimePrecision")]
+ public Input? ApproximateCreationDateTimePrecision { get; set; }
+
///
/// The ARN for a Kinesis data stream. This must exist in the same account and region as the DynamoDB table.
///
@@ -149,8 +166,7 @@ public sealed class KinesisStreamingDestinationState : global::Pulumi.ResourceAr
public Input? StreamArn { get; set; }
///
- /// The name of the DynamoDB table. There
- /// can only be one Kinesis streaming destination for a given DynamoDB table.
+ /// The name of the DynamoDB table. There can only be one Kinesis streaming destination for a given DynamoDB table.
///
[Input("tableName")]
public Input? TableName { get; set; }
diff --git a/sdk/dotnet/Ec2/GetSubnet.cs b/sdk/dotnet/Ec2/GetSubnet.cs
index 3b65408dcd7..e07b700d03f 100644
--- a/sdk/dotnet/Ec2/GetSubnet.cs
+++ b/sdk/dotnet/Ec2/GetSubnet.cs
@@ -35,7 +35,7 @@ public static class GetSubnet
/// Id = subnetId,
/// });
///
- /// var subnet = new Aws.Ec2.SecurityGroup("subnet", new()
+ /// var subnetSecurityGroup = new Aws.Ec2.SecurityGroup("subnet_security_group", new()
/// {
/// VpcId = selected.Apply(getSubnetResult => getSubnetResult.VpcId),
/// Ingress = new[]
@@ -113,7 +113,7 @@ public static Task InvokeAsync(GetSubnetArgs? args = null, Invo
/// Id = subnetId,
/// });
///
- /// var subnet = new Aws.Ec2.SecurityGroup("subnet", new()
+ /// var subnetSecurityGroup = new Aws.Ec2.SecurityGroup("subnet_security_group", new()
/// {
/// VpcId = selected.Apply(getSubnetResult => getSubnetResult.VpcId),
/// Ingress = new[]
diff --git a/sdk/dotnet/ElastiCache/Cluster.cs b/sdk/dotnet/ElastiCache/Cluster.cs
index bd018a321b7..464aca9c8c1 100644
--- a/sdk/dotnet/ElastiCache/Cluster.cs
+++ b/sdk/dotnet/ElastiCache/Cluster.cs
@@ -265,7 +265,7 @@ public partial class Cluster : global::Pulumi.CustomResource
public Output ConfigurationEndpoint { get; private set; } = null!;
///
- /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
+ /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.
///
[Output("engine")]
public Output Engine { get; private set; } = null!;
@@ -513,7 +513,7 @@ public sealed class ClusterArgs : global::Pulumi.ResourceArgs
public Input? ClusterId { get; set; }
///
- /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
+ /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.
///
[Input("engine")]
public Input? Engine { get; set; }
@@ -765,7 +765,7 @@ public InputList CacheNodes
public Input? ConfigurationEndpoint { get; set; }
///
- /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
+ /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` and `redis`.
///
[Input("engine")]
public Input? Engine { get; set; }
diff --git a/sdk/dotnet/ElastiCache/GetReservedCacheNodeOffering.cs b/sdk/dotnet/ElastiCache/GetReservedCacheNodeOffering.cs
index 2a53d5d598f..8c8c13a7b5f 100644
--- a/sdk/dotnet/ElastiCache/GetReservedCacheNodeOffering.cs
+++ b/sdk/dotnet/ElastiCache/GetReservedCacheNodeOffering.cs
@@ -95,7 +95,7 @@ public sealed class GetReservedCacheNodeOfferingArgs : global::Pulumi.InvokeArgs
///
/// Engine type for the reserved cache node.
- /// Valid values are `redis` and `memcached`.
+ /// Valid values are `redis`, `valkey` and `memcached`.
///
[Input("productDescription", required: true)]
public string ProductDescription { get; set; } = null!;
@@ -134,7 +134,7 @@ public sealed class GetReservedCacheNodeOfferingInvokeArgs : global::Pulumi.Invo
///
/// Engine type for the reserved cache node.
- /// Valid values are `redis` and `memcached`.
+ /// Valid values are `redis`, `valkey` and `memcached`.
///
[Input("productDescription", required: true)]
public Input ProductDescription { get; set; } = null!;
diff --git a/sdk/dotnet/ElastiCache/GetServerlessCache.cs b/sdk/dotnet/ElastiCache/GetServerlessCache.cs
index cf224568f98..9c2c3e6535b 100644
--- a/sdk/dotnet/ElastiCache/GetServerlessCache.cs
+++ b/sdk/dotnet/ElastiCache/GetServerlessCache.cs
@@ -106,7 +106,7 @@ public sealed class GetServerlessCacheResult
///
public readonly string CreateTime;
///
- /// The daily time that snapshots will be created from the new serverless cache. Only available for engine type `"redis"`.
+ /// The daily time that snapshots will be created from the new serverless cache. Only available for engine types `"redis"` and `"valkey"`.
///
public readonly string DailySnapshotTime;
///
diff --git a/sdk/dotnet/ElastiCache/GlobalReplicationGroup.cs b/sdk/dotnet/ElastiCache/GlobalReplicationGroup.cs
index 57d84e15515..1101b8159b7 100644
--- a/sdk/dotnet/ElastiCache/GlobalReplicationGroup.cs
+++ b/sdk/dotnet/ElastiCache/GlobalReplicationGroup.cs
@@ -53,7 +53,7 @@ namespace Pulumi.Aws.ElastiCache
/// });
/// ```
///
- /// ### Managing Redis Engine Versions
+ /// ### Managing Redis OOS/Valkey Engine Versions
///
/// The initial Redis version is determined by the version set on the primary replication group.
/// However, once it is part of a Global Replication Group,
diff --git a/sdk/dotnet/ElastiCache/ReplicationGroup.cs b/sdk/dotnet/ElastiCache/ReplicationGroup.cs
index 8251513ab0b..3540739e077 100644
--- a/sdk/dotnet/ElastiCache/ReplicationGroup.cs
+++ b/sdk/dotnet/ElastiCache/ReplicationGroup.cs
@@ -33,7 +33,7 @@ namespace Pulumi.Aws.ElastiCache
///
/// ## Example Usage
///
- /// ### Redis Cluster Mode Disabled
+ /// ### Redis OSS/Valkey Cluster Mode Disabled
///
/// To create a single shard primary with single read replica:
///
@@ -106,7 +106,7 @@ namespace Pulumi.Aws.ElastiCache
/// });
/// ```
///
- /// ### Redis Cluster Mode Enabled
+ /// ### Redis OSS/Valkey Cluster Mode Enabled
///
/// To create two shards with a primary and a single read replica each:
///
@@ -297,7 +297,7 @@ public partial class ReplicationGroup : global::Pulumi.CustomResource
///
/// Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
- /// Only supported for engine type `"redis"` and if the engine version is 6 or higher.
+ /// Only supported for engine types `"redis"` and `"valkey"` and if the engine version is 6 or higher.
/// Defaults to `true`.
///
[Output("autoMinorVersionUpgrade")]
@@ -340,7 +340,7 @@ public partial class ReplicationGroup : global::Pulumi.CustomResource
public Output Description { get; private set; } = null!;
///
- /// Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.
+ /// Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.
///
[Output("engine")]
public Output Engine { get; private set; } = null!;
@@ -387,7 +387,7 @@ public partial class ReplicationGroup : global::Pulumi.CustomResource
public Output KmsKeyId { get; private set; } = null!;
///
- /// Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.
+ /// Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.
///
[Output("logDeliveryConfigurations")]
public Output> LogDeliveryConfigurations { get; private set; } = null!;
@@ -662,7 +662,7 @@ public Input? AuthToken
///
/// Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
- /// Only supported for engine type `"redis"` and if the engine version is 6 or higher.
+ /// Only supported for engine types `"redis"` and `"valkey"` and if the engine version is 6 or higher.
/// Defaults to `true`.
///
[Input("autoMinorVersionUpgrade")]
@@ -693,7 +693,7 @@ public Input? AuthToken
public Input Description { get; set; } = null!;
///
- /// Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.
+ /// Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.
///
[Input("engine")]
public Input? Engine { get; set; }
@@ -737,7 +737,7 @@ public Input? AuthToken
private InputList? _logDeliveryConfigurations;
///
- /// Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.
+ /// Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.
///
public InputList LogDeliveryConfigurations
{
@@ -991,7 +991,7 @@ public Input? AuthToken
///
/// Specifies whether minor version engine upgrades will be applied automatically to the underlying Cache Cluster instances during the maintenance window.
- /// Only supported for engine type `"redis"` and if the engine version is 6 or higher.
+ /// Only supported for engine types `"redis"` and `"valkey"` and if the engine version is 6 or higher.
/// Defaults to `true`.
///
[Input("autoMinorVersionUpgrade")]
@@ -1034,7 +1034,7 @@ public Input? AuthToken
public Input? Description { get; set; }
///
- /// Name of the cache engine to be used for the clusters in this replication group. The only valid value is `redis`.
+ /// Name of the cache engine to be used for the clusters in this replication group. Valid values are `redis` or `valkey`.
///
[Input("engine")]
public Input? Engine { get; set; }
@@ -1084,7 +1084,7 @@ public Input? AuthToken
private InputList? _logDeliveryConfigurations;
///
- /// Specifies the destination and format of Redis [SLOWLOG](https://redis.io/commands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.
+ /// Specifies the destination and format of Redis OSS/Valkey [SLOWLOG](https://redis.io/commands/slowlog) or Redis OSS/Valkey [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html#Log_contents-engine-log). See Log Delivery Configuration below for more details.
///
public InputList LogDeliveryConfigurations
{
diff --git a/sdk/dotnet/ElastiCache/ServerlessCache.cs b/sdk/dotnet/ElastiCache/ServerlessCache.cs
index 3bd45aad2ee..2d40688ebc7 100644
--- a/sdk/dotnet/ElastiCache/ServerlessCache.cs
+++ b/sdk/dotnet/ElastiCache/ServerlessCache.cs
@@ -10,7 +10,7 @@
namespace Pulumi.Aws.ElastiCache
{
///
- /// Provides an ElastiCache Serverless Cache resource which manages memcached or redis.
+ /// Provides an ElastiCache Serverless Cache resource which manages memcached, redis or valkey.
///
/// ## Example Usage
///
@@ -56,7 +56,7 @@ namespace Pulumi.Aws.ElastiCache
/// });
/// ```
///
- /// ### Redis Serverless
+ /// ### Redis OSS Serverless
///
/// ```csharp
/// using System.Collections.Generic;
@@ -100,6 +100,50 @@ namespace Pulumi.Aws.ElastiCache
/// });
/// ```
///
+ /// ### Valkey Serverless
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Aws = Pulumi.Aws;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = new Aws.ElastiCache.ServerlessCache("example", new()
+ /// {
+ /// Engine = "valkey",
+ /// Name = "example",
+ /// CacheUsageLimits = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsArgs
+ /// {
+ /// DataStorage = new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsDataStorageArgs
+ /// {
+ /// Maximum = 10,
+ /// Unit = "GB",
+ /// },
+ /// EcpuPerSeconds = new[]
+ /// {
+ /// new Aws.ElastiCache.Inputs.ServerlessCacheCacheUsageLimitsEcpuPerSecondArgs
+ /// {
+ /// Maximum = 5000,
+ /// },
+ /// },
+ /// },
+ /// DailySnapshotTime = "09:00",
+ /// Description = "Test Server",
+ /// KmsKeyId = test.Arn,
+ /// MajorEngineVersion = "7",
+ /// SnapshotRetentionLimit = 1,
+ /// SecurityGroupIds = new[]
+ /// {
+ /// testAwsSecurityGroup.Id,
+ /// },
+ /// SubnetIds = testAwsSubnet.Select(__item => __item.Id).ToList(),
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
/// ## Import
///
/// Using `pulumi import`, import ElastiCache Serverless Cache using the `name`. For example:
@@ -130,7 +174,7 @@ public partial class ServerlessCache : global::Pulumi.CustomResource
public Output CreateTime { get; private set; } = null!;
///
- /// The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `"redis"`. Defaults to `0`.
+ /// The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `"redis"` or `"valkey"`. Defaults to `0`.
///
[Output("dailySnapshotTime")]
public Output DailySnapshotTime { get; private set; } = null!;
@@ -148,7 +192,7 @@ public partial class ServerlessCache : global::Pulumi.CustomResource
public Output> Endpoints { get; private set; } = null!;
///
- /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
+ /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.
///
[Output("engine")]
public Output Engine { get; private set; } = null!;
@@ -287,7 +331,7 @@ public sealed class ServerlessCacheArgs : global::Pulumi.ResourceArgs
public Input? CacheUsageLimits { get; set; }
///
- /// The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `"redis"`. Defaults to `0`.
+ /// The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `"redis"` or `"valkey"`. Defaults to `0`.
///
[Input("dailySnapshotTime")]
public Input? DailySnapshotTime { get; set; }
@@ -299,7 +343,7 @@ public sealed class ServerlessCacheArgs : global::Pulumi.ResourceArgs
public Input? Description { get; set; }
///
- /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
+ /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.
///
[Input("engine", required: true)]
public Input Engine { get; set; } = null!;
@@ -415,7 +459,7 @@ public sealed class ServerlessCacheState : global::Pulumi.ResourceArgs
public Input? CreateTime { get; set; }
///
- /// The daily time that snapshots will be created from the new serverless cache. Only supported for engine type `"redis"`. Defaults to `0`.
+ /// The daily time that snapshots will be created from the new serverless cache. Only supported for engine types `"redis"` or `"valkey"`. Defaults to `0`.
///
[Input("dailySnapshotTime")]
public Input? DailySnapshotTime { get; set; }
@@ -439,7 +483,7 @@ public InputList Endpoints
}
///
- /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached` or `redis`.
+ /// Name of the cache engine to be used for this cache cluster. Valid values are `memcached`, `redis` or `valkey`.
///
[Input("engine")]
public Input? Engine { get; set; }
diff --git a/sdk/dotnet/ImageBuilder/GetContainerRecipe.cs b/sdk/dotnet/ImageBuilder/GetContainerRecipe.cs
index 2e51da40204..f494d93d196 100644
--- a/sdk/dotnet/ImageBuilder/GetContainerRecipe.cs
+++ b/sdk/dotnet/ImageBuilder/GetContainerRecipe.cs
@@ -173,7 +173,7 @@ public sealed class GetContainerRecipeResult
///
/// Key-value map of resource tags for the container recipe.
///
- public readonly ImmutableDictionary? Tags;
+ public readonly ImmutableDictionary Tags;
///
/// Destination repository for the container image.
///
@@ -217,7 +217,7 @@ private GetContainerRecipeResult(
string platform,
- ImmutableDictionary? tags,
+ ImmutableDictionary tags,
ImmutableArray targetRepositories,
diff --git a/sdk/dotnet/ImageBuilder/GetImageRecipe.cs b/sdk/dotnet/ImageBuilder/GetImageRecipe.cs
index 1b742a239aa..140fee46c82 100644
--- a/sdk/dotnet/ImageBuilder/GetImageRecipe.cs
+++ b/sdk/dotnet/ImageBuilder/GetImageRecipe.cs
@@ -157,7 +157,7 @@ public sealed class GetImageRecipeResult
///
/// Key-value map of resource tags for the image recipe.
///
- public readonly ImmutableDictionary? Tags;
+ public readonly ImmutableDictionary Tags;
///
/// Base64 encoded contents of user data. Commands or a command script to run when build instance is launched.
///
@@ -193,7 +193,7 @@ private GetImageRecipeResult(
string platform,
- ImmutableDictionary? tags,
+ ImmutableDictionary tags,
string userDataBase64,
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionArgs.cs
new file mode 100644
index 00000000000..1387bc204cb
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailActionArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies the resources that the lifecycle policy applies to. Detailed below.
+ ///
+ [Input("includeResources")]
+ public Input? IncludeResources { get; set; }
+
+ ///
+ /// Specifies the lifecycle action to take. Valid values: `DELETE`, `DEPRECATE` or `DISABLE`.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("type", required: true)]
+ public Input Type { get; set; } = null!;
+
+ public LifecyclePolicyPolicyDetailActionArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailActionArgs Empty => new LifecyclePolicyPolicyDetailActionArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionGetArgs.cs
new file mode 100644
index 00000000000..030f6857170
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionGetArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailActionGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies the resources that the lifecycle policy applies to. Detailed below.
+ ///
+ [Input("includeResources")]
+ public Input? IncludeResources { get; set; }
+
+ ///
+ /// Specifies the lifecycle action to take. Valid values: `DELETE`, `DEPRECATE` or `DISABLE`.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("type", required: true)]
+ public Input Type { get; set; } = null!;
+
+ public LifecyclePolicyPolicyDetailActionGetArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailActionGetArgs Empty => new LifecyclePolicyPolicyDetailActionGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionIncludeResourcesArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionIncludeResourcesArgs.cs
new file mode 100644
index 00000000000..62d4f04ad2b
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionIncludeResourcesArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailActionIncludeResourcesArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies whether the lifecycle action should apply to distributed AMIs.
+ ///
+ [Input("amis")]
+ public Input? Amis { get; set; }
+
+ ///
+ /// Specifies whether the lifecycle action should apply to distributed containers.
+ ///
+ [Input("containers")]
+ public Input? Containers { get; set; }
+
+ ///
+ /// Specifies whether the lifecycle action should apply to snapshots associated with distributed AMIs.
+ ///
+ [Input("snapshots")]
+ public Input? Snapshots { get; set; }
+
+ public LifecyclePolicyPolicyDetailActionIncludeResourcesArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailActionIncludeResourcesArgs Empty => new LifecyclePolicyPolicyDetailActionIncludeResourcesArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionIncludeResourcesGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionIncludeResourcesGetArgs.cs
new file mode 100644
index 00000000000..49ce16d79fd
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailActionIncludeResourcesGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailActionIncludeResourcesGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies whether the lifecycle action should apply to distributed AMIs.
+ ///
+ [Input("amis")]
+ public Input? Amis { get; set; }
+
+ ///
+ /// Specifies whether the lifecycle action should apply to distributed containers.
+ ///
+ [Input("containers")]
+ public Input? Containers { get; set; }
+
+ ///
+ /// Specifies whether the lifecycle action should apply to snapshots associated with distributed AMIs.
+ ///
+ [Input("snapshots")]
+ public Input? Snapshots { get; set; }
+
+ public LifecyclePolicyPolicyDetailActionIncludeResourcesGetArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailActionIncludeResourcesGetArgs Empty => new LifecyclePolicyPolicyDetailActionIncludeResourcesGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailArgs.cs
new file mode 100644
index 00000000000..dd2d371009e
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailArgs.cs
@@ -0,0 +1,40 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configuration details for the policy action.
+ ///
+ [Input("action")]
+ public Input? Action { get; set; }
+
+ ///
+ /// Additional rules to specify resources that should be exempt from policy actions.
+ ///
+ [Input("exclusionRules")]
+ public Input? ExclusionRules { get; set; }
+
+ ///
+ /// Specifies the resources that the lifecycle policy applies to.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("filter")]
+ public Input? Filter { get; set; }
+
+ public LifecyclePolicyPolicyDetailArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailArgs Empty => new LifecyclePolicyPolicyDetailArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisArgs.cs
new file mode 100644
index 00000000000..466e020ca48
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisArgs.cs
@@ -0,0 +1,68 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailExclusionRulesAmisArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configures whether public AMIs are excluded from the lifecycle action.
+ ///
+ [Input("isPublic")]
+ public Input? IsPublic { get; set; }
+
+ ///
+ /// Specifies configuration details for Image Builder to exclude the most recent resources from lifecycle actions. Detailed below.
+ ///
+ [Input("lastLaunched")]
+ public Input? LastLaunched { get; set; }
+
+ [Input("regions")]
+ private InputList? _regions;
+
+ ///
+ /// Configures AWS Regions that are excluded from the lifecycle action.
+ ///
+ public InputList Regions
+ {
+ get => _regions ?? (_regions = new InputList());
+ set => _regions = value;
+ }
+
+ [Input("sharedAccounts")]
+ private InputList? _sharedAccounts;
+
+ ///
+ /// Specifies AWS accounts whose resources are excluded from the lifecycle action.
+ ///
+ public InputList SharedAccounts
+ {
+ get => _sharedAccounts ?? (_sharedAccounts = new InputList());
+ set => _sharedAccounts = value;
+ }
+
+ [Input("tagMap")]
+ private InputMap? _tagMap;
+
+ ///
+ /// Lists tags that should be excluded from lifecycle actions for the AMIs that have them.
+ ///
+ public InputMap TagMap
+ {
+ get => _tagMap ?? (_tagMap = new InputMap());
+ set => _tagMap = value;
+ }
+
+ public LifecyclePolicyPolicyDetailExclusionRulesAmisArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailExclusionRulesAmisArgs Empty => new LifecyclePolicyPolicyDetailExclusionRulesAmisArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisGetArgs.cs
new file mode 100644
index 00000000000..eabc9d46ea1
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisGetArgs.cs
@@ -0,0 +1,68 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailExclusionRulesAmisGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configures whether public AMIs are excluded from the lifecycle action.
+ ///
+ [Input("isPublic")]
+ public Input? IsPublic { get; set; }
+
+ ///
+ /// Specifies configuration details for Image Builder to exclude the most recent resources from lifecycle actions. Detailed below.
+ ///
+ [Input("lastLaunched")]
+ public Input? LastLaunched { get; set; }
+
+ [Input("regions")]
+ private InputList? _regions;
+
+ ///
+ /// Configures AWS Regions that are excluded from the lifecycle action.
+ ///
+ public InputList Regions
+ {
+ get => _regions ?? (_regions = new InputList());
+ set => _regions = value;
+ }
+
+ [Input("sharedAccounts")]
+ private InputList? _sharedAccounts;
+
+ ///
+ /// Specifies AWS accounts whose resources are excluded from the lifecycle action.
+ ///
+ public InputList SharedAccounts
+ {
+ get => _sharedAccounts ?? (_sharedAccounts = new InputList());
+ set => _sharedAccounts = value;
+ }
+
+ [Input("tagMap")]
+ private InputMap? _tagMap;
+
+ ///
+ /// Lists tags that should be excluded from lifecycle actions for the AMIs that have them.
+ ///
+ public InputMap TagMap
+ {
+ get => _tagMap ?? (_tagMap = new InputMap());
+ set => _tagMap = value;
+ }
+
+ public LifecyclePolicyPolicyDetailExclusionRulesAmisGetArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailExclusionRulesAmisGetArgs Empty => new LifecyclePolicyPolicyDetailExclusionRulesAmisGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedArgs.cs
new file mode 100644
index 00000000000..4eabbc34849
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Defines the unit of time that the lifecycle policy uses to calculate elapsed time since the last instance launched from the AMI. For example: days, weeks, months, or years. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.
+ ///
+ [Input("unit", required: true)]
+ public Input Unit { get; set; } = null!;
+
+ ///
+ /// The integer number of units for the time period. For example 6 (months).
+ ///
+ [Input("value", required: true)]
+ public Input Value { get; set; } = null!;
+
+ public LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedArgs Empty => new LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedGetArgs.cs
new file mode 100644
index 00000000000..89000c719d5
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Defines the unit of time that the lifecycle policy uses to calculate elapsed time since the last instance launched from the AMI. For example: days, weeks, months, or years. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.
+ ///
+ [Input("unit", required: true)]
+ public Input Unit { get; set; } = null!;
+
+ ///
+ /// The integer number of units for the time period. For example 6 (months).
+ ///
+ [Input("value", required: true)]
+ public Input Value { get; set; } = null!;
+
+ public LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedGetArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedGetArgs Empty => new LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunchedGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesArgs.cs
new file mode 100644
index 00000000000..7312db105b6
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailExclusionRulesArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Lists configuration values that apply to AMIs that Image Builder should exclude from the lifecycle action. Detailed below.
+ ///
+ [Input("amis")]
+ public Input? Amis { get; set; }
+
+ [Input("tagMap")]
+ private InputMap? _tagMap;
+
+ ///
+ /// Contains a list of tags that Image Builder uses to skip lifecycle actions for Image Builder image resources that have them.
+ ///
+ public InputMap TagMap
+ {
+ get => _tagMap ?? (_tagMap = new InputMap());
+ set => _tagMap = value;
+ }
+
+ public LifecyclePolicyPolicyDetailExclusionRulesArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailExclusionRulesArgs Empty => new LifecyclePolicyPolicyDetailExclusionRulesArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesGetArgs.cs
new file mode 100644
index 00000000000..93130b641ea
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailExclusionRulesGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailExclusionRulesGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Lists configuration values that apply to AMIs that Image Builder should exclude from the lifecycle action. Detailed below.
+ ///
+ [Input("amis")]
+ public Input? Amis { get; set; }
+
+ [Input("tagMap")]
+ private InputMap? _tagMap;
+
+ ///
+ /// Contains a list of tags that Image Builder uses to skip lifecycle actions for Image Builder image resources that have them.
+ ///
+ public InputMap TagMap
+ {
+ get => _tagMap ?? (_tagMap = new InputMap());
+ set => _tagMap = value;
+ }
+
+ public LifecyclePolicyPolicyDetailExclusionRulesGetArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailExclusionRulesGetArgs Empty => new LifecyclePolicyPolicyDetailExclusionRulesGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailFilterArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailFilterArgs.cs
new file mode 100644
index 00000000000..6cc96882275
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailFilterArgs.cs
@@ -0,0 +1,46 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailFilterArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// For age-based filters, this is the number of resources to keep on hand after the lifecycle DELETE action is applied. Impacted resources are only deleted if you have more than this number of resources. If you have fewer resources than this number, the impacted resource is not deleted.
+ ///
+ [Input("retainAtLeast")]
+ public Input? RetainAtLeast { get; set; }
+
+ ///
+ /// Filter resources based on either age or count. Valid values: `AGE` or `COUNT`.
+ ///
+ [Input("type", required: true)]
+ public Input Type { get; set; } = null!;
+
+ ///
+ /// Defines the unit of time that the lifecycle policy uses to determine impacted resources. This is required for age-based rules. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.
+ ///
+ [Input("unit")]
+ public Input? Unit { get; set; }
+
+ ///
+ /// The number of units for the time period or for the count. For example, a value of 6 might refer to six months or six AMIs.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("value", required: true)]
+ public Input Value { get; set; } = null!;
+
+ public LifecyclePolicyPolicyDetailFilterArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailFilterArgs Empty => new LifecyclePolicyPolicyDetailFilterArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailFilterGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailFilterGetArgs.cs
new file mode 100644
index 00000000000..0cee5a363b8
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailFilterGetArgs.cs
@@ -0,0 +1,46 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailFilterGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// For age-based filters, this is the number of resources to keep on hand after the lifecycle DELETE action is applied. Impacted resources are only deleted if you have more than this number of resources. If you have fewer resources than this number, the impacted resource is not deleted.
+ ///
+ [Input("retainAtLeast")]
+ public Input? RetainAtLeast { get; set; }
+
+ ///
+ /// Filter resources based on either age or count. Valid values: `AGE` or `COUNT`.
+ ///
+ [Input("type", required: true)]
+ public Input Type { get; set; } = null!;
+
+ ///
+ /// Defines the unit of time that the lifecycle policy uses to determine impacted resources. This is required for age-based rules. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.
+ ///
+ [Input("unit")]
+ public Input? Unit { get; set; }
+
+ ///
+ /// The number of units for the time period or for the count. For example, a value of 6 might refer to six months or six AMIs.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("value", required: true)]
+ public Input Value { get; set; } = null!;
+
+ public LifecyclePolicyPolicyDetailFilterGetArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailFilterGetArgs Empty => new LifecyclePolicyPolicyDetailFilterGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailGetArgs.cs
new file mode 100644
index 00000000000..9b736ea918f
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyPolicyDetailGetArgs.cs
@@ -0,0 +1,40 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyPolicyDetailGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configuration details for the policy action.
+ ///
+ [Input("action")]
+ public Input? Action { get; set; }
+
+ ///
+ /// Additional rules to specify resources that should be exempt from policy actions.
+ ///
+ [Input("exclusionRules")]
+ public Input? ExclusionRules { get; set; }
+
+ ///
+ /// Specifies the resources that the lifecycle policy applies to.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("filter")]
+ public Input? Filter { get; set; }
+
+ public LifecyclePolicyPolicyDetailGetArgs()
+ {
+ }
+ public static new LifecyclePolicyPolicyDetailGetArgs Empty => new LifecyclePolicyPolicyDetailGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionArgs.cs
new file mode 100644
index 00000000000..b5cf56add2a
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyResourceSelectionArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("recipes")]
+ private InputList? _recipes;
+
+ ///
+ /// A list of recipe that are used as selection criteria for the output images that the lifecycle policy applies to. Detailed below.
+ ///
+ public InputList Recipes
+ {
+ get => _recipes ?? (_recipes = new InputList());
+ set => _recipes = value;
+ }
+
+ [Input("tagMap")]
+ private InputMap? _tagMap;
+
+ ///
+ /// A list of tags that are used as selection criteria for the Image Builder image resources that the lifecycle policy applies to.
+ ///
+ public InputMap TagMap
+ {
+ get => _tagMap ?? (_tagMap = new InputMap());
+ set => _tagMap = value;
+ }
+
+ public LifecyclePolicyResourceSelectionArgs()
+ {
+ }
+ public static new LifecyclePolicyResourceSelectionArgs Empty => new LifecyclePolicyResourceSelectionArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionGetArgs.cs
new file mode 100644
index 00000000000..c3d40c5feb2
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionGetArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyResourceSelectionGetArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("recipes")]
+ private InputList? _recipes;
+
+ ///
+ /// A list of recipe that are used as selection criteria for the output images that the lifecycle policy applies to. Detailed below.
+ ///
+ public InputList Recipes
+ {
+ get => _recipes ?? (_recipes = new InputList());
+ set => _recipes = value;
+ }
+
+ [Input("tagMap")]
+ private InputMap? _tagMap;
+
+ ///
+ /// A list of tags that are used as selection criteria for the Image Builder image resources that the lifecycle policy applies to.
+ ///
+ public InputMap TagMap
+ {
+ get => _tagMap ?? (_tagMap = new InputMap());
+ set => _tagMap = value;
+ }
+
+ public LifecyclePolicyResourceSelectionGetArgs()
+ {
+ }
+ public static new LifecyclePolicyResourceSelectionGetArgs Empty => new LifecyclePolicyResourceSelectionGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionRecipeArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionRecipeArgs.cs
new file mode 100644
index 00000000000..e91ea837883
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionRecipeArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyResourceSelectionRecipeArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The name of an Image Builder recipe that the lifecycle policy uses for resource selection.
+ ///
+ [Input("name", required: true)]
+ public Input Name { get; set; } = null!;
+
+ ///
+ /// The version of the Image Builder recipe specified by the name field.
+ ///
+ [Input("semanticVersion", required: true)]
+ public Input SemanticVersion { get; set; } = null!;
+
+ public LifecyclePolicyResourceSelectionRecipeArgs()
+ {
+ }
+ public static new LifecyclePolicyResourceSelectionRecipeArgs Empty => new LifecyclePolicyResourceSelectionRecipeArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionRecipeGetArgs.cs b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionRecipeGetArgs.cs
new file mode 100644
index 00000000000..13b05f8222c
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Inputs/LifecyclePolicyResourceSelectionRecipeGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Inputs
+{
+
+ public sealed class LifecyclePolicyResourceSelectionRecipeGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The name of an Image Builder recipe that the lifecycle policy uses for resource selection.
+ ///
+ [Input("name", required: true)]
+ public Input Name { get; set; } = null!;
+
+ ///
+ /// The version of the Image Builder recipe specified by the name field.
+ ///
+ [Input("semanticVersion", required: true)]
+ public Input SemanticVersion { get; set; } = null!;
+
+ public LifecyclePolicyResourceSelectionRecipeGetArgs()
+ {
+ }
+ public static new LifecyclePolicyResourceSelectionRecipeGetArgs Empty => new LifecyclePolicyResourceSelectionRecipeGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/LifecyclePolicy.cs b/sdk/dotnet/ImageBuilder/LifecyclePolicy.cs
new file mode 100644
index 00000000000..346166e279c
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/LifecyclePolicy.cs
@@ -0,0 +1,374 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder
+{
+ ///
+ /// Manages an Image Builder Lifecycle Policy.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using System.Text.Json;
+ /// using Pulumi;
+ /// using Aws = Pulumi.Aws;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var current = Aws.GetRegion.Invoke();
+ ///
+ /// var currentGetPartition = Aws.GetPartition.Invoke();
+ ///
+ /// var example = new Aws.Iam.Role("example", new()
+ /// {
+ /// AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary<string, object?>
+ /// {
+ /// ["Version"] = "2012-10-17",
+ /// ["Statement"] = new[]
+ /// {
+ /// new Dictionary<string, object?>
+ /// {
+ /// ["Action"] = "sts:AssumeRole",
+ /// ["Effect"] = "Allow",
+ /// ["Principal"] = new Dictionary<string, object?>
+ /// {
+ /// ["Service"] = $"imagebuilder.{currentGetPartition.Apply(getPartitionResult => getPartitionResult.DnsSuffix)}",
+ /// },
+ /// },
+ /// },
+ /// }),
+ /// Name = "example",
+ /// });
+ ///
+ /// var exampleRolePolicyAttachment = new Aws.Iam.RolePolicyAttachment("example", new()
+ /// {
+ /// PolicyArn = $"arn:{currentGetPartition.Apply(getPartitionResult => getPartitionResult.Partition)}:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy",
+ /// Role = example.Name,
+ /// });
+ ///
+ /// var exampleLifecyclePolicy = new Aws.ImageBuilder.LifecyclePolicy("example", new()
+ /// {
+ /// Name = "name",
+ /// Description = "Example description",
+ /// ExecutionRole = example.Arn,
+ /// ResourceType = "AMI_IMAGE",
+ /// PolicyDetails = new[]
+ /// {
+ /// new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailArgs
+ /// {
+ /// Action = new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailActionArgs
+ /// {
+ /// Type = "DELETE",
+ /// },
+ /// Filter = new Aws.ImageBuilder.Inputs.LifecyclePolicyPolicyDetailFilterArgs
+ /// {
+ /// Type = "AGE",
+ /// Value = 6,
+ /// RetainAtLeast = 10,
+ /// Unit = "YEARS",
+ /// },
+ /// },
+ /// },
+ /// ResourceSelection = new Aws.ImageBuilder.Inputs.LifecyclePolicyResourceSelectionArgs
+ /// {
+ /// TagMap =
+ /// {
+ /// { "key1", "value1" },
+ /// { "key2", "value2" },
+ /// },
+ /// },
+ /// }, new CustomResourceOptions
+ /// {
+ /// DependsOn =
+ /// {
+ /// exampleRolePolicyAttachment,
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// Using `pulumi import`, import `aws_imagebuilder_lifecycle_policy` using the Amazon Resource Name (ARN). For example:
+ ///
+ /// ```sh
+ /// $ pulumi import aws:imagebuilder/lifecyclePolicy:LifecyclePolicy example arn:aws:imagebuilder:us-east-1:123456789012:lifecycle-policy/example
+ /// ```
+ ///
+ [AwsResourceType("aws:imagebuilder/lifecyclePolicy:LifecyclePolicy")]
+ public partial class LifecyclePolicy : global::Pulumi.CustomResource
+ {
+ ///
+ /// Amazon Resource Name (ARN) of the lifecycle policy.
+ ///
+ [Output("arn")]
+ public Output Arn { get; private set; } = null!;
+
+ ///
+ /// description for the lifecycle policy.
+ ///
+ [Output("description")]
+ public Output Description { get; private set; } = null!;
+
+ ///
+ /// The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).
+ ///
+ [Output("executionRole")]
+ public Output ExecutionRole { get; private set; } = null!;
+
+ ///
+ /// The name of the lifecycle policy to create.
+ ///
+ [Output("name")]
+ public Output Name { get; private set; } = null!;
+
+ ///
+ /// Configuration block with policy details. Detailed below.
+ ///
+ [Output("policyDetails")]
+ public Output> PolicyDetails { get; private set; } = null!;
+
+ ///
+ /// Selection criteria for the resources that the lifecycle policy applies to. Detailed below.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Output("resourceSelection")]
+ public Output ResourceSelection { get; private set; } = null!;
+
+ ///
+ /// The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.
+ ///
+ [Output("resourceType")]
+ public Output ResourceType { get; private set; } = null!;
+
+ ///
+ /// The status of the lifecycle policy.
+ ///
+ [Output("status")]
+ public Output Status { get; private set; } = null!;
+
+ ///
+ /// Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ ///
+ [Output("tags")]
+ public Output?> Tags { get; private set; } = null!;
+
+ ///
+ /// A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
+ ///
+ [Output("tagsAll")]
+ public Output> TagsAll { get; private set; } = null!;
+
+
+ ///
+ /// Create a LifecyclePolicy resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public LifecyclePolicy(string name, LifecyclePolicyArgs args, CustomResourceOptions? options = null)
+ : base("aws:imagebuilder/lifecyclePolicy:LifecyclePolicy", name, args ?? new LifecyclePolicyArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private LifecyclePolicy(string name, Input id, LifecyclePolicyState? state = null, CustomResourceOptions? options = null)
+ : base("aws:imagebuilder/lifecyclePolicy:LifecyclePolicy", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing LifecyclePolicy resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static LifecyclePolicy Get(string name, Input id, LifecyclePolicyState? state = null, CustomResourceOptions? options = null)
+ {
+ return new LifecyclePolicy(name, id, state, options);
+ }
+ }
+
+ public sealed class LifecyclePolicyArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// description for the lifecycle policy.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).
+ ///
+ [Input("executionRole", required: true)]
+ public Input ExecutionRole { get; set; } = null!;
+
+ ///
+ /// The name of the lifecycle policy to create.
+ ///
+ [Input("name")]
+ public Input? Name { get; set; }
+
+ [Input("policyDetails")]
+ private InputList? _policyDetails;
+
+ ///
+ /// Configuration block with policy details. Detailed below.
+ ///
+ public InputList PolicyDetails
+ {
+ get => _policyDetails ?? (_policyDetails = new InputList());
+ set => _policyDetails = value;
+ }
+
+ ///
+ /// Selection criteria for the resources that the lifecycle policy applies to. Detailed below.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("resourceSelection")]
+ public Input? ResourceSelection { get; set; }
+
+ ///
+ /// The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.
+ ///
+ [Input("resourceType", required: true)]
+ public Input ResourceType { get; set; } = null!;
+
+ ///
+ /// The status of the lifecycle policy.
+ ///
+ [Input("status")]
+ public Input? Status { get; set; }
+
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
+ public LifecyclePolicyArgs()
+ {
+ }
+ public static new LifecyclePolicyArgs Empty => new LifecyclePolicyArgs();
+ }
+
+ public sealed class LifecyclePolicyState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Amazon Resource Name (ARN) of the lifecycle policy.
+ ///
+ [Input("arn")]
+ public Input? Arn { get; set; }
+
+ ///
+ /// description for the lifecycle policy.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// The Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. More information about this role can be found [`here`](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-lifecycle-prerequisites.html#image-lifecycle-prereq-role).
+ ///
+ [Input("executionRole")]
+ public Input? ExecutionRole { get; set; }
+
+ ///
+ /// The name of the lifecycle policy to create.
+ ///
+ [Input("name")]
+ public Input? Name { get; set; }
+
+ [Input("policyDetails")]
+ private InputList? _policyDetails;
+
+ ///
+ /// Configuration block with policy details. Detailed below.
+ ///
+ public InputList PolicyDetails
+ {
+ get => _policyDetails ?? (_policyDetails = new InputList());
+ set => _policyDetails = value;
+ }
+
+ ///
+ /// Selection criteria for the resources that the lifecycle policy applies to. Detailed below.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("resourceSelection")]
+ public Input? ResourceSelection { get; set; }
+
+ ///
+ /// The type of Image Builder resource that the lifecycle policy applies to. Valid values: `AMI_IMAGE` or `CONTAINER_IMAGE`.
+ ///
+ [Input("resourceType")]
+ public Input? ResourceType { get; set; }
+
+ ///
+ /// The status of the lifecycle policy.
+ ///
+ [Input("status")]
+ public Input? Status { get; set; }
+
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// Key-value map of resource tags for the Image Builder Lifecycle Policy. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
+ [Input("tagsAll")]
+ private InputMap? _tagsAll;
+
+ ///
+ /// A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
+ ///
+ [Obsolete(@"Please use `tags` instead.")]
+ public InputMap TagsAll
+ {
+ get => _tagsAll ?? (_tagsAll = new InputMap());
+ set => _tagsAll = value;
+ }
+
+ public LifecyclePolicyState()
+ {
+ }
+ public static new LifecyclePolicyState Empty => new LifecyclePolicyState();
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetail.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetail.cs
new file mode 100644
index 00000000000..b821775ca03
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetail.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyPolicyDetail
+ {
+ ///
+ /// Configuration details for the policy action.
+ ///
+ public readonly Outputs.LifecyclePolicyPolicyDetailAction? Action;
+ ///
+ /// Additional rules to specify resources that should be exempt from policy actions.
+ ///
+ public readonly Outputs.LifecyclePolicyPolicyDetailExclusionRules? ExclusionRules;
+ ///
+ /// Specifies the resources that the lifecycle policy applies to.
+ ///
+ /// The following arguments are optional:
+ ///
+ public readonly Outputs.LifecyclePolicyPolicyDetailFilter? Filter;
+
+ [OutputConstructor]
+ private LifecyclePolicyPolicyDetail(
+ Outputs.LifecyclePolicyPolicyDetailAction? action,
+
+ Outputs.LifecyclePolicyPolicyDetailExclusionRules? exclusionRules,
+
+ Outputs.LifecyclePolicyPolicyDetailFilter? filter)
+ {
+ Action = action;
+ ExclusionRules = exclusionRules;
+ Filter = filter;
+ }
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailAction.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailAction.cs
new file mode 100644
index 00000000000..950b2e52b80
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailAction.cs
@@ -0,0 +1,37 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyPolicyDetailAction
+ {
+ ///
+ /// Specifies the resources that the lifecycle policy applies to. Detailed below.
+ ///
+ public readonly Outputs.LifecyclePolicyPolicyDetailActionIncludeResources? IncludeResources;
+ ///
+ /// Specifies the lifecycle action to take. Valid values: `DELETE`, `DEPRECATE` or `DISABLE`.
+ ///
+ /// The following arguments are optional:
+ ///
+ public readonly string Type;
+
+ [OutputConstructor]
+ private LifecyclePolicyPolicyDetailAction(
+ Outputs.LifecyclePolicyPolicyDetailActionIncludeResources? includeResources,
+
+ string type)
+ {
+ IncludeResources = includeResources;
+ Type = type;
+ }
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailActionIncludeResources.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailActionIncludeResources.cs
new file mode 100644
index 00000000000..72c00d6ff72
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailActionIncludeResources.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyPolicyDetailActionIncludeResources
+ {
+ ///
+ /// Specifies whether the lifecycle action should apply to distributed AMIs.
+ ///
+ public readonly bool? Amis;
+ ///
+ /// Specifies whether the lifecycle action should apply to distributed containers.
+ ///
+ public readonly bool? Containers;
+ ///
+ /// Specifies whether the lifecycle action should apply to snapshots associated with distributed AMIs.
+ ///
+ public readonly bool? Snapshots;
+
+ [OutputConstructor]
+ private LifecyclePolicyPolicyDetailActionIncludeResources(
+ bool? amis,
+
+ bool? containers,
+
+ bool? snapshots)
+ {
+ Amis = amis;
+ Containers = containers;
+ Snapshots = snapshots;
+ }
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRules.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRules.cs
new file mode 100644
index 00000000000..7e1e1e19a1d
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRules.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyPolicyDetailExclusionRules
+ {
+ ///
+ /// Lists configuration values that apply to AMIs that Image Builder should exclude from the lifecycle action. Detailed below.
+ ///
+ public readonly Outputs.LifecyclePolicyPolicyDetailExclusionRulesAmis? Amis;
+ ///
+ /// Contains a list of tags that Image Builder uses to skip lifecycle actions for Image Builder image resources that have them.
+ ///
+ public readonly ImmutableDictionary? TagMap;
+
+ [OutputConstructor]
+ private LifecyclePolicyPolicyDetailExclusionRules(
+ Outputs.LifecyclePolicyPolicyDetailExclusionRulesAmis? amis,
+
+ ImmutableDictionary? tagMap)
+ {
+ Amis = amis;
+ TagMap = tagMap;
+ }
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRulesAmis.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRulesAmis.cs
new file mode 100644
index 00000000000..29cf49c6d69
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRulesAmis.cs
@@ -0,0 +1,56 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyPolicyDetailExclusionRulesAmis
+ {
+ ///
+ /// Configures whether public AMIs are excluded from the lifecycle action.
+ ///
+ public readonly bool? IsPublic;
+ ///
+ /// Specifies configuration details for Image Builder to exclude the most recent resources from lifecycle actions. Detailed below.
+ ///
+ public readonly Outputs.LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched? LastLaunched;
+ ///
+ /// Configures AWS Regions that are excluded from the lifecycle action.
+ ///
+ public readonly ImmutableArray Regions;
+ ///
+ /// Specifies AWS accounts whose resources are excluded from the lifecycle action.
+ ///
+ public readonly ImmutableArray SharedAccounts;
+ ///
+ /// Lists tags that should be excluded from lifecycle actions for the AMIs that have them.
+ ///
+ public readonly ImmutableDictionary? TagMap;
+
+ [OutputConstructor]
+ private LifecyclePolicyPolicyDetailExclusionRulesAmis(
+ bool? isPublic,
+
+ Outputs.LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched? lastLaunched,
+
+ ImmutableArray regions,
+
+ ImmutableArray sharedAccounts,
+
+ ImmutableDictionary? tagMap)
+ {
+ IsPublic = isPublic;
+ LastLaunched = lastLaunched;
+ Regions = regions;
+ SharedAccounts = sharedAccounts;
+ TagMap = tagMap;
+ }
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched.cs
new file mode 100644
index 00000000000..2bb39d9f7c2
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched
+ {
+ ///
+ /// Defines the unit of time that the lifecycle policy uses to calculate elapsed time since the last instance launched from the AMI. For example: days, weeks, months, or years. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.
+ ///
+ public readonly string Unit;
+ ///
+ /// The integer number of units for the time period. For example 6 (months).
+ ///
+ public readonly int Value;
+
+ [OutputConstructor]
+ private LifecyclePolicyPolicyDetailExclusionRulesAmisLastLaunched(
+ string unit,
+
+ int value)
+ {
+ Unit = unit;
+ Value = value;
+ }
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailFilter.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailFilter.cs
new file mode 100644
index 00000000000..371745bdb86
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyPolicyDetailFilter.cs
@@ -0,0 +1,51 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyPolicyDetailFilter
+ {
+ ///
+ /// For age-based filters, this is the number of resources to keep on hand after the lifecycle DELETE action is applied. Impacted resources are only deleted if you have more than this number of resources. If you have fewer resources than this number, the impacted resource is not deleted.
+ ///
+ public readonly int? RetainAtLeast;
+ ///
+ /// Filter resources based on either age or count. Valid values: `AGE` or `COUNT`.
+ ///
+ public readonly string Type;
+ ///
+ /// Defines the unit of time that the lifecycle policy uses to determine impacted resources. This is required for age-based rules. Valid values: `DAYS`, `WEEKS`, `MONTHS` or `YEARS`.
+ ///
+ public readonly string? Unit;
+ ///
+ /// The number of units for the time period or for the count. For example, a value of 6 might refer to six months or six AMIs.
+ ///
+ /// The following arguments are optional:
+ ///
+ public readonly int Value;
+
+ [OutputConstructor]
+ private LifecyclePolicyPolicyDetailFilter(
+ int? retainAtLeast,
+
+ string type,
+
+ string? unit,
+
+ int value)
+ {
+ RetainAtLeast = retainAtLeast;
+ Type = type;
+ Unit = unit;
+ Value = value;
+ }
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyResourceSelection.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyResourceSelection.cs
new file mode 100644
index 00000000000..9e151dc92dd
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyResourceSelection.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyResourceSelection
+ {
+ ///
+ /// A list of recipe that are used as selection criteria for the output images that the lifecycle policy applies to. Detailed below.
+ ///
+ public readonly ImmutableArray Recipes;
+ ///
+ /// A list of tags that are used as selection criteria for the Image Builder image resources that the lifecycle policy applies to.
+ ///
+ public readonly ImmutableDictionary? TagMap;
+
+ [OutputConstructor]
+ private LifecyclePolicyResourceSelection(
+ ImmutableArray recipes,
+
+ ImmutableDictionary? tagMap)
+ {
+ Recipes = recipes;
+ TagMap = tagMap;
+ }
+ }
+}
diff --git a/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyResourceSelectionRecipe.cs b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyResourceSelectionRecipe.cs
new file mode 100644
index 00000000000..27889954821
--- /dev/null
+++ b/sdk/dotnet/ImageBuilder/Outputs/LifecyclePolicyResourceSelectionRecipe.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ImageBuilder.Outputs
+{
+
+ [OutputType]
+ public sealed class LifecyclePolicyResourceSelectionRecipe
+ {
+ ///
+ /// The name of an Image Builder recipe that the lifecycle policy uses for resource selection.
+ ///
+ public readonly string Name;
+ ///
+ /// The version of the Image Builder recipe specified by the name field.
+ ///
+ public readonly string SemanticVersion;
+
+ [OutputConstructor]
+ private LifecyclePolicyResourceSelectionRecipe(
+ string name,
+
+ string semanticVersion)
+ {
+ Name = name;
+ SemanticVersion = semanticVersion;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/FirehoseDeliveryStream.cs b/sdk/dotnet/Kinesis/FirehoseDeliveryStream.cs
index e6631941af1..8dbb034f031 100644
--- a/sdk/dotnet/Kinesis/FirehoseDeliveryStream.cs
+++ b/sdk/dotnet/Kinesis/FirehoseDeliveryStream.cs
@@ -750,6 +750,118 @@ namespace Pulumi.Aws.Kinesis
/// });
/// ```
///
+ /// ### Iceberg Destination
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Aws = Pulumi.Aws;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var current = Aws.GetCallerIdentity.Invoke();
+ ///
+ /// var currentGetPartition = Aws.GetPartition.Invoke();
+ ///
+ /// var currentGetRegion = Aws.GetRegion.Invoke();
+ ///
+ /// var bucket = new Aws.S3.BucketV2("bucket", new()
+ /// {
+ /// Bucket = "test-bucket",
+ /// ForceDestroy = true,
+ /// });
+ ///
+ /// var test = new Aws.Glue.CatalogDatabase("test", new()
+ /// {
+ /// Name = "test",
+ /// });
+ ///
+ /// var testCatalogTable = new Aws.Glue.CatalogTable("test", new()
+ /// {
+ /// Name = "test",
+ /// DatabaseName = test.Name,
+ /// Parameters =
+ /// {
+ /// { "format", "parquet" },
+ /// },
+ /// TableType = "EXTERNAL_TABLE",
+ /// OpenTableFormatInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputArgs
+ /// {
+ /// IcebergInput = new Aws.Glue.Inputs.CatalogTableOpenTableFormatInputIcebergInputArgs
+ /// {
+ /// MetadataOperation = "CREATE",
+ /// Version = "2",
+ /// },
+ /// },
+ /// StorageDescriptor = new Aws.Glue.Inputs.CatalogTableStorageDescriptorArgs
+ /// {
+ /// Location = bucket.Id.Apply(id => $"s3://{id}"),
+ /// Columns = new[]
+ /// {
+ /// new Aws.Glue.Inputs.CatalogTableStorageDescriptorColumnArgs
+ /// {
+ /// Name = "my_column_1",
+ /// Type = "int",
+ /// },
+ /// },
+ /// },
+ /// });
+ ///
+ /// var testStream = new Aws.Kinesis.FirehoseDeliveryStream("test_stream", new()
+ /// {
+ /// Name = "kinesis-firehose-test-stream",
+ /// Destination = "iceberg",
+ /// IcebergConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationArgs
+ /// {
+ /// RoleArn = firehoseRole.Arn,
+ /// CatalogArn = Output.Tuple(currentGetPartition, currentGetRegion, current).Apply(values =>
+ /// {
+ /// var currentGetPartition = values.Item1;
+ /// var currentGetRegion = values.Item2;
+ /// var current = values.Item3;
+ /// return $"arn:{currentGetPartition.Apply(getPartitionResult => getPartitionResult.Partition)}:glue:{currentGetRegion.Apply(getRegionResult => getRegionResult.Name)}:{current.Apply(getCallerIdentityResult => getCallerIdentityResult.AccountId)}:catalog";
+ /// }),
+ /// BufferingSize = 10,
+ /// BufferingInterval = 400,
+ /// S3Configuration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs
+ /// {
+ /// RoleArn = firehoseRole.Arn,
+ /// BucketArn = bucket.Arn,
+ /// },
+ /// DestinationTableConfigurations = new[]
+ /// {
+ /// new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs
+ /// {
+ /// DatabaseName = test.Name,
+ /// TableName = testCatalogTable.Name,
+ /// },
+ /// },
+ /// ProcessingConfiguration = new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs
+ /// {
+ /// Enabled = true,
+ /// Processors = new[]
+ /// {
+ /// new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs
+ /// {
+ /// Type = "Lambda",
+ /// Parameters = new[]
+ /// {
+ /// new Aws.Kinesis.Inputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs
+ /// {
+ /// ParameterName = "LambdaArn",
+ /// ParameterValue = $"{lambdaProcessor.Arn}:$LATEST",
+ /// },
+ /// },
+ /// },
+ /// },
+ /// },
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
/// ### Splunk Destination
///
/// ```csharp
@@ -923,6 +1035,12 @@ public partial class FirehoseDeliveryStream : global::Pulumi.CustomResource
[Output("httpEndpointConfiguration")]
public Output HttpEndpointConfiguration { get; private set; } = null!;
+ ///
+ /// Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.
+ ///
+ [Output("icebergConfiguration")]
+ public Output IcebergConfiguration { get; private set; } = null!;
+
///
/// The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.
///
@@ -1073,6 +1191,12 @@ public sealed class FirehoseDeliveryStreamArgs : global::Pulumi.ResourceArgs
[Input("httpEndpointConfiguration")]
public Input? HttpEndpointConfiguration { get; set; }
+ ///
+ /// Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.
+ ///
+ [Input("icebergConfiguration")]
+ public Input? IcebergConfiguration { get; set; }
+
///
/// The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.
///
@@ -1185,6 +1309,12 @@ public sealed class FirehoseDeliveryStreamState : global::Pulumi.ResourceArgs
[Input("httpEndpointConfiguration")]
public Input? HttpEndpointConfiguration { get; set; }
+ ///
+ /// Configuration options when `destination` is `iceberg`. See `iceberg_configuration` block below for details.
+ ///
+ [Input("icebergConfiguration")]
+ public Input? IcebergConfiguration { get; set; }
+
///
/// The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesis_source_configuration` block below for details.
///
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.cs
index 3717996752a..f7c3d2b3c00 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorGetArgs.cs
index 6004b57ab02..16bd2b23a52 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.cs
index 3417eb68394..51cdb732885 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
index 6780b3ebec5..697ec3f5e4b 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.cs
index 79f11adf247..43bcf480b07 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorGetArgs.cs
index 1ae2f8bba95..fddd7ec9108 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.cs
index 4c84723f745..1b4ba2ae3a1 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
index d2fb93aaf43..3cff48b1d2d 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorArgs.cs
index cb5dd8e4803..d74980694f6 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorGetArgs.cs
index 3990d45a172..23a1975f58a 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterArgs.cs
index d2202316922..0df7ce2b0d1 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
index 2e0b963e953..e165a7d170b 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationArgs.cs
new file mode 100644
index 00000000000..9032baa22f3
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationArgs.cs
@@ -0,0 +1,83 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Buffer incoming data for the specified period of time, in seconds between 0 and 900, before delivering it to the destination. The default value is 300.
+ ///
+ [Input("bufferingInterval")]
+ public Input? BufferingInterval { get; set; }
+
+ ///
+ /// Buffer incoming data to the specified size, in MBs between 1 and 128, before delivering it to the destination. The default value is 5.
+ ///
+ [Input("bufferingSize")]
+ public Input? BufferingSize { get; set; }
+
+ ///
+ /// Glue catalog ARN identifier of the destination Apache Iceberg Tables. You must specify the ARN in the format `arn:aws:glue:region:account-id:catalog`
+ ///
+ [Input("catalogArn", required: true)]
+ public Input CatalogArn { get; set; } = null!;
+
+ ///
+ /// The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.
+ ///
+ [Input("cloudwatchLoggingOptions")]
+ public Input? CloudwatchLoggingOptions { get; set; }
+
+ [Input("destinationTableConfigurations")]
+ private InputList? _destinationTableConfigurations;
+
+ ///
+ /// Destination table configurations which Firehose uses to deliver data to Apache Iceberg Tables. Firehose will write data with insert if table specific configuration is not provided. See `destination_table_configuration` block below for details.
+ ///
+ public InputList DestinationTableConfigurations
+ {
+ get => _destinationTableConfigurations ?? (_destinationTableConfigurations = new InputList());
+ set => _destinationTableConfigurations = value;
+ }
+
+ ///
+ /// The data processing configuration. See `processing_configuration` block below for details.
+ ///
+ [Input("processingConfiguration")]
+ public Input? ProcessingConfiguration { get; set; }
+
+ ///
+ /// The period of time, in seconds between 0 to 7200, during which Firehose retries to deliver data to the specified destination.
+ ///
+ [Input("retryDuration")]
+ public Input? RetryDuration { get; set; }
+
+ ///
+ /// The ARN of the IAM role to be assumed by Firehose for calling Apache Iceberg Tables.
+ ///
+ [Input("roleArn", required: true)]
+ public Input RoleArn { get; set; } = null!;
+
+ [Input("s3BackupMode")]
+ public Input? S3BackupMode { get; set; }
+
+ ///
+ /// The S3 Configuration. See `s3_configuration` block below for details.
+ ///
+ [Input("s3Configuration", required: true)]
+ public Input S3Configuration { get; set; } = null!;
+
+ public FirehoseDeliveryStreamIcebergConfigurationArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsArgs.cs
new file mode 100644
index 00000000000..64e206a72bd
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Enables or disables the logging. Defaults to `false`.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ ///
+ /// The CloudWatch group name for logging. This value is required if `enabled` is true.
+ ///
+ [Input("logGroupName")]
+ public Input? LogGroupName { get; set; }
+
+ ///
+ /// The CloudWatch log stream name for logging. This value is required if `enabled` is true.
+ ///
+ [Input("logStreamName")]
+ public Input? LogStreamName { get; set; }
+
+ public FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsGetArgs.cs
new file mode 100644
index 00000000000..155ee605dec
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Enables or disables the logging. Defaults to `false`.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ ///
+ /// The CloudWatch group name for logging. This value is required if `enabled` is true.
+ ///
+ [Input("logGroupName")]
+ public Input? LogGroupName { get; set; }
+
+ ///
+ /// The CloudWatch log stream name for logging. This value is required if `enabled` is true.
+ ///
+ [Input("logStreamName")]
+ public Input? LogStreamName { get; set; }
+
+ public FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsGetArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsGetArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptionsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs.cs
new file mode 100644
index 00000000000..3140a7ee481
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs.cs
@@ -0,0 +1,50 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The name of the Apache Iceberg database.
+ ///
+ [Input("databaseName", required: true)]
+ public Input DatabaseName { get; set; } = null!;
+
+ ///
+ /// The table specific S3 error output prefix. All the errors that occurred while delivering to this table will be prefixed with this value in S3 destination.
+ ///
+ [Input("s3ErrorOutputPrefix")]
+ public Input? S3ErrorOutputPrefix { get; set; }
+
+ ///
+ /// The name of the Apache Iceberg Table.
+ ///
+ [Input("tableName", required: true)]
+ public Input TableName { get; set; } = null!;
+
+ [Input("uniqueKeys")]
+ private InputList? _uniqueKeys;
+
+ ///
+ /// A list of unique keys for a given Apache Iceberg table. Firehose will use these for running Create, Update, or Delete operations on the given Iceberg table.
+ ///
+ public InputList UniqueKeys
+ {
+ get => _uniqueKeys ?? (_uniqueKeys = new InputList());
+ set => _uniqueKeys = value;
+ }
+
+ public FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationGetArgs.cs
new file mode 100644
index 00000000000..2cd276205e4
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationGetArgs.cs
@@ -0,0 +1,50 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The name of the Apache Iceberg database.
+ ///
+ [Input("databaseName", required: true)]
+ public Input DatabaseName { get; set; } = null!;
+
+ ///
+ /// The table specific S3 error output prefix. All the errors that occurred while delivering to this table will be prefixed with this value in S3 destination.
+ ///
+ [Input("s3ErrorOutputPrefix")]
+ public Input? S3ErrorOutputPrefix { get; set; }
+
+ ///
+ /// The name of the Apache Iceberg Table.
+ ///
+ [Input("tableName", required: true)]
+ public Input TableName { get; set; } = null!;
+
+ [Input("uniqueKeys")]
+ private InputList? _uniqueKeys;
+
+ ///
+ /// A list of unique keys for a given Apache Iceberg table. Firehose will use these for running Create, Update, or Delete operations on the given Iceberg table.
+ ///
+ public InputList UniqueKeys
+ {
+ get => _uniqueKeys ?? (_uniqueKeys = new InputList());
+ set => _uniqueKeys = value;
+ }
+
+ public FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationGetArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationGetArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfigurationGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationGetArgs.cs
new file mode 100644
index 00000000000..eb363fbc790
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationGetArgs.cs
@@ -0,0 +1,83 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Buffer incoming data for the specified period of time, in seconds between 0 and 900, before delivering it to the destination. The default value is 300.
+ ///
+ [Input("bufferingInterval")]
+ public Input? BufferingInterval { get; set; }
+
+ ///
+ /// Buffer incoming data to the specified size, in MBs between 1 and 128, before delivering it to the destination. The default value is 5.
+ ///
+ [Input("bufferingSize")]
+ public Input? BufferingSize { get; set; }
+
+ ///
+ /// Glue catalog ARN identifier of the destination Apache Iceberg Tables. You must specify the ARN in the format `arn:aws:glue:region:account-id:catalog`
+ ///
+ [Input("catalogArn", required: true)]
+ public Input CatalogArn { get; set; } = null!;
+
+ ///
+ /// The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.
+ ///
+ [Input("cloudwatchLoggingOptions")]
+ public Input? CloudwatchLoggingOptions { get; set; }
+
+ [Input("destinationTableConfigurations")]
+ private InputList? _destinationTableConfigurations;
+
+ ///
+ /// Destination table configurations which Firehose uses to deliver data to Apache Iceberg Tables. Firehose will write data with insert if table specific configuration is not provided. See `destination_table_configuration` block below for details.
+ ///
+ public InputList DestinationTableConfigurations
+ {
+ get => _destinationTableConfigurations ?? (_destinationTableConfigurations = new InputList());
+ set => _destinationTableConfigurations = value;
+ }
+
+ ///
+ /// The data processing configuration. See `processing_configuration` block below for details.
+ ///
+ [Input("processingConfiguration")]
+ public Input? ProcessingConfiguration { get; set; }
+
+ ///
+ /// The period of time, in seconds between 0 to 7200, during which Firehose retries to deliver data to the specified destination.
+ ///
+ [Input("retryDuration")]
+ public Input? RetryDuration { get; set; }
+
+ ///
+ /// The ARN of the IAM role to be assumed by Firehose for calling Apache Iceberg Tables.
+ ///
+ [Input("roleArn", required: true)]
+ public Input RoleArn { get; set; } = null!;
+
+ [Input("s3BackupMode")]
+ public Input? S3BackupMode { get; set; }
+
+ ///
+ /// The S3 Configuration. See `s3_configuration` block below for details.
+ ///
+ [Input("s3Configuration", required: true)]
+ public Input S3Configuration { get; set; } = null!;
+
+ public FirehoseDeliveryStreamIcebergConfigurationGetArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationGetArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs.cs
new file mode 100644
index 00000000000..2bd492d52c5
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Enables or disables data processing.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ [Input("processors")]
+ private InputList? _processors;
+
+ ///
+ /// Specifies the data processors as multiple blocks. See `processors` block below for details.
+ ///
+ public InputList Processors
+ {
+ get => _processors ?? (_processors = new InputList());
+ set => _processors = value;
+ }
+
+ public FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationGetArgs.cs
new file mode 100644
index 00000000000..aea2cd193c9
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Enables or disables data processing.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ [Input("processors")]
+ private InputList? _processors;
+
+ ///
+ /// Specifies the data processors as multiple blocks. See `processors` block below for details.
+ ///
+ public InputList Processors
+ {
+ get => _processors ?? (_processors = new InputList());
+ set => _processors = value;
+ }
+
+ public FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationGetArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationGetArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs.cs
new file mode 100644
index 00000000000..e26b5679eec
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("parameters")]
+ private InputList? _parameters;
+
+ ///
+ /// Specifies the processor parameters as multiple blocks. See `parameters` block below for details.
+ ///
+ public InputList Parameters
+ {
+ get => _parameters ?? (_parameters = new InputList());
+ set => _parameters = value;
+ }
+
+ ///
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
+ ///
+ [Input("type", required: true)]
+ public Input Type { get; set; } = null!;
+
+ public FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorGetArgs.cs
new file mode 100644
index 00000000000..10817112ea9
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorGetArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("parameters")]
+ private InputList? _parameters;
+
+ ///
+ /// Specifies the processor parameters as multiple blocks. See `parameters` block below for details.
+ ///
+ public InputList Parameters
+ {
+ get => _parameters ?? (_parameters = new InputList());
+ set => _parameters = value;
+ }
+
+ ///
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
+ ///
+ [Input("type", required: true)]
+ public Input Type { get; set; } = null!;
+
+ public FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorGetArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorGetArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs.cs
new file mode 100644
index 00000000000..d2e2486e1ba
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
+ ///
+ [Input("parameterName", required: true)]
+ public Input ParameterName { get; set; } = null!;
+
+ ///
+ /// Parameter value. Must be between 1 and 512 length (inclusive). When providing a Lambda ARN, you should specify the resource version as well.
+ ///
+ /// > **NOTE:** Parameters with default values, including `NumberOfRetries`(default: 3), `RoleArn`(default: firehose role ARN), `BufferSizeInMBs`(default: 1), and `BufferIntervalInSeconds`(default: 60), are not stored in Pulumi state. To prevent perpetual differences, it is therefore recommended to only include parameters with non-default values.
+ ///
+ [Input("parameterValue", required: true)]
+ public Input ParameterValue { get; set; } = null!;
+
+ public FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
new file mode 100644
index 00000000000..94a33c8de57
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
+ ///
+ [Input("parameterName", required: true)]
+ public Input ParameterName { get; set; } = null!;
+
+ ///
+ /// Parameter value. Must be between 1 and 512 length (inclusive). When providing a Lambda ARN, you should specify the resource version as well.
+ ///
+ /// > **NOTE:** Parameters with default values, including `NumberOfRetries`(default: 3), `RoleArn`(default: firehose role ARN), `BufferSizeInMBs`(default: 1), and `BufferIntervalInSeconds`(default: 60), are not stored in Pulumi state. To prevent perpetual differences, it is therefore recommended to only include parameters with non-default values.
+ ///
+ [Input("parameterValue", required: true)]
+ public Input ParameterValue { get; set; } = null!;
+
+ public FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterGetArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterGetArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameterGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs.cs
new file mode 100644
index 00000000000..1a11c22e035
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs.cs
@@ -0,0 +1,76 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The ARN of the S3 bucket
+ ///
+ [Input("bucketArn", required: true)]
+ public Input BucketArn { get; set; } = null!;
+
+ ///
+ /// Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 300.
+ ///
+ [Input("bufferingInterval")]
+ public Input? BufferingInterval { get; set; }
+
+ ///
+ /// Buffer incoming data to the specified size, in MBs, before delivering it to the destination. The default value is 5.
+ /// We recommend setting SizeInMBs to a value greater than the amount of data you typically ingest into the delivery stream in 10 seconds. For example, if you typically ingest data at 1 MB/sec set SizeInMBs to be 10 MB or higher.
+ ///
+ [Input("bufferingSize")]
+ public Input? BufferingSize { get; set; }
+
+ ///
+ /// The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.
+ ///
+ [Input("cloudwatchLoggingOptions")]
+ public Input? CloudwatchLoggingOptions { get; set; }
+
+ ///
+ /// The compression format. If no value is specified, the default is `UNCOMPRESSED`. Other supported values are `GZIP`, `ZIP`, `Snappy`, & `HADOOP_SNAPPY`.
+ ///
+ [Input("compressionFormat")]
+ public Input? CompressionFormat { get; set; }
+
+ ///
+ /// Prefix added to failed records before writing them to S3. Not currently supported for `redshift` destination. This prefix appears immediately following the bucket name. For information about how to specify this prefix, see [Custom Prefixes for Amazon S3 Objects](https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html).
+ ///
+ [Input("errorOutputPrefix")]
+ public Input? ErrorOutputPrefix { get; set; }
+
+ ///
+ /// Specifies the KMS key ARN the stream will use to encrypt data. If not set, no encryption will
+ /// be used.
+ ///
+ [Input("kmsKeyArn")]
+ public Input? KmsKeyArn { get; set; }
+
+ ///
+ /// The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket
+ ///
+ [Input("prefix")]
+ public Input? Prefix { get; set; }
+
+ ///
+ /// The ARN of the AWS credentials.
+ ///
+ [Input("roleArn", required: true)]
+ public Input RoleArn { get; set; } = null!;
+
+ public FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsArgs.cs
new file mode 100644
index 00000000000..42f31a843ad
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Enables or disables the logging. Defaults to `false`.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ ///
+ /// The CloudWatch group name for logging. This value is required if `enabled` is true.
+ ///
+ [Input("logGroupName")]
+ public Input? LogGroupName { get; set; }
+
+ ///
+ /// The CloudWatch log stream name for logging. This value is required if `enabled` is true.
+ ///
+ [Input("logStreamName")]
+ public Input? LogStreamName { get; set; }
+
+ public FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsGetArgs.cs
new file mode 100644
index 00000000000..63bc0548eaa
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Enables or disables the logging. Defaults to `false`.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ ///
+ /// The CloudWatch group name for logging. This value is required if `enabled` is true.
+ ///
+ [Input("logGroupName")]
+ public Input? LogGroupName { get; set; }
+
+ ///
+ /// The CloudWatch log stream name for logging. This value is required if `enabled` is true.
+ ///
+ [Input("logStreamName")]
+ public Input? LogStreamName { get; set; }
+
+ public FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsGetArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsGetArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptionsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationGetArgs.cs
new file mode 100644
index 00000000000..f7c832a3aac
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationGetArgs.cs
@@ -0,0 +1,76 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Inputs
+{
+
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The ARN of the S3 bucket
+ ///
+ [Input("bucketArn", required: true)]
+ public Input BucketArn { get; set; } = null!;
+
+ ///
+ /// Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 300.
+ ///
+ [Input("bufferingInterval")]
+ public Input? BufferingInterval { get; set; }
+
+ ///
+ /// Buffer incoming data to the specified size, in MBs, before delivering it to the destination. The default value is 5.
+ /// We recommend setting SizeInMBs to a value greater than the amount of data you typically ingest into the delivery stream in 10 seconds. For example, if you typically ingest data at 1 MB/sec set SizeInMBs to be 10 MB or higher.
+ ///
+ [Input("bufferingSize")]
+ public Input? BufferingSize { get; set; }
+
+ ///
+ /// The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.
+ ///
+ [Input("cloudwatchLoggingOptions")]
+ public Input? CloudwatchLoggingOptions { get; set; }
+
+ ///
+ /// The compression format. If no value is specified, the default is `UNCOMPRESSED`. Other supported values are `GZIP`, `ZIP`, `Snappy`, & `HADOOP_SNAPPY`.
+ ///
+ [Input("compressionFormat")]
+ public Input? CompressionFormat { get; set; }
+
+ ///
+ /// Prefix added to failed records before writing them to S3. Not currently supported for `redshift` destination. This prefix appears immediately following the bucket name. For information about how to specify this prefix, see [Custom Prefixes for Amazon S3 Objects](https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html).
+ ///
+ [Input("errorOutputPrefix")]
+ public Input? ErrorOutputPrefix { get; set; }
+
+ ///
+ /// Specifies the KMS key ARN the stream will use to encrypt data. If not set, no encryption will
+ /// be used.
+ ///
+ [Input("kmsKeyArn")]
+ public Input? KmsKeyArn { get; set; }
+
+ ///
+ /// The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket
+ ///
+ [Input("prefix")]
+ public Input? Prefix { get; set; }
+
+ ///
+ /// The ARN of the AWS credentials.
+ ///
+ [Input("roleArn", required: true)]
+ public Input RoleArn { get; set; } = null!;
+
+ public FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationGetArgs()
+ {
+ }
+ public static new FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationGetArgs Empty => new FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.cs
index ceba2b5f110..a7df82a4536 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorGetArgs.cs
index 537aaa03a6c..fdd595e36c8 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.cs
index 4753e4de48c..e39293209bd 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
index 8d94feb4e86..88d9d86a15e 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.cs
index f9e3ecad8ed..602ae8f9e07 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorGetArgs.cs
index 4da0d94c97f..2b716bb6c2a 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.cs
index be13334943c..43cccdc5574 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
index 4610014a2b2..afea07655e7 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorArgs.cs
index f3a1e6acc35..2afeda356f9 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorGetArgs.cs
index 3ebaf080d2e..3a8bfeeb038 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterArgs.cs
index 6c3f37b4a82..3b4fa44d6b9 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
index 4efd85926fd..a517624c198 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorArgs.cs
index a6dca8a5463..4b24baaf7ee 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorGetArgs.cs
index 1b0abee7367..e0548acf130 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterArgs.cs
index 0e53aed81fa..1e09e485e3e 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
index 204d68e1f0e..c5cd22437ca 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorArgs.cs
index 68f5f4f2115..a33b9c87082 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorGetArgs.cs
index 8d8a2ebc0f6..82d165806cc 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorGetArgs.cs
@@ -25,7 +25,7 @@ public InputList
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
[Input("type", required: true)]
public Input Type { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterArgs.cs
index f4fe455551f..685c615eda9 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterGetArgs.cs b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
index f23a23264fb..8f32abca67d 100644
--- a/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
+++ b/sdk/dotnet/Kinesis/Inputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterGetArgs.cs
@@ -13,7 +13,7 @@ namespace Pulumi.Aws.Kinesis.Inputs
public sealed class FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameterGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
[Input("parameterName", required: true)]
public Input ParameterName { get; set; } = null!;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessor.cs
index 6925aebe915..ead4aacafaf 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessor.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessor.cs
@@ -18,7 +18,7 @@ public sealed class FirehoseDeliveryStreamElasticsearchConfigurationProcessingCo
///
public readonly ImmutableArray Parameters;
///
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
public readonly string Type;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameter.cs
index 1a03917676f..de46bd0752e 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameter.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameter.cs
@@ -14,7 +14,7 @@ namespace Pulumi.Aws.Kinesis.Outputs
public sealed class FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameter
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
public readonly string ParameterName;
///
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessor.cs
index 88f654cd7e0..df4894e290e 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessor.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessor.cs
@@ -18,7 +18,7 @@ public sealed class FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfi
///
public readonly ImmutableArray Parameters;
///
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
public readonly string Type;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameter.cs
index b4d5101d589..efdc4f2f43b 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameter.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameter.cs
@@ -14,7 +14,7 @@ namespace Pulumi.Aws.Kinesis.Outputs
public sealed class FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameter
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
public readonly string ParameterName;
///
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessor.cs
index 3ffb3df6a0e..db96ac5a842 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessor.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessor.cs
@@ -18,7 +18,7 @@ public sealed class FirehoseDeliveryStreamHttpEndpointConfigurationProcessingCon
///
public readonly ImmutableArray Parameters;
///
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
public readonly string Type;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameter.cs
index d3a676b1219..2184dba46a8 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameter.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameter.cs
@@ -14,7 +14,7 @@ namespace Pulumi.Aws.Kinesis.Outputs
public sealed class FirehoseDeliveryStreamHttpEndpointConfigurationProcessingConfigurationProcessorParameter
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
public readonly string ParameterName;
///
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfiguration.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfiguration.cs
new file mode 100644
index 00000000000..f51e5785663
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfiguration.cs
@@ -0,0 +1,88 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Outputs
+{
+
+ [OutputType]
+ public sealed class FirehoseDeliveryStreamIcebergConfiguration
+ {
+ ///
+ /// Buffer incoming data for the specified period of time, in seconds between 0 and 900, before delivering it to the destination. The default value is 300.
+ ///
+ public readonly int? BufferingInterval;
+ ///
+ /// Buffer incoming data to the specified size, in MBs between 1 and 128, before delivering it to the destination. The default value is 5.
+ ///
+ public readonly int? BufferingSize;
+ ///
+ /// Glue catalog ARN identifier of the destination Apache Iceberg Tables. You must specify the ARN in the format `arn:aws:glue:region:account-id:catalog`
+ ///
+ public readonly string CatalogArn;
+ ///
+ /// The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.
+ ///
+ public readonly Outputs.FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions? CloudwatchLoggingOptions;
+ ///
+ /// Destination table configurations which Firehose uses to deliver data to Apache Iceberg Tables. Firehose will write data with insert if table specific configuration is not provided. See `destination_table_configuration` block below for details.
+ ///
+ public readonly ImmutableArray DestinationTableConfigurations;
+ ///
+ /// The data processing configuration. See `processing_configuration` block below for details.
+ ///
+ public readonly Outputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration? ProcessingConfiguration;
+ ///
+ /// The period of time, in seconds between 0 to 7200, during which Firehose retries to deliver data to the specified destination.
+ ///
+ public readonly int? RetryDuration;
+ ///
+ /// The ARN of the IAM role to be assumed by Firehose for calling Apache Iceberg Tables.
+ ///
+ public readonly string RoleArn;
+ public readonly string? S3BackupMode;
+ ///
+ /// The S3 Configuration. See `s3_configuration` block below for details.
+ ///
+ public readonly Outputs.FirehoseDeliveryStreamIcebergConfigurationS3Configuration S3Configuration;
+
+ [OutputConstructor]
+ private FirehoseDeliveryStreamIcebergConfiguration(
+ int? bufferingInterval,
+
+ int? bufferingSize,
+
+ string catalogArn,
+
+ Outputs.FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions? cloudwatchLoggingOptions,
+
+ ImmutableArray destinationTableConfigurations,
+
+ Outputs.FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration? processingConfiguration,
+
+ int? retryDuration,
+
+ string roleArn,
+
+ string? s3BackupMode,
+
+ Outputs.FirehoseDeliveryStreamIcebergConfigurationS3Configuration s3Configuration)
+ {
+ BufferingInterval = bufferingInterval;
+ BufferingSize = bufferingSize;
+ CatalogArn = catalogArn;
+ CloudwatchLoggingOptions = cloudwatchLoggingOptions;
+ DestinationTableConfigurations = destinationTableConfigurations;
+ ProcessingConfiguration = processingConfiguration;
+ RetryDuration = retryDuration;
+ RoleArn = roleArn;
+ S3BackupMode = s3BackupMode;
+ S3Configuration = s3Configuration;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions.cs
new file mode 100644
index 00000000000..27582d1222a
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Outputs
+{
+
+ [OutputType]
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions
+ {
+ ///
+ /// Enables or disables the logging. Defaults to `false`.
+ ///
+ public readonly bool? Enabled;
+ ///
+ /// The CloudWatch group name for logging. This value is required if `enabled` is true.
+ ///
+ public readonly string? LogGroupName;
+ ///
+ /// The CloudWatch log stream name for logging. This value is required if `enabled` is true.
+ ///
+ public readonly string? LogStreamName;
+
+ [OutputConstructor]
+ private FirehoseDeliveryStreamIcebergConfigurationCloudwatchLoggingOptions(
+ bool? enabled,
+
+ string? logGroupName,
+
+ string? logStreamName)
+ {
+ Enabled = enabled;
+ LogGroupName = logGroupName;
+ LogStreamName = logStreamName;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration.cs
new file mode 100644
index 00000000000..38a94d7841b
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration.cs
@@ -0,0 +1,49 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Outputs
+{
+
+ [OutputType]
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration
+ {
+ ///
+ /// The name of the Apache Iceberg database.
+ ///
+ public readonly string DatabaseName;
+ ///
+ /// The table specific S3 error output prefix. All the errors that occurred while delivering to this table will be prefixed with this value in S3 destination.
+ ///
+ public readonly string? S3ErrorOutputPrefix;
+ ///
+ /// The name of the Apache Iceberg Table.
+ ///
+ public readonly string TableName;
+ ///
+ /// A list of unique keys for a given Apache Iceberg table. Firehose will use these for running Create, Update, or Delete operations on the given Iceberg table.
+ ///
+ public readonly ImmutableArray UniqueKeys;
+
+ [OutputConstructor]
+ private FirehoseDeliveryStreamIcebergConfigurationDestinationTableConfiguration(
+ string databaseName,
+
+ string? s3ErrorOutputPrefix,
+
+ string tableName,
+
+ ImmutableArray uniqueKeys)
+ {
+ DatabaseName = databaseName;
+ S3ErrorOutputPrefix = s3ErrorOutputPrefix;
+ TableName = tableName;
+ UniqueKeys = uniqueKeys;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration.cs
new file mode 100644
index 00000000000..d8b05effdc0
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Outputs
+{
+
+ [OutputType]
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration
+ {
+ ///
+ /// Enables or disables data processing.
+ ///
+ public readonly bool? Enabled;
+ ///
+ /// Specifies the data processors as multiple blocks. See `processors` block below for details.
+ ///
+ public readonly ImmutableArray Processors;
+
+ [OutputConstructor]
+ private FirehoseDeliveryStreamIcebergConfigurationProcessingConfiguration(
+ bool? enabled,
+
+ ImmutableArray processors)
+ {
+ Enabled = enabled;
+ Processors = processors;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor.cs
new file mode 100644
index 00000000000..f3a9a17b74d
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Outputs
+{
+
+ [OutputType]
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor
+ {
+ ///
+ /// Specifies the processor parameters as multiple blocks. See `parameters` block below for details.
+ ///
+ public readonly ImmutableArray Parameters;
+ ///
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
+ ///
+ public readonly string Type;
+
+ [OutputConstructor]
+ private FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessor(
+ ImmutableArray parameters,
+
+ string type)
+ {
+ Parameters = parameters;
+ Type = type;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter.cs
new file mode 100644
index 00000000000..ad00ffcb678
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter.cs
@@ -0,0 +1,37 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Outputs
+{
+
+ [OutputType]
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter
+ {
+ ///
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
+ ///
+ public readonly string ParameterName;
+ ///
+ /// Parameter value. Must be between 1 and 512 length (inclusive). When providing a Lambda ARN, you should specify the resource version as well.
+ ///
+ /// > **NOTE:** Parameters with default values, including `NumberOfRetries`(default: 3), `RoleArn`(default: firehose role ARN), `BufferSizeInMBs`(default: 1), and `BufferIntervalInSeconds`(default: 60), are not stored in Pulumi state. To prevent perpetual differences, it is therefore recommended to only include parameters with non-default values.
+ ///
+ public readonly string ParameterValue;
+
+ [OutputConstructor]
+ private FirehoseDeliveryStreamIcebergConfigurationProcessingConfigurationProcessorParameter(
+ string parameterName,
+
+ string parameterValue)
+ {
+ ParameterName = parameterName;
+ ParameterValue = parameterValue;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationS3Configuration.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationS3Configuration.cs
new file mode 100644
index 00000000000..3ad9930d557
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationS3Configuration.cs
@@ -0,0 +1,86 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Outputs
+{
+
+ [OutputType]
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationS3Configuration
+ {
+ ///
+ /// The ARN of the S3 bucket
+ ///
+ public readonly string BucketArn;
+ ///
+ /// Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 300.
+ ///
+ public readonly int? BufferingInterval;
+ ///
+ /// Buffer incoming data to the specified size, in MBs, before delivering it to the destination. The default value is 5.
+ /// We recommend setting SizeInMBs to a value greater than the amount of data you typically ingest into the delivery stream in 10 seconds. For example, if you typically ingest data at 1 MB/sec set SizeInMBs to be 10 MB or higher.
+ ///
+ public readonly int? BufferingSize;
+ ///
+ /// The CloudWatch Logging Options for the delivery stream. See `cloudwatch_logging_options` block below for details.
+ ///
+ public readonly Outputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions? CloudwatchLoggingOptions;
+ ///
+ /// The compression format. If no value is specified, the default is `UNCOMPRESSED`. Other supported values are `GZIP`, `ZIP`, `Snappy`, & `HADOOP_SNAPPY`.
+ ///
+ public readonly string? CompressionFormat;
+ ///
+ /// Prefix added to failed records before writing them to S3. Not currently supported for `redshift` destination. This prefix appears immediately following the bucket name. For information about how to specify this prefix, see [Custom Prefixes for Amazon S3 Objects](https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html).
+ ///
+ public readonly string? ErrorOutputPrefix;
+ ///
+ /// Specifies the KMS key ARN the stream will use to encrypt data. If not set, no encryption will
+ /// be used.
+ ///
+ public readonly string? KmsKeyArn;
+ ///
+ /// The "YYYY/MM/DD/HH" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket
+ ///
+ public readonly string? Prefix;
+ ///
+ /// The ARN of the AWS credentials.
+ ///
+ public readonly string RoleArn;
+
+ [OutputConstructor]
+ private FirehoseDeliveryStreamIcebergConfigurationS3Configuration(
+ string bucketArn,
+
+ int? bufferingInterval,
+
+ int? bufferingSize,
+
+ Outputs.FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions? cloudwatchLoggingOptions,
+
+ string? compressionFormat,
+
+ string? errorOutputPrefix,
+
+ string? kmsKeyArn,
+
+ string? prefix,
+
+ string roleArn)
+ {
+ BucketArn = bucketArn;
+ BufferingInterval = bufferingInterval;
+ BufferingSize = bufferingSize;
+ CloudwatchLoggingOptions = cloudwatchLoggingOptions;
+ CompressionFormat = compressionFormat;
+ ErrorOutputPrefix = errorOutputPrefix;
+ KmsKeyArn = kmsKeyArn;
+ Prefix = prefix;
+ RoleArn = roleArn;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions.cs
new file mode 100644
index 00000000000..8f4953c52ef
--- /dev/null
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Kinesis.Outputs
+{
+
+ [OutputType]
+ public sealed class FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions
+ {
+ ///
+ /// Enables or disables the logging. Defaults to `false`.
+ ///
+ public readonly bool? Enabled;
+ ///
+ /// The CloudWatch group name for logging. This value is required if `enabled` is true.
+ ///
+ public readonly string? LogGroupName;
+ ///
+ /// The CloudWatch log stream name for logging. This value is required if `enabled` is true.
+ ///
+ public readonly string? LogStreamName;
+
+ [OutputConstructor]
+ private FirehoseDeliveryStreamIcebergConfigurationS3ConfigurationCloudwatchLoggingOptions(
+ bool? enabled,
+
+ string? logGroupName,
+
+ string? logStreamName)
+ {
+ Enabled = enabled;
+ LogGroupName = logGroupName;
+ LogStreamName = logStreamName;
+ }
+ }
+}
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessor.cs
index 0a7c66d26a5..382061fba5e 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessor.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessor.cs
@@ -18,7 +18,7 @@ public sealed class FirehoseDeliveryStreamOpensearchConfigurationProcessingConfi
///
public readonly ImmutableArray Parameters;
///
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
public readonly string Type;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameter.cs
index 1b2ef60eefb..33fbc375818 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameter.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameter.cs
@@ -14,7 +14,7 @@ namespace Pulumi.Aws.Kinesis.Outputs
public sealed class FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameter
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
public readonly string ParameterName;
///
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessor.cs
index adc4a04a897..c9162a2f04d 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessor.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessor.cs
@@ -18,7 +18,7 @@ public sealed class FirehoseDeliveryStreamOpensearchserverlessConfigurationProce
///
public readonly ImmutableArray Parameters;
///
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
public readonly string Type;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameter.cs
index fd766763c2e..9d4039ab511 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameter.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameter.cs
@@ -14,7 +14,7 @@ namespace Pulumi.Aws.Kinesis.Outputs
public sealed class FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameter
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
public readonly string ParameterName;
///
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessor.cs
index 4e3f985bed8..553bc64b7be 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessor.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessor.cs
@@ -18,7 +18,7 @@ public sealed class FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigu
///
public readonly ImmutableArray Parameters;
///
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
public readonly string Type;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameter.cs
index f1166d37ec3..864f98196e3 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameter.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameter.cs
@@ -14,7 +14,7 @@ namespace Pulumi.Aws.Kinesis.Outputs
public sealed class FirehoseDeliveryStreamRedshiftConfigurationProcessingConfigurationProcessorParameter
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
public readonly string ParameterName;
///
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessor.cs
index 78448417004..562e338e4d7 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessor.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessor.cs
@@ -18,7 +18,7 @@ public sealed class FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfig
///
public readonly ImmutableArray Parameters;
///
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
public readonly string Type;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameter.cs
index 5b5ef04bf8a..55bf8e8694b 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameter.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameter.cs
@@ -14,7 +14,7 @@ namespace Pulumi.Aws.Kinesis.Outputs
public sealed class FirehoseDeliveryStreamSnowflakeConfigurationProcessingConfigurationProcessorParameter
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
public readonly string ParameterName;
///
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessor.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessor.cs
index 5011bf24aea..0bfd8c17a8b 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessor.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessor.cs
@@ -18,7 +18,7 @@ public sealed class FirehoseDeliveryStreamSplunkConfigurationProcessingConfigura
///
public readonly ImmutableArray Parameters;
///
- /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// The type of processor. Valid Values: `RecordDeAggregation`, `Lambda`, `MetadataExtraction`, `AppendDelimiterToRecord`, `Decompression`, `CloudWatchLogProcessing`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorType); so values not explicitly listed may also work.
///
public readonly string Type;
diff --git a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameter.cs b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameter.cs
index e808879a6be..a4148b59da2 100644
--- a/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameter.cs
+++ b/sdk/dotnet/Kinesis/Outputs/FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameter.cs
@@ -14,7 +14,7 @@ namespace Pulumi.Aws.Kinesis.Outputs
public sealed class FirehoseDeliveryStreamSplunkConfigurationProcessingConfigurationProcessorParameter
{
///
- /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`. Validation is done against [AWS SDK constants](https://docs.aws.amazon.com/sdk-for-go/api/service/firehose/#pkg-constants); so that values not explicitly listed may also work.
+ /// Parameter name. Valid Values: `LambdaArn`, `NumberOfRetries`, `MetadataExtractionQuery`, `JsonParsingEngine`, `RoleArn`, `BufferSizeInMBs`, `BufferIntervalInSeconds`, `SubRecordType`, `Delimiter`, `CompressionFormat`, `DataMessageExtraction`. Validation is done against [AWS SDK constants](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/firehose/types#ProcessorParameterName); so values not explicitly listed may also work.
///
public readonly string ParameterName;
///
diff --git a/sdk/dotnet/LB/GetLoadBalancer.cs b/sdk/dotnet/LB/GetLoadBalancer.cs
index b5b75a75318..7d775a0ad2b 100644
--- a/sdk/dotnet/LB/GetLoadBalancer.cs
+++ b/sdk/dotnet/LB/GetLoadBalancer.cs
@@ -169,6 +169,7 @@ public sealed class GetLoadBalancerResult
public readonly bool EnableTlsVersionAndCipherSuiteHeaders;
public readonly bool EnableWafFailOpen;
public readonly bool EnableXffClientPort;
+ public readonly bool EnableZonalShift;
public readonly string EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic;
///
/// The provider-assigned unique ID for this managed resource.
@@ -222,6 +223,8 @@ private GetLoadBalancerResult(
bool enableXffClientPort,
+ bool enableZonalShift,
+
string enforceSecurityGroupInboundRulesOnPrivateLinkTraffic,
string id,
@@ -268,6 +271,7 @@ private GetLoadBalancerResult(
EnableTlsVersionAndCipherSuiteHeaders = enableTlsVersionAndCipherSuiteHeaders;
EnableWafFailOpen = enableWafFailOpen;
EnableXffClientPort = enableXffClientPort;
+ EnableZonalShift = enableZonalShift;
EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic = enforceSecurityGroupInboundRulesOnPrivateLinkTraffic;
Id = id;
IdleTimeout = idleTimeout;
diff --git a/sdk/dotnet/LB/Listener.cs b/sdk/dotnet/LB/Listener.cs
index a5486c4335a..dda0701c9a6 100644
--- a/sdk/dotnet/LB/Listener.cs
+++ b/sdk/dotnet/LB/Listener.cs
@@ -413,6 +413,12 @@ public partial class Listener : global::Pulumi.CustomResource
[Output("tagsAll")]
public Output> TagsAll { get; private set; } = null!;
+ ///
+ /// TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.
+ ///
+ [Output("tcpIdleTimeoutSeconds")]
+ public Output TcpIdleTimeoutSeconds { get; private set; } = null!;
+
///
/// Create a Listener resource with the given unique name, arguments, and options.
@@ -531,6 +537,12 @@ public InputMap Tags
set => _tags = value;
}
+ ///
+ /// TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.
+ ///
+ [Input("tcpIdleTimeoutSeconds")]
+ public Input? TcpIdleTimeoutSeconds { get; set; }
+
public ListenerArgs()
{
}
@@ -626,6 +638,12 @@ public InputMap TagsAll
set => _tagsAll = value;
}
+ ///
+ /// TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between `60` and `6000` inclusive. Default: `350`.
+ ///
+ [Input("tcpIdleTimeoutSeconds")]
+ public Input? TcpIdleTimeoutSeconds { get; set; }
+
public ListenerState()
{
}
diff --git a/sdk/dotnet/LB/LoadBalancer.cs b/sdk/dotnet/LB/LoadBalancer.cs
index f5acaca7eaf..478193a52de 100644
--- a/sdk/dotnet/LB/LoadBalancer.cs
+++ b/sdk/dotnet/LB/LoadBalancer.cs
@@ -255,6 +255,12 @@ public partial class LoadBalancer : global::Pulumi.CustomResource
[Output("enableXffClientPort")]
public Output EnableXffClientPort { get; private set; } = null!;
+ ///
+ /// Whether zonal shift is enabled. Defaults to `false`.
+ ///
+ [Output("enableZonalShift")]
+ public Output EnableZonalShift { get; private set; } = null!;
+
///
/// Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.
///
@@ -476,6 +482,12 @@ public sealed class LoadBalancerArgs : global::Pulumi.ResourceArgs
[Input("enableXffClientPort")]
public Input? EnableXffClientPort { get; set; }
+ ///
+ /// Whether zonal shift is enabled. Defaults to `false`.
+ ///
+ [Input("enableZonalShift")]
+ public Input? EnableZonalShift { get; set; }
+
///
/// Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.
///
@@ -682,6 +694,12 @@ public sealed class LoadBalancerState : global::Pulumi.ResourceArgs
[Input("enableXffClientPort")]
public Input? EnableXffClientPort { get; set; }
+ ///
+ /// Whether zonal shift is enabled. Defaults to `false`.
+ ///
+ [Input("enableZonalShift")]
+ public Input? EnableZonalShift { get; set; }
+
///
/// Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`.
///
diff --git a/sdk/dotnet/LakeFormation/DataLakeSettings.cs b/sdk/dotnet/LakeFormation/DataLakeSettings.cs
index 09ed3ec923b..9a4e8c3ef9d 100644
--- a/sdk/dotnet/LakeFormation/DataLakeSettings.cs
+++ b/sdk/dotnet/LakeFormation/DataLakeSettings.cs
@@ -140,6 +140,27 @@ namespace Pulumi.Aws.LakeFormation
///
/// });
/// ```
+ ///
+ /// ### Change Cross Account Version
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Aws = Pulumi.Aws;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = new Aws.LakeFormation.DataLakeSettings("example", new()
+ /// {
+ /// Parameters =
+ /// {
+ /// { "CROSS_ACCOUNT_VERSION", "3" },
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
///
[AwsResourceType("aws:lakeformation/dataLakeSettings:DataLakeSettings")]
public partial class DataLakeSettings : global::Pulumi.CustomResource
@@ -158,8 +179,6 @@ public partial class DataLakeSettings : global::Pulumi.CustomResource
///
/// Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.
- ///
- /// > **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.
///
[Output("allowFullTableExternalDataAccess")]
public Output AllowFullTableExternalDataAccess { get; private set; } = null!;
@@ -194,6 +213,12 @@ public partial class DataLakeSettings : global::Pulumi.CustomResource
[Output("externalDataFilteringAllowLists")]
public Output> ExternalDataFilteringAllowLists { get; private set; } = null!;
+ ///
+ /// Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `"1"`, `"2"`, `"3"`, or `"4"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `"1"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `"1"`.
+ ///
+ [Output("parameters")]
+ public Output> Parameters { get; private set; } = null!;
+
///
/// Set of ARNs of AWS Lake Formation principals (IAM users or roles) with only view access to the resources.
///
@@ -202,6 +227,8 @@ public partial class DataLakeSettings : global::Pulumi.CustomResource
///
/// List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).
+ ///
+ /// > **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.
///
[Output("trustedResourceOwners")]
public Output> TrustedResourceOwners { get; private set; } = null!;
@@ -272,8 +299,6 @@ public InputList Admins
///
/// Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.
- ///
- /// > **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.
///
[Input("allowFullTableExternalDataAccess")]
public Input? AllowFullTableExternalDataAccess { get; set; }
@@ -332,6 +357,18 @@ public InputList ExternalDataFilteringAllowLists
set => _externalDataFilteringAllowLists = value;
}
+ [Input("parameters")]
+ private InputMap? _parameters;
+
+ ///
+ /// Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `"1"`, `"2"`, `"3"`, or `"4"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `"1"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `"1"`.
+ ///
+ public InputMap Parameters
+ {
+ get => _parameters ?? (_parameters = new InputMap());
+ set => _parameters = value;
+ }
+
[Input("readOnlyAdmins")]
private InputList? _readOnlyAdmins;
@@ -349,6 +386,8 @@ public InputList ReadOnlyAdmins
///
/// List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).
+ ///
+ /// > **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.
///
public InputList TrustedResourceOwners
{
@@ -384,8 +423,6 @@ public InputList Admins
///
/// Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.
- ///
- /// > **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, and/or `trusted_resource_owners` results in the setting being cleared.
///
[Input("allowFullTableExternalDataAccess")]
public Input? AllowFullTableExternalDataAccess { get; set; }
@@ -444,6 +481,18 @@ public InputList ExternalDataFilteringAllowLists
set => _externalDataFilteringAllowLists = value;
}
+ [Input("parameters")]
+ private InputMap? _parameters;
+
+ ///
+ /// Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `"1"`, `"2"`, `"3"`, or `"4"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `"1"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `"1"`.
+ ///
+ public InputMap Parameters
+ {
+ get => _parameters ?? (_parameters = new InputMap());
+ set => _parameters = value;
+ }
+
[Input("readOnlyAdmins")]
private InputList? _readOnlyAdmins;
@@ -461,6 +510,8 @@ public InputList ReadOnlyAdmins
///
/// List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).
+ ///
+ /// > **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.
///
public InputList TrustedResourceOwners
{
diff --git a/sdk/dotnet/LakeFormation/GetDataLakeSettings.cs b/sdk/dotnet/LakeFormation/GetDataLakeSettings.cs
index 5f19e192602..81591472e73 100644
--- a/sdk/dotnet/LakeFormation/GetDataLakeSettings.cs
+++ b/sdk/dotnet/LakeFormation/GetDataLakeSettings.cs
@@ -127,6 +127,10 @@ public sealed class GetDataLakeSettingsResult
///
public readonly string Id;
///
+ /// Key-value map of additional configuration. `CROSS_ACCOUNT_VERSION` will be set to values `"1"`, `"2"`, `"3"`, or `"4"`. `SET_CONTEXT` will also be returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `"1"`.
+ ///
+ public readonly ImmutableDictionary Parameters;
+ ///
/// List of ARNs of AWS Lake Formation principals (IAM users or roles) with only view access to the resources.
///
public readonly ImmutableArray ReadOnlyAdmins;
@@ -155,6 +159,8 @@ private GetDataLakeSettingsResult(
string id,
+ ImmutableDictionary parameters,
+
ImmutableArray readOnlyAdmins,
ImmutableArray trustedResourceOwners)
@@ -168,6 +174,7 @@ private GetDataLakeSettingsResult(
CreateTableDefaultPermissions = createTableDefaultPermissions;
ExternalDataFilteringAllowLists = externalDataFilteringAllowLists;
Id = id;
+ Parameters = parameters;
ReadOnlyAdmins = readOnlyAdmins;
TrustedResourceOwners = trustedResourceOwners;
}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyArgs.cs
new file mode 100644
index 00000000000..f96e63f3ccb
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyArgs.cs
@@ -0,0 +1,46 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicyArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies Availability Zone failure policy. See `policy.az`
+ ///
+ [Input("az")]
+ public Input? Az { get; set; }
+
+ ///
+ /// Specifies Infrastructure failure policy. See `policy.hardware`
+ ///
+ [Input("hardware")]
+ public Input? Hardware { get; set; }
+
+ ///
+ /// Specifies Region failure policy. `policy.region`
+ ///
+ [Input("region")]
+ public Input? Region { get; set; }
+
+ ///
+ /// Specifies Application failure policy. See `policy.software`
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("software")]
+ public Input? Software { get; set; }
+
+ public ResiliencyPolicyPolicyArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicyArgs Empty => new ResiliencyPolicyPolicyArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyAzArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyAzArgs.cs
new file mode 100644
index 00000000000..bada2d7ffac
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyAzArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicyAzArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ [Input("rpo", required: true)]
+ public Input Rpo { get; set; } = null!;
+
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ [Input("rto", required: true)]
+ public Input Rto { get; set; } = null!;
+
+ public ResiliencyPolicyPolicyAzArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicyAzArgs Empty => new ResiliencyPolicyPolicyAzArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyAzGetArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyAzGetArgs.cs
new file mode 100644
index 00000000000..688a70acfb1
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyAzGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicyAzGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ [Input("rpo", required: true)]
+ public Input Rpo { get; set; } = null!;
+
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ [Input("rto", required: true)]
+ public Input Rto { get; set; } = null!;
+
+ public ResiliencyPolicyPolicyAzGetArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicyAzGetArgs Empty => new ResiliencyPolicyPolicyAzGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyGetArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyGetArgs.cs
new file mode 100644
index 00000000000..ba64041be27
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyGetArgs.cs
@@ -0,0 +1,46 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicyGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies Availability Zone failure policy. See `policy.az`
+ ///
+ [Input("az")]
+ public Input? Az { get; set; }
+
+ ///
+ /// Specifies Infrastructure failure policy. See `policy.hardware`
+ ///
+ [Input("hardware")]
+ public Input? Hardware { get; set; }
+
+ ///
+ /// Specifies Region failure policy. `policy.region`
+ ///
+ [Input("region")]
+ public Input? Region { get; set; }
+
+ ///
+ /// Specifies Application failure policy. See `policy.software`
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("software")]
+ public Input? Software { get; set; }
+
+ public ResiliencyPolicyPolicyGetArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicyGetArgs Empty => new ResiliencyPolicyPolicyGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyHardwareArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyHardwareArgs.cs
new file mode 100644
index 00000000000..411b689016b
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyHardwareArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicyHardwareArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ [Input("rpo", required: true)]
+ public Input Rpo { get; set; } = null!;
+
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ [Input("rto", required: true)]
+ public Input Rto { get; set; } = null!;
+
+ public ResiliencyPolicyPolicyHardwareArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicyHardwareArgs Empty => new ResiliencyPolicyPolicyHardwareArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyHardwareGetArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyHardwareGetArgs.cs
new file mode 100644
index 00000000000..fd1728de40c
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyHardwareGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicyHardwareGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ [Input("rpo", required: true)]
+ public Input Rpo { get; set; } = null!;
+
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ [Input("rto", required: true)]
+ public Input Rto { get; set; } = null!;
+
+ public ResiliencyPolicyPolicyHardwareGetArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicyHardwareGetArgs Empty => new ResiliencyPolicyPolicyHardwareGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyRegionArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyRegionArgs.cs
new file mode 100644
index 00000000000..6d9147f7b46
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyRegionArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicyRegionArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ [Input("rpo")]
+ public Input? Rpo { get; set; }
+
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ [Input("rto")]
+ public Input? Rto { get; set; }
+
+ public ResiliencyPolicyPolicyRegionArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicyRegionArgs Empty => new ResiliencyPolicyPolicyRegionArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyRegionGetArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyRegionGetArgs.cs
new file mode 100644
index 00000000000..1cf71e41569
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicyRegionGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicyRegionGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ [Input("rpo")]
+ public Input? Rpo { get; set; }
+
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ [Input("rto")]
+ public Input? Rto { get; set; }
+
+ public ResiliencyPolicyPolicyRegionGetArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicyRegionGetArgs Empty => new ResiliencyPolicyPolicyRegionGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicySoftwareArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicySoftwareArgs.cs
new file mode 100644
index 00000000000..72b2c8c73fc
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicySoftwareArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicySoftwareArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ [Input("rpo", required: true)]
+ public Input Rpo { get; set; } = null!;
+
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ [Input("rto", required: true)]
+ public Input Rto { get; set; } = null!;
+
+ public ResiliencyPolicyPolicySoftwareArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicySoftwareArgs Empty => new ResiliencyPolicyPolicySoftwareArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicySoftwareGetArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicySoftwareGetArgs.cs
new file mode 100644
index 00000000000..3a819751803
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyPolicySoftwareGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyPolicySoftwareGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ [Input("rpo", required: true)]
+ public Input Rpo { get; set; } = null!;
+
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ [Input("rto", required: true)]
+ public Input Rto { get; set; } = null!;
+
+ public ResiliencyPolicyPolicySoftwareGetArgs()
+ {
+ }
+ public static new ResiliencyPolicyPolicySoftwareGetArgs Empty => new ResiliencyPolicyPolicySoftwareGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyTimeoutsArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyTimeoutsArgs.cs
new file mode 100644
index 00000000000..6b8a259e330
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyTimeoutsArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyTimeoutsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
+ ///
+ [Input("create")]
+ public Input? Create { get; set; }
+
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
+ ///
+ [Input("delete")]
+ public Input? Delete { get; set; }
+
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
+ ///
+ [Input("update")]
+ public Input? Update { get; set; }
+
+ public ResiliencyPolicyTimeoutsArgs()
+ {
+ }
+ public static new ResiliencyPolicyTimeoutsArgs Empty => new ResiliencyPolicyTimeoutsArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyTimeoutsGetArgs.cs b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyTimeoutsGetArgs.cs
new file mode 100644
index 00000000000..c7b8a56cb6d
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Inputs/ResiliencyPolicyTimeoutsGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Inputs
+{
+
+ public sealed class ResiliencyPolicyTimeoutsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
+ ///
+ [Input("create")]
+ public Input? Create { get; set; }
+
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
+ ///
+ [Input("delete")]
+ public Input? Delete { get; set; }
+
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
+ ///
+ [Input("update")]
+ public Input? Update { get; set; }
+
+ public ResiliencyPolicyTimeoutsGetArgs()
+ {
+ }
+ public static new ResiliencyPolicyTimeoutsGetArgs Empty => new ResiliencyPolicyTimeoutsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicy.cs b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicy.cs
new file mode 100644
index 00000000000..740ed81b605
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicy.cs
@@ -0,0 +1,51 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Outputs
+{
+
+ [OutputType]
+ public sealed class ResiliencyPolicyPolicy
+ {
+ ///
+ /// Specifies Availability Zone failure policy. See `policy.az`
+ ///
+ public readonly Outputs.ResiliencyPolicyPolicyAz? Az;
+ ///
+ /// Specifies Infrastructure failure policy. See `policy.hardware`
+ ///
+ public readonly Outputs.ResiliencyPolicyPolicyHardware? Hardware;
+ ///
+ /// Specifies Region failure policy. `policy.region`
+ ///
+ public readonly Outputs.ResiliencyPolicyPolicyRegion? Region;
+ ///
+ /// Specifies Application failure policy. See `policy.software`
+ ///
+ /// The following arguments are optional:
+ ///
+ public readonly Outputs.ResiliencyPolicyPolicySoftware? Software;
+
+ [OutputConstructor]
+ private ResiliencyPolicyPolicy(
+ Outputs.ResiliencyPolicyPolicyAz? az,
+
+ Outputs.ResiliencyPolicyPolicyHardware? hardware,
+
+ Outputs.ResiliencyPolicyPolicyRegion? region,
+
+ Outputs.ResiliencyPolicyPolicySoftware? software)
+ {
+ Az = az;
+ Hardware = hardware;
+ Region = region;
+ Software = software;
+ }
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyAz.cs b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyAz.cs
new file mode 100644
index 00000000000..ba71cb79a3e
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyAz.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Outputs
+{
+
+ [OutputType]
+ public sealed class ResiliencyPolicyPolicyAz
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ public readonly string Rpo;
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ public readonly string Rto;
+
+ [OutputConstructor]
+ private ResiliencyPolicyPolicyAz(
+ string rpo,
+
+ string rto)
+ {
+ Rpo = rpo;
+ Rto = rto;
+ }
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyHardware.cs b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyHardware.cs
new file mode 100644
index 00000000000..b1a214d791f
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyHardware.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Outputs
+{
+
+ [OutputType]
+ public sealed class ResiliencyPolicyPolicyHardware
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ public readonly string Rpo;
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ public readonly string Rto;
+
+ [OutputConstructor]
+ private ResiliencyPolicyPolicyHardware(
+ string rpo,
+
+ string rto)
+ {
+ Rpo = rpo;
+ Rto = rto;
+ }
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyRegion.cs b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyRegion.cs
new file mode 100644
index 00000000000..b13d6a499af
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicyRegion.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Outputs
+{
+
+ [OutputType]
+ public sealed class ResiliencyPolicyPolicyRegion
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ public readonly string? Rpo;
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ public readonly string? Rto;
+
+ [OutputConstructor]
+ private ResiliencyPolicyPolicyRegion(
+ string? rpo,
+
+ string? rto)
+ {
+ Rpo = rpo;
+ Rto = rto;
+ }
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicySoftware.cs b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicySoftware.cs
new file mode 100644
index 00000000000..cac52e789d2
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyPolicySoftware.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Outputs
+{
+
+ [OutputType]
+ public sealed class ResiliencyPolicyPolicySoftware
+ {
+ ///
+ /// Recovery Point Objective (RPO) as a Go duration.
+ ///
+ public readonly string Rpo;
+ ///
+ /// Recovery Time Objective (RTO) as a Go duration.
+ ///
+ public readonly string Rto;
+
+ [OutputConstructor]
+ private ResiliencyPolicyPolicySoftware(
+ string rpo,
+
+ string rto)
+ {
+ Rpo = rpo;
+ Rto = rto;
+ }
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyTimeouts.cs b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyTimeouts.cs
new file mode 100644
index 00000000000..226a5821698
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/Outputs/ResiliencyPolicyTimeouts.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub.Outputs
+{
+
+ [OutputType]
+ public sealed class ResiliencyPolicyTimeouts
+ {
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
+ ///
+ public readonly string? Create;
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
+ ///
+ public readonly string? Delete;
+ ///
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
+ ///
+ public readonly string? Update;
+
+ [OutputConstructor]
+ private ResiliencyPolicyTimeouts(
+ string? create,
+
+ string? delete,
+
+ string? update)
+ {
+ Create = create;
+ Delete = delete;
+ Update = update;
+ }
+ }
+}
diff --git a/sdk/dotnet/ResilienceHub/README.md b/sdk/dotnet/ResilienceHub/README.md
new file mode 100644
index 00000000000..9d868f18f20
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/README.md
@@ -0,0 +1 @@
+A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.
diff --git a/sdk/dotnet/ResilienceHub/ResiliencyPolicy.cs b/sdk/dotnet/ResilienceHub/ResiliencyPolicy.cs
new file mode 100644
index 00000000000..8ee8224ce7a
--- /dev/null
+++ b/sdk/dotnet/ResilienceHub/ResiliencyPolicy.cs
@@ -0,0 +1,275 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.ResilienceHub
+{
+ ///
+ /// Resource for managing an AWS Resilience Hub Resiliency Policy.
+ ///
+ /// ## Import
+ ///
+ /// Using `pulumi import`, import Resilience Hub Resiliency Policy using the `arn`. For example:
+ ///
+ /// ```sh
+ /// $ pulumi import aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy example arn:aws:resiliencehub:us-east-1:123456789012:resiliency-policy/8c1cfa29-d1dd-4421-aa68-c9f64cced4c2
+ /// ```
+ ///
+ [AwsResourceType("aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy")]
+ public partial class ResiliencyPolicy : global::Pulumi.CustomResource
+ {
+ ///
+ /// ARN of the Resiliency Policy.
+ ///
+ [Output("arn")]
+ public Output Arn { get; private set; } = null!;
+
+ ///
+ /// Data Location Constraint of the Policy.
+ /// Valid values are `AnyLocation`, `SameContinent`, and `SameCountry`.
+ ///
+ [Output("dataLocationConstraint")]
+ public Output DataLocationConstraint { get; private set; } = null!;
+
+ ///
+ /// Description of Resiliency Policy.
+ ///
+ [Output("description")]
+ public Output Description { get; private set; } = null!;
+
+ ///
+ /// Estimated Cost Tier of the Resiliency Policy.
+ ///
+ [Output("estimatedCostTier")]
+ public Output EstimatedCostTier { get; private set; } = null!;
+
+ ///
+ /// Name of Resiliency Policy.
+ /// Must be between 2 and 60 characters long.
+ /// Must start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.
+ ///
+ [Output("name")]
+ public Output Name { get; private set; } = null!;
+
+ ///
+ /// The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Output("policy")]
+ public Output Policy { get; private set; } = null!;
+
+ ///
+ /// A 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.
+ ///
+ [Output("tags")]
+ public Output?> Tags { get; private set; } = null!;
+
+ ///
+ /// A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
+ ///
+ [Output("tagsAll")]
+ public Output> TagsAll { get; private set; } = null!;
+
+ ///
+ /// Resiliency Policy Tier.
+ /// Valid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.
+ ///
+ [Output("tier")]
+ public Output Tier { get; private set; } = null!;
+
+ [Output("timeouts")]
+ public Output Timeouts { get; private set; } = null!;
+
+
+ ///
+ /// Create a ResiliencyPolicy resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public ResiliencyPolicy(string name, ResiliencyPolicyArgs args, CustomResourceOptions? options = null)
+ : base("aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy", name, args ?? new ResiliencyPolicyArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private ResiliencyPolicy(string name, Input id, ResiliencyPolicyState? state = null, CustomResourceOptions? options = null)
+ : base("aws:resiliencehub/resiliencyPolicy:ResiliencyPolicy", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing ResiliencyPolicy resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static ResiliencyPolicy Get(string name, Input id, ResiliencyPolicyState? state = null, CustomResourceOptions? options = null)
+ {
+ return new ResiliencyPolicy(name, id, state, options);
+ }
+ }
+
+ public sealed class ResiliencyPolicyArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Data Location Constraint of the Policy.
+ /// Valid values are `AnyLocation`, `SameContinent`, and `SameCountry`.
+ ///
+ [Input("dataLocationConstraint")]
+ public Input? DataLocationConstraint { get; set; }
+
+ ///
+ /// Description of Resiliency Policy.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// Name of Resiliency Policy.
+ /// Must be between 2 and 60 characters long.
+ /// Must start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.
+ ///
+ [Input("name")]
+ public Input? Name { get; set; }
+
+ ///
+ /// The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("policy")]
+ public Input? Policy { get; set; }
+
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// A 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.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
+ ///
+ /// Resiliency Policy Tier.
+ /// Valid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.
+ ///
+ [Input("tier", required: true)]
+ public Input Tier { get; set; } = null!;
+
+ [Input("timeouts")]
+ public Input? Timeouts { get; set; }
+
+ public ResiliencyPolicyArgs()
+ {
+ }
+ public static new ResiliencyPolicyArgs Empty => new ResiliencyPolicyArgs();
+ }
+
+ public sealed class ResiliencyPolicyState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// ARN of the Resiliency Policy.
+ ///
+ [Input("arn")]
+ public Input? Arn { get; set; }
+
+ ///
+ /// Data Location Constraint of the Policy.
+ /// Valid values are `AnyLocation`, `SameContinent`, and `SameCountry`.
+ ///
+ [Input("dataLocationConstraint")]
+ public Input? DataLocationConstraint { get; set; }
+
+ ///
+ /// Description of Resiliency Policy.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// Estimated Cost Tier of the Resiliency Policy.
+ ///
+ [Input("estimatedCostTier")]
+ public Input? EstimatedCostTier { get; set; }
+
+ ///
+ /// Name of Resiliency Policy.
+ /// Must be between 2 and 60 characters long.
+ /// Must start with an alphanumeric character and contain alphanumeric characters, underscores, or hyphens.
+ ///
+ [Input("name")]
+ public Input? Name { get; set; }
+
+ ///
+ /// The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. See `policy`.
+ ///
+ /// The following arguments are optional:
+ ///
+ [Input("policy")]
+ public Input? Policy { get; set; }
+
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// A 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.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
+ [Input("tagsAll")]
+ private InputMap? _tagsAll;
+
+ ///
+ /// A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
+ ///
+ [Obsolete(@"Please use `tags` instead.")]
+ public InputMap TagsAll
+ {
+ get => _tagsAll ?? (_tagsAll = new InputMap());
+ set => _tagsAll = value;
+ }
+
+ ///
+ /// Resiliency Policy Tier.
+ /// Valid values are `MissionCritical`, `Critical`, `Important`, `CoreServices`, `NonCritical`, and `NotApplicable`.
+ ///
+ [Input("tier")]
+ public Input? Tier { get; set; }
+
+ [Input("timeouts")]
+ public Input? Timeouts { get; set; }
+
+ public ResiliencyPolicyState()
+ {
+ }
+ public static new ResiliencyPolicyState Empty => new ResiliencyPolicyState();
+ }
+}
diff --git a/sdk/dotnet/Route53/Inputs/ProfilesAssociationTimeoutsArgs.cs b/sdk/dotnet/Route53/Inputs/ProfilesAssociationTimeoutsArgs.cs
index 9cfb0cdcbe0..7ab7dc5baef 100644
--- a/sdk/dotnet/Route53/Inputs/ProfilesAssociationTimeoutsArgs.cs
+++ b/sdk/dotnet/Route53/Inputs/ProfilesAssociationTimeoutsArgs.cs
@@ -25,10 +25,10 @@ public sealed class ProfilesAssociationTimeoutsArgs : global::Pulumi.ResourceArg
public Input? Delete { get; set; }
///
- /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
///
- [Input("read")]
- public Input? Read { get; set; }
+ [Input("update")]
+ public Input? Update { get; set; }
public ProfilesAssociationTimeoutsArgs()
{
diff --git a/sdk/dotnet/Route53/Inputs/ProfilesAssociationTimeoutsGetArgs.cs b/sdk/dotnet/Route53/Inputs/ProfilesAssociationTimeoutsGetArgs.cs
index 8bf6853b5e2..3c48cdc45c1 100644
--- a/sdk/dotnet/Route53/Inputs/ProfilesAssociationTimeoutsGetArgs.cs
+++ b/sdk/dotnet/Route53/Inputs/ProfilesAssociationTimeoutsGetArgs.cs
@@ -25,10 +25,10 @@ public sealed class ProfilesAssociationTimeoutsGetArgs : global::Pulumi.Resource
public Input? Delete { get; set; }
///
- /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
///
- [Input("read")]
- public Input? Read { get; set; }
+ [Input("update")]
+ public Input? Update { get; set; }
public ProfilesAssociationTimeoutsGetArgs()
{
diff --git a/sdk/dotnet/Route53/Outputs/ProfilesAssociationTimeouts.cs b/sdk/dotnet/Route53/Outputs/ProfilesAssociationTimeouts.cs
index 91cffe8b5af..433f8a529d9 100644
--- a/sdk/dotnet/Route53/Outputs/ProfilesAssociationTimeouts.cs
+++ b/sdk/dotnet/Route53/Outputs/ProfilesAssociationTimeouts.cs
@@ -22,9 +22,9 @@ public sealed class ProfilesAssociationTimeouts
///
public readonly string? Delete;
///
- /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.
+ /// A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
///
- public readonly string? Read;
+ public readonly string? Update;
[OutputConstructor]
private ProfilesAssociationTimeouts(
@@ -32,11 +32,11 @@ private ProfilesAssociationTimeouts(
string? delete,
- string? read)
+ string? update)
{
Create = create;
Delete = delete;
- Read = read;
+ Update = update;
}
}
}
diff --git a/sdk/dotnet/Route53/ProfilesAssociation.cs b/sdk/dotnet/Route53/ProfilesAssociation.cs
index df39d422794..88a6add01ad 100644
--- a/sdk/dotnet/Route53/ProfilesAssociation.cs
+++ b/sdk/dotnet/Route53/ProfilesAssociation.cs
@@ -29,7 +29,7 @@ public partial class ProfilesAssociation : global::Pulumi.CustomResource
public Output Arn { get; private set; } = null!;
///
- /// Name of the Profile Association.
+ /// Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)`.
///
[Output("name")]
public Output Name { get; private set; } = null!;
@@ -50,7 +50,7 @@ public partial class ProfilesAssociation : global::Pulumi.CustomResource
public Output ResourceId { get; private set; } = null!;
///
- /// Status of the Profile Association. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)
+ /// Status of the Profile Association. See the [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html) for valid values.
///
[Output("status")]
public Output Status { get; private set; } = null!;
@@ -117,7 +117,7 @@ public static ProfilesAssociation Get(string name, Input id, ProfilesAss
public sealed class ProfilesAssociationArgs : global::Pulumi.ResourceArgs
{
///
- /// Name of the Profile Association.
+ /// Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)`.
///
[Input("name")]
public Input? Name { get; set; }
@@ -157,7 +157,7 @@ public sealed class ProfilesAssociationState : global::Pulumi.ResourceArgs
public Input? Arn { get; set; }
///
- /// Name of the Profile Association.
+ /// Name of the Profile Association. Must match a regex of `(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)`.
///
[Input("name")]
public Input? Name { get; set; }
@@ -178,7 +178,7 @@ public sealed class ProfilesAssociationState : global::Pulumi.ResourceArgs
public Input? ResourceId { get; set; }
///
- /// Status of the Profile Association. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)
+ /// Status of the Profile Association. See the [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html) for valid values.
///
[Input("status")]
public Input? Status { get; set; }
diff --git a/sdk/dotnet/Sagemaker/Domain.cs b/sdk/dotnet/Sagemaker/Domain.cs
index f9306d745fe..b73318a5259 100644
--- a/sdk/dotnet/Sagemaker/Domain.cs
+++ b/sdk/dotnet/Sagemaker/Domain.cs
@@ -175,6 +175,12 @@ public partial class Domain : global::Pulumi.CustomResource
[Output("subnetIds")]
public Output> SubnetIds { get; private set; } = null!;
+ ///
+ /// Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.
+ ///
+ [Output("tagPropagation")]
+ public Output TagPropagation { get; private set; } = null!;
+
///
/// A 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.
///
@@ -313,6 +319,12 @@ public InputList SubnetIds
set => _subnetIds = value;
}
+ ///
+ /// Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.
+ ///
+ [Input("tagPropagation")]
+ public Input? TagPropagation { get; set; }
+
[Input("tags")]
private InputMap? _tags;
@@ -437,6 +449,12 @@ public InputList SubnetIds
set => _subnetIds = value;
}
+ ///
+ /// Indicates whether custom tag propagation is supported for the domain. Defaults to `DISABLED`. Valid values are: `ENABLED` and `DISABLED`.
+ ///
+ [Input("tagPropagation")]
+ public Input? TagPropagation { get; set; }
+
[Input("tags")]
private InputMap? _tags;
diff --git a/sdk/dotnet/Sagemaker/FeatureGroup.cs b/sdk/dotnet/Sagemaker/FeatureGroup.cs
index 6b518cc2092..c7ef8ad40cc 100644
--- a/sdk/dotnet/Sagemaker/FeatureGroup.cs
+++ b/sdk/dotnet/Sagemaker/FeatureGroup.cs
@@ -124,6 +124,9 @@ public partial class FeatureGroup : global::Pulumi.CustomResource
[Output("tagsAll")]
public Output> TagsAll { get; private set; } = null!;
+ [Output("throughputConfig")]
+ public Output ThroughputConfig { get; private set; } = null!;
+
///
/// Create a FeatureGroup resource with the given unique name, arguments, and options.
@@ -236,6 +239,9 @@ public InputMap Tags
set => _tags = value;
}
+ [Input("throughputConfig")]
+ public Input? ThroughputConfig { get; set; }
+
public FeatureGroupArgs()
{
}
@@ -329,6 +335,9 @@ public InputMap TagsAll
set => _tagsAll = value;
}
+ [Input("throughputConfig")]
+ public Input? ThroughputConfig { get; set; }
+
public FeatureGroupState()
{
}
diff --git a/sdk/dotnet/Sagemaker/Hub.cs b/sdk/dotnet/Sagemaker/Hub.cs
new file mode 100644
index 00000000000..578da882f7f
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Hub.cs
@@ -0,0 +1,269 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker
+{
+ ///
+ /// Provides a SageMaker Hub resource.
+ ///
+ /// ## Example Usage
+ ///
+ /// ### Basic usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Aws = Pulumi.Aws;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = new Aws.Sagemaker.Hub("example", new()
+ /// {
+ /// HubName = "example",
+ /// HubDescription = "example",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// Using `pulumi import`, import SageMaker Hubs using the `name`. For example:
+ ///
+ /// ```sh
+ /// $ pulumi import aws:sagemaker/hub:Hub test_hub my-code-repo
+ /// ```
+ ///
+ [AwsResourceType("aws:sagemaker/hub:Hub")]
+ public partial class Hub : global::Pulumi.CustomResource
+ {
+ ///
+ /// The Amazon Resource Name (ARN) assigned by AWS to this Hub.
+ ///
+ [Output("arn")]
+ public Output Arn { get; private set; } = null!;
+
+ ///
+ /// A description of the hub.
+ ///
+ [Output("hubDescription")]
+ public Output HubDescription { get; private set; } = null!;
+
+ ///
+ /// The display name of the hub.
+ ///
+ [Output("hubDisplayName")]
+ public Output HubDisplayName { get; private set; } = null!;
+
+ ///
+ /// The name of the hub.
+ ///
+ [Output("hubName")]
+ public Output HubName { get; private set; } = null!;
+
+ ///
+ /// The searchable keywords for the hub.
+ ///
+ [Output("hubSearchKeywords")]
+ public Output> HubSearchKeywords { get; private set; } = null!;
+
+ ///
+ /// The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.
+ ///
+ [Output("s3StorageConfig")]
+ public Output S3StorageConfig { get; private set; } = null!;
+
+ ///
+ /// A 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.
+ ///
+ [Output("tags")]
+ public Output?> Tags { get; private set; } = null!;
+
+ ///
+ /// A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
+ ///
+ [Output("tagsAll")]
+ public Output> TagsAll { get; private set; } = null!;
+
+
+ ///
+ /// Create a Hub resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public Hub(string name, HubArgs args, CustomResourceOptions? options = null)
+ : base("aws:sagemaker/hub:Hub", name, args ?? new HubArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private Hub(string name, Input id, HubState? state = null, CustomResourceOptions? options = null)
+ : base("aws:sagemaker/hub:Hub", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing Hub resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static Hub Get(string name, Input id, HubState? state = null, CustomResourceOptions? options = null)
+ {
+ return new Hub(name, id, state, options);
+ }
+ }
+
+ public sealed class HubArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// A description of the hub.
+ ///
+ [Input("hubDescription", required: true)]
+ public Input HubDescription { get; set; } = null!;
+
+ ///
+ /// The display name of the hub.
+ ///
+ [Input("hubDisplayName")]
+ public Input? HubDisplayName { get; set; }
+
+ ///
+ /// The name of the hub.
+ ///
+ [Input("hubName", required: true)]
+ public Input HubName { get; set; } = null!;
+
+ [Input("hubSearchKeywords")]
+ private InputList? _hubSearchKeywords;
+
+ ///
+ /// The searchable keywords for the hub.
+ ///
+ public InputList HubSearchKeywords
+ {
+ get => _hubSearchKeywords ?? (_hubSearchKeywords = new InputList());
+ set => _hubSearchKeywords = value;
+ }
+
+ ///
+ /// The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.
+ ///
+ [Input("s3StorageConfig")]
+ public Input? S3StorageConfig { get; set; }
+
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// A 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.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
+ public HubArgs()
+ {
+ }
+ public static new HubArgs Empty => new HubArgs();
+ }
+
+ public sealed class HubState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The Amazon Resource Name (ARN) assigned by AWS to this Hub.
+ ///
+ [Input("arn")]
+ public Input? Arn { get; set; }
+
+ ///
+ /// A description of the hub.
+ ///
+ [Input("hubDescription")]
+ public Input? HubDescription { get; set; }
+
+ ///
+ /// The display name of the hub.
+ ///
+ [Input("hubDisplayName")]
+ public Input? HubDisplayName { get; set; }
+
+ ///
+ /// The name of the hub.
+ ///
+ [Input("hubName")]
+ public Input? HubName { get; set; }
+
+ [Input("hubSearchKeywords")]
+ private InputList? _hubSearchKeywords;
+
+ ///
+ /// The searchable keywords for the hub.
+ ///
+ public InputList HubSearchKeywords
+ {
+ get => _hubSearchKeywords ?? (_hubSearchKeywords = new InputList());
+ set => _hubSearchKeywords = value;
+ }
+
+ ///
+ /// The Amazon S3 storage configuration for the hub. See S3 Storage Config details below.
+ ///
+ [Input("s3StorageConfig")]
+ public Input? S3StorageConfig { get; set; }
+
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// A 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.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
+ [Input("tagsAll")]
+ private InputMap? _tagsAll;
+
+ ///
+ /// A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
+ ///
+ [Obsolete(@"Please use `tags` instead.")]
+ public InputMap TagsAll
+ {
+ get => _tagsAll ?? (_tagsAll = new InputMap());
+ set => _tagsAll = value;
+ }
+
+ public HubState()
+ {
+ }
+ public static new HubState Empty => new HubState();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementArgs.cs
new file mode 100644
index 00000000000..01a1d2f561b
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.
+ ///
+ [Input("idleSettings")]
+ public Input? IdleSettings { get; set; }
+
+ public DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementArgs()
+ {
+ }
+ public static new DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementArgs Empty => new DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementGetArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementGetArgs.cs
new file mode 100644
index 00000000000..a64c773ecd1
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementGetArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.
+ ///
+ [Input("idleSettings")]
+ public Input? IdleSettings { get; set; }
+
+ public DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementGetArgs()
+ {
+ }
+ public static new DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementGetArgs Empty => new DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsArgs.cs
new file mode 100644
index 00000000000..4e2e624c426
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.
+ ///
+ [Input("idleTimeoutInMinutes")]
+ public Input? IdleTimeoutInMinutes { get; set; }
+
+ ///
+ /// Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.
+ ///
+ [Input("lifecycleManagement")]
+ public Input? LifecycleManagement { get; set; }
+
+ ///
+ /// The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.
+ ///
+ [Input("maxIdleTimeoutInMinutes")]
+ public Input? MaxIdleTimeoutInMinutes { get; set; }
+
+ ///
+ /// The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.
+ ///
+ [Input("minIdleTimeoutInMinutes")]
+ public Input? MinIdleTimeoutInMinutes { get; set; }
+
+ public DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsArgs()
+ {
+ }
+ public static new DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsArgs Empty => new DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsGetArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsGetArgs.cs
new file mode 100644
index 00000000000..7f5b150d568
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsGetArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.
+ ///
+ [Input("idleTimeoutInMinutes")]
+ public Input? IdleTimeoutInMinutes { get; set; }
+
+ ///
+ /// Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.
+ ///
+ [Input("lifecycleManagement")]
+ public Input? LifecycleManagement { get; set; }
+
+ ///
+ /// The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.
+ ///
+ [Input("maxIdleTimeoutInMinutes")]
+ public Input? MaxIdleTimeoutInMinutes { get; set; }
+
+ ///
+ /// The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.
+ ///
+ [Input("minIdleTimeoutInMinutes")]
+ public Input? MinIdleTimeoutInMinutes { get; set; }
+
+ public DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsGetArgs()
+ {
+ }
+ public static new DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsGetArgs Empty => new DomainDefaultSpaceSettingsJupyterLabAppSettingsAppLifecycleManagementIdleSettingsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsArgs.cs
index 1c751e4f5d4..898ed6b6536 100644
--- a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsArgs.cs
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsArgs.cs
@@ -12,6 +12,18 @@ namespace Pulumi.Aws.Sagemaker.Inputs
public sealed class DomainDefaultSpaceSettingsJupyterLabAppSettingsArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.
+ ///
+ [Input("appLifecycleManagement")]
+ public Input? AppLifecycleManagement { get; set; }
+
+ ///
+ /// The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.
+ ///
+ [Input("builtInLifecycleConfigArn")]
+ public Input? BuiltInLifecycleConfigArn { get; set; }
+
[Input("codeRepositories")]
private InputList? _codeRepositories;
@@ -42,6 +54,12 @@ public InputList? DefaultResourceSpec { get; set; }
+ ///
+ /// The configuration parameters that specify the IAM roles assumed by the execution role of SageMaker (assumable roles) and the cluster instances or job execution environments (execution roles or runtime roles) to manage and access resources required for running Amazon EMR clusters or Amazon EMR Serverless applications. see `emr_settings` Block below.
+ ///
+ [Input("emrSettings")]
+ public Input? EmrSettings { get; set; }
+
[Input("lifecycleConfigArns")]
private InputList? _lifecycleConfigArns;
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsArgs.cs
new file mode 100644
index 00000000000..f18c303327c
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("assumableRoleArns")]
+ private InputList? _assumableRoleArns;
+
+ ///
+ /// An array of Amazon Resource Names (ARNs) of the IAM roles that the execution role of SageMaker can assume for performing operations or tasks related to Amazon EMR clusters or Amazon EMR Serverless applications. These roles define the permissions and access policies required when performing Amazon EMR-related operations, such as listing, connecting to, or terminating Amazon EMR clusters or Amazon EMR Serverless applications. They are typically used in cross-account access scenarios, where the Amazon EMR resources (clusters or serverless applications) are located in a different AWS account than the SageMaker domain.
+ ///
+ public InputList AssumableRoleArns
+ {
+ get => _assumableRoleArns ?? (_assumableRoleArns = new InputList());
+ set => _assumableRoleArns = value;
+ }
+
+ [Input("executionRoleArns")]
+ private InputList? _executionRoleArns;
+
+ ///
+ /// An array of Amazon Resource Names (ARNs) of the IAM roles used by the Amazon EMR cluster instances or job execution environments to access other AWS services and resources needed during the runtime of your Amazon EMR or Amazon EMR Serverless workloads, such as Amazon S3 for data access, Amazon CloudWatch for logging, or other AWS services based on the particular workload requirements.
+ ///
+ public InputList ExecutionRoleArns
+ {
+ get => _executionRoleArns ?? (_executionRoleArns = new InputList());
+ set => _executionRoleArns = value;
+ }
+
+ public DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsArgs()
+ {
+ }
+ public static new DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsArgs Empty => new DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsGetArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsGetArgs.cs
new file mode 100644
index 00000000000..d271a38b21f
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsGetArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsGetArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("assumableRoleArns")]
+ private InputList? _assumableRoleArns;
+
+ ///
+ /// An array of Amazon Resource Names (ARNs) of the IAM roles that the execution role of SageMaker can assume for performing operations or tasks related to Amazon EMR clusters or Amazon EMR Serverless applications. These roles define the permissions and access policies required when performing Amazon EMR-related operations, such as listing, connecting to, or terminating Amazon EMR clusters or Amazon EMR Serverless applications. They are typically used in cross-account access scenarios, where the Amazon EMR resources (clusters or serverless applications) are located in a different AWS account than the SageMaker domain.
+ ///
+ public InputList AssumableRoleArns
+ {
+ get => _assumableRoleArns ?? (_assumableRoleArns = new InputList());
+ set => _assumableRoleArns = value;
+ }
+
+ [Input("executionRoleArns")]
+ private InputList? _executionRoleArns;
+
+ ///
+ /// An array of Amazon Resource Names (ARNs) of the IAM roles used by the Amazon EMR cluster instances or job execution environments to access other AWS services and resources needed during the runtime of your Amazon EMR or Amazon EMR Serverless workloads, such as Amazon S3 for data access, Amazon CloudWatch for logging, or other AWS services based on the particular workload requirements.
+ ///
+ public InputList ExecutionRoleArns
+ {
+ get => _executionRoleArns ?? (_executionRoleArns = new InputList());
+ set => _executionRoleArns = value;
+ }
+
+ public DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsGetArgs()
+ {
+ }
+ public static new DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsGetArgs Empty => new DomainDefaultSpaceSettingsJupyterLabAppSettingsEmrSettingsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsGetArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsGetArgs.cs
index 02ad4419ef1..c12e87ef717 100644
--- a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsGetArgs.cs
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultSpaceSettingsJupyterLabAppSettingsGetArgs.cs
@@ -12,6 +12,18 @@ namespace Pulumi.Aws.Sagemaker.Inputs
public sealed class DomainDefaultSpaceSettingsJupyterLabAppSettingsGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Indicates whether idle shutdown is activated for JupyterLab applications. see `app_lifecycle_management` Block below.
+ ///
+ [Input("appLifecycleManagement")]
+ public Input? AppLifecycleManagement { get; set; }
+
+ ///
+ /// The lifecycle configuration that runs before the default lifecycle configuration. It can override changes made in the default lifecycle configuration.
+ ///
+ [Input("builtInLifecycleConfigArn")]
+ public Input? BuiltInLifecycleConfigArn { get; set; }
+
[Input("codeRepositories")]
private InputList? _codeRepositories;
@@ -42,6 +54,12 @@ public InputList? DefaultResourceSpec { get; set; }
+ ///
+ /// The configuration parameters that specify the IAM roles assumed by the execution role of SageMaker (assumable roles) and the cluster instances or job execution environments (execution roles or runtime roles) to manage and access resources required for running Amazon EMR clusters or Amazon EMR Serverless applications. see `emr_settings` Block below.
+ ///
+ [Input("emrSettings")]
+ public Input? EmrSettings { get; set; }
+
[Input("lifecycleConfigArns")]
private InputList? _lifecycleConfigArns;
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsArgs.cs
index b7efc847000..238e74e1f4e 100644
--- a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsArgs.cs
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsArgs.cs
@@ -12,6 +12,12 @@ namespace Pulumi.Aws.Sagemaker.Inputs
public sealed class DomainDefaultUserSettingsArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Indicates whether auto-mounting of an EFS volume is supported for the user profile. The `DefaultAsDomain` value is only supported for user profiles. Do not use the `DefaultAsDomain` value when setting this parameter for a domain. Valid values are: `Enabled`, `Disabled`, and `DefaultAsDomain`.
+ ///
+ [Input("autoMountHomeEfs")]
+ public Input? AutoMountHomeEfs { get; set; }
+
///
/// The Canvas app settings. See `canvas_app_settings` Block below.
///
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsArgs.cs
index e0c390c46c8..7fdc78784c0 100644
--- a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsArgs.cs
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsArgs.cs
@@ -18,6 +18,12 @@ public sealed class DomainDefaultUserSettingsCanvasAppSettingsArgs : global::Pul
[Input("directDeploySettings")]
public Input? DirectDeploySettings { get; set; }
+ ///
+ /// The settings for running Amazon EMR Serverless jobs in SageMaker Canvas. See `emr_serverless_settings` Block below.
+ ///
+ [Input("emrServerlessSettings")]
+ public Input? EmrServerlessSettings { get; set; }
+
[Input("generativeAiSettings")]
public Input? GenerativeAiSettings { get; set; }
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsArgs.cs
new file mode 100644
index 00000000000..f2eef61f46d
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The Amazon Resource Name (ARN) of the AWS IAM role that is assumed for running Amazon EMR Serverless jobs in SageMaker Canvas. This role should have the necessary permissions to read and write data attached and a trust relationship with EMR Serverless.
+ ///
+ [Input("executionRoleArn")]
+ public Input? ExecutionRoleArn { get; set; }
+
+ ///
+ /// Describes whether Amazon EMR Serverless job capabilities are enabled or disabled in the SageMaker Canvas application. Valid values are: `ENABLED` and `DISABLED`.
+ ///
+ [Input("status")]
+ public Input? Status { get; set; }
+
+ public DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsArgs()
+ {
+ }
+ public static new DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsArgs Empty => new DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsGetArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsGetArgs.cs
new file mode 100644
index 00000000000..79569f44c9f
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The Amazon Resource Name (ARN) of the AWS IAM role that is assumed for running Amazon EMR Serverless jobs in SageMaker Canvas. This role should have the necessary permissions to read and write data attached and a trust relationship with EMR Serverless.
+ ///
+ [Input("executionRoleArn")]
+ public Input? ExecutionRoleArn { get; set; }
+
+ ///
+ /// Describes whether Amazon EMR Serverless job capabilities are enabled or disabled in the SageMaker Canvas application. Valid values are: `ENABLED` and `DISABLED`.
+ ///
+ [Input("status")]
+ public Input? Status { get; set; }
+
+ public DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsGetArgs()
+ {
+ }
+ public static new DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsGetArgs Empty => new DomainDefaultUserSettingsCanvasAppSettingsEmrServerlessSettingsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsGetArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsGetArgs.cs
index dcfc4828c30..659120d77bc 100644
--- a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsGetArgs.cs
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCanvasAppSettingsGetArgs.cs
@@ -18,6 +18,12 @@ public sealed class DomainDefaultUserSettingsCanvasAppSettingsGetArgs : global::
[Input("directDeploySettings")]
public Input? DirectDeploySettings { get; set; }
+ ///
+ /// The settings for running Amazon EMR Serverless jobs in SageMaker Canvas. See `emr_serverless_settings` Block below.
+ ///
+ [Input("emrServerlessSettings")]
+ public Input? EmrServerlessSettings { get; set; }
+
[Input("generativeAiSettings")]
public Input? GenerativeAiSettings { get; set; }
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementArgs.cs
new file mode 100644
index 00000000000..e35600d7397
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.
+ ///
+ [Input("idleSettings")]
+ public Input? IdleSettings { get; set; }
+
+ public DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementArgs()
+ {
+ }
+ public static new DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementArgs Empty => new DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementGetArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementGetArgs.cs
new file mode 100644
index 00000000000..0c7048a0a6f
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementGetArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Settings related to idle shutdown of Studio applications. see `idle_settings` Block below.
+ ///
+ [Input("idleSettings")]
+ public Input? IdleSettings { get; set; }
+
+ public DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementGetArgs()
+ {
+ }
+ public static new DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementGetArgs Empty => new DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsArgs.cs
new file mode 100644
index 00000000000..15424844c5c
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.
+ ///
+ [Input("idleTimeoutInMinutes")]
+ public Input? IdleTimeoutInMinutes { get; set; }
+
+ ///
+ /// Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.
+ ///
+ [Input("lifecycleManagement")]
+ public Input? LifecycleManagement { get; set; }
+
+ ///
+ /// The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.
+ ///
+ [Input("maxIdleTimeoutInMinutes")]
+ public Input? MaxIdleTimeoutInMinutes { get; set; }
+
+ ///
+ /// The minimum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.
+ ///
+ [Input("minIdleTimeoutInMinutes")]
+ public Input? MinIdleTimeoutInMinutes { get; set; }
+
+ public DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsArgs()
+ {
+ }
+ public static new DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsArgs Empty => new DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsArgs();
+ }
+}
diff --git a/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsGetArgs.cs b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsGetArgs.cs
new file mode 100644
index 00000000000..f2480f14801
--- /dev/null
+++ b/sdk/dotnet/Sagemaker/Inputs/DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsGetArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Aws.Sagemaker.Inputs
+{
+
+ public sealed class DomainDefaultUserSettingsCodeEditorAppSettingsAppLifecycleManagementIdleSettingsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The time that SageMaker waits after the application becomes idle before shutting it down. Valid values are between `60` and `525600`.
+ ///
+ [Input("idleTimeoutInMinutes")]
+ public Input? IdleTimeoutInMinutes { get; set; }
+
+ ///
+ /// Indicates whether idle shutdown is activated for the application type. Valid values are `ENABLED` and `DISABLED`.
+ ///
+ [Input("lifecycleManagement")]
+ public Input? LifecycleManagement { get; set; }
+
+ ///
+ /// The maximum value in minutes that custom idle shutdown can be set to by the user. Valid values are between `60` and `525600`.
+ ///
+ [Input("maxIdleTimeoutInMinutes")]
+ public Input? MaxIdleTimeoutInMinutes { get; set; }
+
+ ///