diff --git a/examples/go.mod b/examples/go.mod index 468c22dd17..48af30d0dd 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -185,3 +185,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/frand v1.4.2 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 diff --git a/examples/go.sum b/examples/go.sum index 34d584d0ba..ff8373ffb4 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -349,10 +349,10 @@ github.com/pulumi/esc v0.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE= github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c= github.com/pulumi/pulumi-gcp/sdk/v6 v6.67.0 h1:toKDTQrGp11iU3FQsxqFN+1fgxx4GQFvsmLbUe9++B8= github.com/pulumi/pulumi-gcp/sdk/v6 v6.67.0/go.mod h1:0H6CtMuOB754n2Yzu6XqHqeU99fmH/fsBUKLsMic2OY= -github.com/pulumi/pulumi/pkg/v3 v3.136.1 h1:zA8aJZ7qI0QgZkBKjjQaYHEcigK6pZfrbfG38imXzWo= -github.com/pulumi/pulumi/pkg/v3 v3.136.1/go.mod h1:Iz8QIs07AbEdrO52hEIEM5C4VBDUYFH2NdM9u2xxBxY= -github.com/pulumi/pulumi/sdk/v3 v3.136.1 h1:VJWTgdBrLvvzIkMbGq/epNEfT65P9gTvw14UF/I7hTI= -github.com/pulumi/pulumi/sdk/v3 v3.136.1/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= +github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 h1:gUybpGOZkFg3bCtSlK17uln/dhpFHchZl3ow/JvDOAU= +github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20241011093535-6ec1e3be3a38/go.mod h1:Be8oFq0YzWMXCq7BN3+YO18XzYjQzowHr8DmtT2sMQE= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 h1:QMbO9loFx0hagURRUIXl3qtvnwXR9V2R0VpTF0fk8aQ= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json index 2e3b1aa9e5..05c0dd4b24 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -125249,7 +125249,7 @@ } }, "gcp:appengine/engineSplitTraffic:EngineSplitTraffic": { - "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.\n\n\nTo get more information about ServiceSplitTraffic, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services)\n\n## Example Usage\n\n### App Engine Service Split Traffic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst liveappV1 = new gcp.appengine.StandardAppVersion(\"liveapp_v1\", {\n versionId: \"v1\",\n service: \"liveapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs20\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveappV2 = new gcp.appengine.StandardAppVersion(\"liveapp_v2\", {\n versionId: \"v2\",\n service: \"liveapp\",\n noopOnDestroy: true,\n runtime: \"nodejs20\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveapp = new gcp.appengine.EngineSplitTraffic(\"liveapp\", {\n service: liveappV2.service,\n migrateTraffic: false,\n split: {\n shardBy: \"IP\",\n allocations: pulumi.all([liveappV1.versionId, liveappV2.versionId]).apply(([liveappV1VersionId, liveappV2VersionId]) =\u003e {\n [liveappV1VersionId]: 0.75,\n [liveappV2VersionId]: 0.25,\n }),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nliveapp_v1 = gcp.appengine.StandardAppVersion(\"liveapp_v1\",\n version_id=\"v1\",\n service=\"liveapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n },\n },\n env_variables={\n \"port\": \"8080\",\n })\nliveapp_v2 = gcp.appengine.StandardAppVersion(\"liveapp_v2\",\n version_id=\"v2\",\n service=\"liveapp\",\n noop_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n },\n },\n env_variables={\n \"port\": \"8080\",\n })\nliveapp = gcp.appengine.EngineSplitTraffic(\"liveapp\",\n service=liveapp_v2.service,\n migrate_traffic=False,\n split={\n \"shard_by\": \"IP\",\n \"allocations\": pulumi.Output.all(\n liveappV1Version_id=liveapp_v1.version_id,\n liveappV2Version_id=liveapp_v2.version_id\n).apply(lambda resolved_outputs: {\n \"\": 0.75,\n \"\": 0.25,\n })\n,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var liveappV1 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v1\", new()\n {\n VersionId = \"v1\",\n Service = \"liveapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs20\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveappV2 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v2\", new()\n {\n VersionId = \"v2\",\n Service = \"liveapp\",\n NoopOnDestroy = true,\n Runtime = \"nodejs20\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveapp = new Gcp.AppEngine.EngineSplitTraffic(\"liveapp\", new()\n {\n Service = liveappV2.Service,\n MigrateTraffic = false,\n Split = new Gcp.AppEngine.Inputs.EngineSplitTrafficSplitArgs\n {\n ShardBy = \"IP\",\n Allocations = Output.Tuple(liveappV1.VersionId, liveappV2.VersionId).Apply(values =\u003e\n {\n var liveappV1VersionId = values.Item1;\n var liveappV2VersionId = values.Item2;\n return \n {\n { liveappV1VersionId, 0.75 },\n { liveappV2VersionId, 0.25 },\n };\n }),\n },\n });\n\n});\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n liveappV1:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v1\n properties:\n versionId: v1\n service: liveapp\n deleteServiceOnDestroy: true\n runtime: nodejs20\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveappV2:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v2\n properties:\n versionId: v2\n service: liveapp\n noopOnDestroy: true\n runtime: nodejs20\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveapp:\n type: gcp:appengine:EngineSplitTraffic\n properties:\n service: ${liveappV2.service}\n migrateTraffic: false\n split:\n shardBy: IP\n allocations:\n ${liveappV1.versionId}: 0.75\n ${liveappV2.versionId}: 0.25\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceSplitTraffic can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}`\n\n* `{{project}}/{{service}}`\n\n* `{{service}}`\n\nWhen using the `pulumi import` command, ServiceSplitTraffic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default apps/{{project}}/services/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{project}}/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{service}}\n```\n\n", + "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.\n\n\nTo get more information about ServiceSplitTraffic, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services)\n\n## Example Usage\n\n### App Engine Service Split Traffic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst liveappV1 = new gcp.appengine.StandardAppVersion(\"liveapp_v1\", {\n versionId: \"v1\",\n service: \"liveapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs20\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveappV2 = new gcp.appengine.StandardAppVersion(\"liveapp_v2\", {\n versionId: \"v2\",\n service: \"liveapp\",\n noopOnDestroy: true,\n runtime: \"nodejs20\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveapp = new gcp.appengine.EngineSplitTraffic(\"liveapp\", {\n service: liveappV2.service,\n migrateTraffic: false,\n split: {\n shardBy: \"IP\",\n allocations: pulumi.all([liveappV1.versionId, liveappV2.versionId]).apply(([liveappV1VersionId, liveappV2VersionId]) =\u003e {\n [liveappV1VersionId]: 0.75,\n [liveappV2VersionId]: 0.25,\n }),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nliveapp_v1 = gcp.appengine.StandardAppVersion(\"liveapp_v1\",\n version_id=\"v1\",\n service=\"liveapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n },\n },\n env_variables={\n \"port\": \"8080\",\n })\nliveapp_v2 = gcp.appengine.StandardAppVersion(\"liveapp_v2\",\n version_id=\"v2\",\n service=\"liveapp\",\n noop_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n },\n },\n env_variables={\n \"port\": \"8080\",\n })\nliveapp = gcp.appengine.EngineSplitTraffic(\"liveapp\",\n service=liveapp_v2.service,\n migrate_traffic=False,\n split={\n \"shard_by\": \"IP\",\n \"allocations\": pulumi.Output.all(\n liveappV1Version_id=liveapp_v1.version_id,\n liveappV2Version_id=liveapp_v2.version_id\n).apply(lambda resolved_outputs: {\n resolved_outputs['liveappV1Version_id']: 0.75,\n resolved_outputs['liveappV2Version_id']: 0.25,\n })\n,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var liveappV1 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v1\", new()\n {\n VersionId = \"v1\",\n Service = \"liveapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs20\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveappV2 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v2\", new()\n {\n VersionId = \"v2\",\n Service = \"liveapp\",\n NoopOnDestroy = true,\n Runtime = \"nodejs20\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveapp = new Gcp.AppEngine.EngineSplitTraffic(\"liveapp\", new()\n {\n Service = liveappV2.Service,\n MigrateTraffic = false,\n Split = new Gcp.AppEngine.Inputs.EngineSplitTrafficSplitArgs\n {\n ShardBy = \"IP\",\n Allocations = Output.Tuple(liveappV1.VersionId, liveappV2.VersionId).Apply(values =\u003e\n {\n var liveappV1VersionId = values.Item1;\n var liveappV2VersionId = values.Item2;\n return \n {\n { liveappV1VersionId, 0.75 },\n { liveappV2VersionId, 0.25 },\n };\n }),\n },\n });\n\n});\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n liveappV1:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v1\n properties:\n versionId: v1\n service: liveapp\n deleteServiceOnDestroy: true\n runtime: nodejs20\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveappV2:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v2\n properties:\n versionId: v2\n service: liveapp\n noopOnDestroy: true\n runtime: nodejs20\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveapp:\n type: gcp:appengine:EngineSplitTraffic\n properties:\n service: ${liveappV2.service}\n migrateTraffic: false\n split:\n shardBy: IP\n allocations:\n ${liveappV1.versionId}: 0.75\n ${liveappV2.versionId}: 0.25\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceSplitTraffic can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}`\n\n* `{{project}}/{{service}}`\n\n* `{{service}}`\n\nWhen using the `pulumi import` command, ServiceSplitTraffic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default apps/{{project}}/services/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{project}}/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{service}}\n```\n\n", "properties": { "migrateTraffic": { "type": "boolean", @@ -129440,7 +129440,7 @@ } }, "gcp:biglake/table:Table": { - "description": "Represents a table.\n\n\nTo get more information about Table, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases.tables)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_tables)\n\n## Example Usage\n\n### Biglake Table\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst catalog = new gcp.biglake.Catalog(\"catalog\", {\n name: \"my_catalog\",\n location: \"US\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my_bucket\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst metadataFolder = new gcp.storage.BucketObject(\"metadata_folder\", {\n name: \"metadata/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst dataFolder = new gcp.storage.BucketObject(\"data_folder\", {\n name: \"data/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst database = new gcp.biglake.Database(\"database\", {\n name: \"my_database\",\n catalog: catalog.id,\n type: \"HIVE\",\n hiveOptions: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${metadataFolder.name}`,\n parameters: {\n owner: \"Alex\",\n },\n },\n});\nconst table = new gcp.biglake.Table(\"table\", {\n name: \"my_table\",\n database: database.id,\n type: \"HIVE\",\n hiveOptions: {\n tableType: \"MANAGED_TABLE\",\n storageDescriptor: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${dataFolder.name}`,\n inputFormat: \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n outputFormat: \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n parameters: {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n transient_lastDdlTime: \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n owner: \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n provider: \"iceberg\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncatalog = gcp.biglake.Catalog(\"catalog\",\n name=\"my_catalog\",\n location=\"US\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my_bucket\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nmetadata_folder = gcp.storage.BucketObject(\"metadata_folder\",\n name=\"metadata/\",\n content=\" \",\n bucket=bucket.name)\ndata_folder = gcp.storage.BucketObject(\"data_folder\",\n name=\"data/\",\n content=\" \",\n bucket=bucket.name)\ndatabase = gcp.biglake.Database(\"database\",\n name=\"my_database\",\n catalog=catalog.id,\n type=\"HIVE\",\n hive_options={\n \"location_uri\": pulumi.Output.all(\n bucketName=bucket.name,\n metadataFolderName=metadata_folder.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['metadataFolderName']}\")\n,\n \"parameters\": {\n \"owner\": \"Alex\",\n },\n })\ntable = gcp.biglake.Table(\"table\",\n name=\"my_table\",\n database=database.id,\n type=\"HIVE\",\n hive_options={\n \"table_type\": \"MANAGED_TABLE\",\n \"storage_descriptor\": {\n \"location_uri\": pulumi.Output.all(\n bucketName=bucket.name,\n dataFolderName=data_folder.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['dataFolderName']}\")\n,\n \"input_format\": \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n \"output_format\": \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n \"parameters\": {\n \"spark_sql_create_version\": \"3.1.3\",\n \"spark_sql_sources_schema_num_parts\": \"1\",\n \"transient_last_ddl_time\": \"1680894197\",\n \"spark_sql_partition_provider\": \"catalog\",\n \"owner\": \"John Doe\",\n \"spark_sql_sources_schema_part_0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark_sql_sources_provider\": \"iceberg\",\n \"provider\": \"iceberg\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var catalog = new Gcp.BigLake.Catalog(\"catalog\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var metadataFolder = new Gcp.Storage.BucketObject(\"metadata_folder\", new()\n {\n Name = \"metadata/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var dataFolder = new Gcp.Storage.BucketObject(\"data_folder\", new()\n {\n Name = \"data/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var database = new Gcp.BigLake.Database(\"database\", new()\n {\n Name = \"my_database\",\n Catalog = catalog.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.DatabaseHiveOptionsArgs\n {\n LocationUri = Output.Tuple(bucket.Name, metadataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var metadataFolderName = values.Item2;\n return $\"gs://{bucketName}/{metadataFolderName}\";\n }),\n Parameters = \n {\n { \"owner\", \"Alex\" },\n },\n },\n });\n\n var table = new Gcp.BigLake.Table(\"table\", new()\n {\n Name = \"my_table\",\n Database = database.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.TableHiveOptionsArgs\n {\n TableType = \"MANAGED_TABLE\",\n StorageDescriptor = new Gcp.BigLake.Inputs.TableHiveOptionsStorageDescriptorArgs\n {\n LocationUri = Output.Tuple(bucket.Name, dataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var dataFolderName = values.Item2;\n return $\"gs://{bucketName}/{dataFolderName}\";\n }),\n InputFormat = \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n OutputFormat = \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n Parameters = \n {\n { \"spark.sql.create.version\", \"3.1.3\" },\n { \"spark.sql.sources.schema.numParts\", \"1\" },\n { \"transient_lastDdlTime\", \"1680894197\" },\n { \"spark.sql.partitionProvider\", \"catalog\" },\n { \"owner\", \"John Doe\" },\n { \"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\" },\n { \"spark.sql.sources.provider\", \"iceberg\" },\n { \"provider\", \"iceberg\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcatalog, err := biglake.NewCatalog(ctx, \"catalog\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmetadataFolder, err := storage.NewBucketObject(ctx, \"metadata_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"metadata/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataFolder, err := storage.NewBucketObject(ctx, \"data_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"data/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := biglake.NewDatabase(ctx, \"database\", \u0026biglake.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_database\"),\n\t\t\tCatalog: catalog.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.DatabaseHiveOptionsArgs{\n\t\t\t\tLocationUri: pulumi.All(bucket.Name, metadataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tmetadataFolderName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, metadataFolderName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"Alex\"),\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 = biglake.NewTable(ctx, \"table\", \u0026biglake.TableArgs{\n\t\t\tName: pulumi.String(\"my_table\"),\n\t\t\tDatabase: database.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.TableHiveOptionsArgs{\n\t\t\t\tTableType: pulumi.String(\"MANAGED_TABLE\"),\n\t\t\t\tStorageDescriptor: \u0026biglake.TableHiveOptionsStorageDescriptorArgs{\n\t\t\t\t\tLocationUri: pulumi.All(bucket.Name, dataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tdataFolderName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, dataFolderName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tInputFormat: pulumi.String(\"org.apache.hadoop.mapred.SequenceFileInputFormat\"),\n\t\t\t\t\tOutputFormat: pulumi.String(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\"),\n\t\t\t\t},\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"spark.sql.create.version\": pulumi.String(\"3.1.3\"),\n\t\t\t\t\t\"spark.sql.sources.schema.numParts\": pulumi.String(\"1\"),\n\t\t\t\t\t\"transient_lastDdlTime\": pulumi.String(\"1680894197\"),\n\t\t\t\t\t\"spark.sql.partitionProvider\": pulumi.String(\"catalog\"),\n\t\t\t\t\t\"owner\": pulumi.String(\"John Doe\"),\n\t\t\t\t\t\"spark.sql.sources.schema.part.0\": pulumi.String(\"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n\t\t\t\t\t\"spark.sql.sources.provider\": pulumi.String(\"iceberg\"),\n\t\t\t\t\t\"provider\": pulumi.String(\"iceberg\"),\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.gcp.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.biglake.Database;\nimport com.pulumi.gcp.biglake.DatabaseArgs;\nimport com.pulumi.gcp.biglake.inputs.DatabaseHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.Table;\nimport com.pulumi.gcp.biglake.TableArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsStorageDescriptorArgs;\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 catalog = new Catalog(\"catalog\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var metadataFolder = new BucketObject(\"metadataFolder\", BucketObjectArgs.builder()\n .name(\"metadata/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var dataFolder = new BucketObject(\"dataFolder\", BucketObjectArgs.builder()\n .name(\"data/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .name(\"my_database\")\n .catalog(catalog.id())\n .type(\"HIVE\")\n .hiveOptions(DatabaseHiveOptionsArgs.builder()\n .locationUri(Output.tuple(bucket.name(), metadataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var metadataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,metadataFolderName);\n }))\n .parameters(Map.of(\"owner\", \"Alex\"))\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"my_table\")\n .database(database.id())\n .type(\"HIVE\")\n .hiveOptions(TableHiveOptionsArgs.builder()\n .tableType(\"MANAGED_TABLE\")\n .storageDescriptor(TableHiveOptionsStorageDescriptorArgs.builder()\n .locationUri(Output.tuple(bucket.name(), dataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var dataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,dataFolderName);\n }))\n .inputFormat(\"org.apache.hadoop.mapred.SequenceFileInputFormat\")\n .outputFormat(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\")\n .build())\n .parameters(Map.ofEntries(\n Map.entry(\"spark.sql.create.version\", \"3.1.3\"),\n Map.entry(\"spark.sql.sources.schema.numParts\", \"1\"),\n Map.entry(\"transient_lastDdlTime\", \"1680894197\"),\n Map.entry(\"spark.sql.partitionProvider\", \"catalog\"),\n Map.entry(\"owner\", \"John Doe\"),\n Map.entry(\"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n Map.entry(\"spark.sql.sources.provider\", \"iceberg\"),\n Map.entry(\"provider\", \"iceberg\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n catalog:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my_bucket\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n metadataFolder:\n type: gcp:storage:BucketObject\n name: metadata_folder\n properties:\n name: metadata/\n content: ' '\n bucket: ${bucket.name}\n dataFolder:\n type: gcp:storage:BucketObject\n name: data_folder\n properties:\n name: data/\n content: ' '\n bucket: ${bucket.name}\n database:\n type: gcp:biglake:Database\n properties:\n name: my_database\n catalog: ${catalog.id}\n type: HIVE\n hiveOptions:\n locationUri: gs://${bucket.name}/${metadataFolder.name}\n parameters:\n owner: Alex\n table:\n type: gcp:biglake:Table\n properties:\n name: my_table\n database: ${database.id}\n type: HIVE\n hiveOptions:\n tableType: MANAGED_TABLE\n storageDescriptor:\n locationUri: gs://${bucket.name}/${dataFolder.name}\n inputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat\n outputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\n parameters:\n spark.sql.create.version: 3.1.3\n spark.sql.sources.schema.numParts: '1'\n transient_lastDdlTime: '1680894197'\n spark.sql.partitionProvider: catalog\n owner: John Doe\n spark.sql.sources.schema.part.0: '{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"age\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}]}'\n spark.sql.sources.provider: iceberg\n provider: iceberg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTable can be imported using any of these accepted formats:\n\n* `{{database}}/tables/{{name}}`\n\nWhen using the `pulumi import` command, Table can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/table:Table default {{database}}/tables/{{name}}\n```\n\n", + "description": "Represents a table.\n\n\nTo get more information about Table, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases.tables)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_tables)\n\n## Example Usage\n\n### Biglake Table\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst catalog = new gcp.biglake.Catalog(\"catalog\", {\n name: \"my_catalog\",\n location: \"US\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my_bucket\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst metadataFolder = new gcp.storage.BucketObject(\"metadata_folder\", {\n name: \"metadata/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst dataFolder = new gcp.storage.BucketObject(\"data_folder\", {\n name: \"data/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst database = new gcp.biglake.Database(\"database\", {\n name: \"my_database\",\n catalog: catalog.id,\n type: \"HIVE\",\n hiveOptions: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${metadataFolder.name}`,\n parameters: {\n owner: \"Alex\",\n },\n },\n});\nconst table = new gcp.biglake.Table(\"table\", {\n name: \"my_table\",\n database: database.id,\n type: \"HIVE\",\n hiveOptions: {\n tableType: \"MANAGED_TABLE\",\n storageDescriptor: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${dataFolder.name}`,\n inputFormat: \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n outputFormat: \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n parameters: {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n transient_lastDdlTime: \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n owner: \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n provider: \"iceberg\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncatalog = gcp.biglake.Catalog(\"catalog\",\n name=\"my_catalog\",\n location=\"US\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my_bucket\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nmetadata_folder = gcp.storage.BucketObject(\"metadata_folder\",\n name=\"metadata/\",\n content=\" \",\n bucket=bucket.name)\ndata_folder = gcp.storage.BucketObject(\"data_folder\",\n name=\"data/\",\n content=\" \",\n bucket=bucket.name)\ndatabase = gcp.biglake.Database(\"database\",\n name=\"my_database\",\n catalog=catalog.id,\n type=\"HIVE\",\n hive_options={\n \"location_uri\": pulumi.Output.all(\n bucketName=bucket.name,\n metadataFolderName=metadata_folder.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['metadataFolderName']}\")\n,\n \"parameters\": {\n \"owner\": \"Alex\",\n },\n })\ntable = gcp.biglake.Table(\"table\",\n name=\"my_table\",\n database=database.id,\n type=\"HIVE\",\n hive_options={\n \"table_type\": \"MANAGED_TABLE\",\n \"storage_descriptor\": {\n \"location_uri\": pulumi.Output.all(\n bucketName=bucket.name,\n dataFolderName=data_folder.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['dataFolderName']}\")\n,\n \"input_format\": \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n \"output_format\": \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n \"parameters\": {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n \"transient_lastDdlTime\": \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n \"owner\": \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n \"provider\": \"iceberg\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var catalog = new Gcp.BigLake.Catalog(\"catalog\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var metadataFolder = new Gcp.Storage.BucketObject(\"metadata_folder\", new()\n {\n Name = \"metadata/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var dataFolder = new Gcp.Storage.BucketObject(\"data_folder\", new()\n {\n Name = \"data/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var database = new Gcp.BigLake.Database(\"database\", new()\n {\n Name = \"my_database\",\n Catalog = catalog.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.DatabaseHiveOptionsArgs\n {\n LocationUri = Output.Tuple(bucket.Name, metadataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var metadataFolderName = values.Item2;\n return $\"gs://{bucketName}/{metadataFolderName}\";\n }),\n Parameters = \n {\n { \"owner\", \"Alex\" },\n },\n },\n });\n\n var table = new Gcp.BigLake.Table(\"table\", new()\n {\n Name = \"my_table\",\n Database = database.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.TableHiveOptionsArgs\n {\n TableType = \"MANAGED_TABLE\",\n StorageDescriptor = new Gcp.BigLake.Inputs.TableHiveOptionsStorageDescriptorArgs\n {\n LocationUri = Output.Tuple(bucket.Name, dataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var dataFolderName = values.Item2;\n return $\"gs://{bucketName}/{dataFolderName}\";\n }),\n InputFormat = \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n OutputFormat = \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n Parameters = \n {\n { \"spark.sql.create.version\", \"3.1.3\" },\n { \"spark.sql.sources.schema.numParts\", \"1\" },\n { \"transient_lastDdlTime\", \"1680894197\" },\n { \"spark.sql.partitionProvider\", \"catalog\" },\n { \"owner\", \"John Doe\" },\n { \"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\" },\n { \"spark.sql.sources.provider\", \"iceberg\" },\n { \"provider\", \"iceberg\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcatalog, err := biglake.NewCatalog(ctx, \"catalog\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmetadataFolder, err := storage.NewBucketObject(ctx, \"metadata_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"metadata/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataFolder, err := storage.NewBucketObject(ctx, \"data_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"data/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := biglake.NewDatabase(ctx, \"database\", \u0026biglake.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_database\"),\n\t\t\tCatalog: catalog.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.DatabaseHiveOptionsArgs{\n\t\t\t\tLocationUri: pulumi.All(bucket.Name, metadataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tmetadataFolderName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, metadataFolderName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"Alex\"),\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 = biglake.NewTable(ctx, \"table\", \u0026biglake.TableArgs{\n\t\t\tName: pulumi.String(\"my_table\"),\n\t\t\tDatabase: database.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.TableHiveOptionsArgs{\n\t\t\t\tTableType: pulumi.String(\"MANAGED_TABLE\"),\n\t\t\t\tStorageDescriptor: \u0026biglake.TableHiveOptionsStorageDescriptorArgs{\n\t\t\t\t\tLocationUri: pulumi.All(bucket.Name, dataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tdataFolderName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, dataFolderName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tInputFormat: pulumi.String(\"org.apache.hadoop.mapred.SequenceFileInputFormat\"),\n\t\t\t\t\tOutputFormat: pulumi.String(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\"),\n\t\t\t\t},\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"spark.sql.create.version\": pulumi.String(\"3.1.3\"),\n\t\t\t\t\t\"spark.sql.sources.schema.numParts\": pulumi.String(\"1\"),\n\t\t\t\t\t\"transient_lastDdlTime\": pulumi.String(\"1680894197\"),\n\t\t\t\t\t\"spark.sql.partitionProvider\": pulumi.String(\"catalog\"),\n\t\t\t\t\t\"owner\": pulumi.String(\"John Doe\"),\n\t\t\t\t\t\"spark.sql.sources.schema.part.0\": pulumi.String(\"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n\t\t\t\t\t\"spark.sql.sources.provider\": pulumi.String(\"iceberg\"),\n\t\t\t\t\t\"provider\": pulumi.String(\"iceberg\"),\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.gcp.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.biglake.Database;\nimport com.pulumi.gcp.biglake.DatabaseArgs;\nimport com.pulumi.gcp.biglake.inputs.DatabaseHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.Table;\nimport com.pulumi.gcp.biglake.TableArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsStorageDescriptorArgs;\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 catalog = new Catalog(\"catalog\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var metadataFolder = new BucketObject(\"metadataFolder\", BucketObjectArgs.builder()\n .name(\"metadata/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var dataFolder = new BucketObject(\"dataFolder\", BucketObjectArgs.builder()\n .name(\"data/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .name(\"my_database\")\n .catalog(catalog.id())\n .type(\"HIVE\")\n .hiveOptions(DatabaseHiveOptionsArgs.builder()\n .locationUri(Output.tuple(bucket.name(), metadataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var metadataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,metadataFolderName);\n }))\n .parameters(Map.of(\"owner\", \"Alex\"))\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"my_table\")\n .database(database.id())\n .type(\"HIVE\")\n .hiveOptions(TableHiveOptionsArgs.builder()\n .tableType(\"MANAGED_TABLE\")\n .storageDescriptor(TableHiveOptionsStorageDescriptorArgs.builder()\n .locationUri(Output.tuple(bucket.name(), dataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var dataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,dataFolderName);\n }))\n .inputFormat(\"org.apache.hadoop.mapred.SequenceFileInputFormat\")\n .outputFormat(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\")\n .build())\n .parameters(Map.ofEntries(\n Map.entry(\"spark.sql.create.version\", \"3.1.3\"),\n Map.entry(\"spark.sql.sources.schema.numParts\", \"1\"),\n Map.entry(\"transient_lastDdlTime\", \"1680894197\"),\n Map.entry(\"spark.sql.partitionProvider\", \"catalog\"),\n Map.entry(\"owner\", \"John Doe\"),\n Map.entry(\"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n Map.entry(\"spark.sql.sources.provider\", \"iceberg\"),\n Map.entry(\"provider\", \"iceberg\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n catalog:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my_bucket\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n metadataFolder:\n type: gcp:storage:BucketObject\n name: metadata_folder\n properties:\n name: metadata/\n content: ' '\n bucket: ${bucket.name}\n dataFolder:\n type: gcp:storage:BucketObject\n name: data_folder\n properties:\n name: data/\n content: ' '\n bucket: ${bucket.name}\n database:\n type: gcp:biglake:Database\n properties:\n name: my_database\n catalog: ${catalog.id}\n type: HIVE\n hiveOptions:\n locationUri: gs://${bucket.name}/${metadataFolder.name}\n parameters:\n owner: Alex\n table:\n type: gcp:biglake:Table\n properties:\n name: my_table\n database: ${database.id}\n type: HIVE\n hiveOptions:\n tableType: MANAGED_TABLE\n storageDescriptor:\n locationUri: gs://${bucket.name}/${dataFolder.name}\n inputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat\n outputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\n parameters:\n spark.sql.create.version: 3.1.3\n spark.sql.sources.schema.numParts: '1'\n transient_lastDdlTime: '1680894197'\n spark.sql.partitionProvider: catalog\n owner: John Doe\n spark.sql.sources.schema.part.0: '{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"age\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}]}'\n spark.sql.sources.provider: iceberg\n provider: iceberg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTable can be imported using any of these accepted formats:\n\n* `{{database}}/tables/{{name}}`\n\nWhen using the `pulumi import` command, Table can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/table:Table default {{database}}/tables/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -129983,7 +129983,7 @@ } }, "gcp:bigquery/connection:Connection": { - "description": "A connection allows BigQuery connections to external data sources..\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/bigqueryconnection/rest/v1/projects.locations.connections/create)\n* How-to Guides\n * [Cloud SQL federated queries](https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries)\n\n\n\n## Example Usage\n\n### Bigquery Connection Cloud Resource\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudResource: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_resource={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudResource = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudResource: \u0026bigquery.ConnectionCloudResourceArgs{},\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudResource()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudResource: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"aws-us-east-1\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n aws: {\n accessRole: {\n iamRoleId: \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"aws-us-east-1\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n aws={\n \"access_role\": {\n \"iam_role_id\": \"arn:aws:iam::999999999999:role/omnirole\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"aws-us-east-1\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Aws = new Gcp.BigQuery.Inputs.ConnectionAwsArgs\n {\n AccessRole = new Gcp.BigQuery.Inputs.ConnectionAwsAccessRoleArgs\n {\n IamRoleId = \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAws: \u0026bigquery.ConnectionAwsArgs{\n\t\t\t\tAccessRole: \u0026bigquery.ConnectionAwsAccessRoleArgs{\n\t\t\t\t\tIamRoleId: pulumi.String(\"arn:aws:iam::999999999999:role/omnirole\"),\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsAccessRoleArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"aws-us-east-1\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .aws(ConnectionAwsArgs.builder()\n .accessRole(ConnectionAwsAccessRoleArgs.builder()\n .iamRoleId(\"arn:aws:iam::999999999999:role/omnirole\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: aws-us-east-1\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n aws:\n accessRole:\n iamRoleId: arn:aws:iam::999999999999:role/omnirole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Azure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"azure-eastus2\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n azure: {\n customerTenantId: \"customer-tenant-id\",\n federatedApplicationClientId: \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"azure-eastus2\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n azure={\n \"customer_tenant_id\": \"customer-tenant-id\",\n \"federated_application_client_id\": \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"azure-eastus2\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Azure = new Gcp.BigQuery.Inputs.ConnectionAzureArgs\n {\n CustomerTenantId = \"customer-tenant-id\",\n FederatedApplicationClientId = \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"azure-eastus2\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAzure: \u0026bigquery.ConnectionAzureArgs{\n\t\t\t\tCustomerTenantId: pulumi.String(\"customer-tenant-id\"),\n\t\t\t\tFederatedApplicationClientId: pulumi.String(\"b43eeeee-eeee-eeee-eeee-a480155501ce\"),\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAzureArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"azure-eastus2\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .azure(ConnectionAzureArgs.builder()\n .customerTenantId(\"customer-tenant-id\")\n .federatedApplicationClientId(\"b43eeeee-eeee-eeee-eeee-a480155501ce\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: azure-eastus2\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n azure:\n customerTenantId: customer-tenant-id\n federatedApplicationClientId: b43eeeee-eeee-eeee-eeee-a480155501ce\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n databaseRole: \"database_role\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"database_role\": \"database_role\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n DatabaseRole = \"database_role\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tDatabaseRole: pulumi.String(\"database_role\"),\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .databaseRole(\"database_role\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n databaseRole: database_role\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner Databoost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n useParallelism: true,\n useDataBoost: true,\n maxParallelism: 100,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"use_parallelism\": True,\n \"use_data_boost\": True,\n \"max_parallelism\": 100,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n UseParallelism = true,\n UseDataBoost = true,\n MaxParallelism = 100,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tUseParallelism: pulumi.Bool(true),\n\t\t\t\tUseDataBoost: pulumi.Bool(true),\n\t\t\t\tMaxParallelism: pulumi.Int(100),\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .useParallelism(true)\n .useDataBoost(true)\n .maxParallelism(100)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n useParallelism: true\n useDataBoost: true\n maxParallelism: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"my-connection\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n },\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n spark: {\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"my-connection\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc_dataproc_allow_zero_workers\": \"true\",\n },\n },\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-standard-2\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 35,\n },\n },\n })\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n spark={\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"my-connection\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskSizeGb = 35,\n },\n },\n },\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Spark = new Gcp.BigQuery.Inputs.ConnectionSparkArgs\n {\n SparkHistoryServerConfig = new Gcp.BigQuery.Inputs.ConnectionSparkSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-2\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\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 = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{\n\t\t\t\tSparkHistoryServerConfig: \u0026bigquery.ConnectionSparkSparkHistoryServerConfigArgs{\n\t\t\t\t\tDataprocCluster: basic.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\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.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkSparkHistoryServerConfigArgs;\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 basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"my-connection\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-standard-2\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(35)\n .build())\n .build())\n .build())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .spark(ConnectionSparkArgs.builder()\n .sparkHistoryServerConfig(ConnectionSparkSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n spark:\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: my-connection\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"tf-test-my-password_77884\",\n});\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst project = gcp.organizations.getProject({});\nconst keySaUser = new gcp.projects.IAMMember(\"key_sa_user\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\nconst bq_connection_cmek = new gcp.bigquery.Connection(\"bq-connection-cmek\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n kmsKeyName: \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"tf-test-my-password_77884\")\nbq_sa = gcp.bigquery.get_default_service_account()\nproject = gcp.organizations.get_project()\nkey_sa_user = gcp.projects.IAMMember(\"key_sa_user\",\n project=project.project_id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\nbq_connection_cmek = gcp.bigquery.Connection(\"bq-connection-cmek\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n kms_key_name=\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"tf-test-my-password_77884\",\n });\n\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keySaUser = new Gcp.Projects.IAMMember(\"key_sa_user\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n var bq_connection_cmek = new Gcp.BigQuery.Connection(\"bq-connection-cmek\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n KmsKeyName = \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"tf-test-my-password_77884\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, \u0026bigquery.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"key_sa_user\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", bqSa.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"bq-connection-cmek\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tKmsKeyName: pulumi.String(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"tf-test-my-password_77884\")\n .build());\n\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n final var project = OrganizationsFunctions.getProject();\n\n var keySaUser = new IAMMember(\"keySaUser\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n var bq_connection_cmek = new Connection(\"bq-connection-cmek\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .kmsKeyName(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: tf-test-my-password_77884\n keySaUser:\n type: gcp:projects:IAMMember\n name: key_sa_user\n properties:\n project: ${project.projectId}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\n bq-connection-cmek:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n kmsKeyName: projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\nvariables:\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", + "description": "A connection allows BigQuery connections to external data sources..\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/bigqueryconnection/rest/v1/projects.locations.connections/create)\n* How-to Guides\n * [Cloud SQL federated queries](https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries)\n\n\n\n## Example Usage\n\n### Bigquery Connection Cloud Resource\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudResource: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_resource={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudResource = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudResource: \u0026bigquery.ConnectionCloudResourceArgs{},\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudResource()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudResource: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"aws-us-east-1\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n aws: {\n accessRole: {\n iamRoleId: \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"aws-us-east-1\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n aws={\n \"access_role\": {\n \"iam_role_id\": \"arn:aws:iam::999999999999:role/omnirole\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"aws-us-east-1\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Aws = new Gcp.BigQuery.Inputs.ConnectionAwsArgs\n {\n AccessRole = new Gcp.BigQuery.Inputs.ConnectionAwsAccessRoleArgs\n {\n IamRoleId = \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAws: \u0026bigquery.ConnectionAwsArgs{\n\t\t\t\tAccessRole: \u0026bigquery.ConnectionAwsAccessRoleArgs{\n\t\t\t\t\tIamRoleId: pulumi.String(\"arn:aws:iam::999999999999:role/omnirole\"),\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsAccessRoleArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"aws-us-east-1\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .aws(ConnectionAwsArgs.builder()\n .accessRole(ConnectionAwsAccessRoleArgs.builder()\n .iamRoleId(\"arn:aws:iam::999999999999:role/omnirole\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: aws-us-east-1\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n aws:\n accessRole:\n iamRoleId: arn:aws:iam::999999999999:role/omnirole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Azure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"azure-eastus2\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n azure: {\n customerTenantId: \"customer-tenant-id\",\n federatedApplicationClientId: \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"azure-eastus2\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n azure={\n \"customer_tenant_id\": \"customer-tenant-id\",\n \"federated_application_client_id\": \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"azure-eastus2\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Azure = new Gcp.BigQuery.Inputs.ConnectionAzureArgs\n {\n CustomerTenantId = \"customer-tenant-id\",\n FederatedApplicationClientId = \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"azure-eastus2\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAzure: \u0026bigquery.ConnectionAzureArgs{\n\t\t\t\tCustomerTenantId: pulumi.String(\"customer-tenant-id\"),\n\t\t\t\tFederatedApplicationClientId: pulumi.String(\"b43eeeee-eeee-eeee-eeee-a480155501ce\"),\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAzureArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"azure-eastus2\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .azure(ConnectionAzureArgs.builder()\n .customerTenantId(\"customer-tenant-id\")\n .federatedApplicationClientId(\"b43eeeee-eeee-eeee-eeee-a480155501ce\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: azure-eastus2\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n azure:\n customerTenantId: customer-tenant-id\n federatedApplicationClientId: b43eeeee-eeee-eeee-eeee-a480155501ce\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n databaseRole: \"database_role\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"database_role\": \"database_role\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n DatabaseRole = \"database_role\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tDatabaseRole: pulumi.String(\"database_role\"),\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .databaseRole(\"database_role\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n databaseRole: database_role\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner Databoost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n useParallelism: true,\n useDataBoost: true,\n maxParallelism: 100,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"use_parallelism\": True,\n \"use_data_boost\": True,\n \"max_parallelism\": 100,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n UseParallelism = true,\n UseDataBoost = true,\n MaxParallelism = 100,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tUseParallelism: pulumi.Bool(true),\n\t\t\t\tUseDataBoost: pulumi.Bool(true),\n\t\t\t\tMaxParallelism: pulumi.Int(100),\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.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .useParallelism(true)\n .useDataBoost(true)\n .maxParallelism(100)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n useParallelism: true\n useDataBoost: true\n maxParallelism: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"my-connection\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n },\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n spark: {\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"my-connection\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-standard-2\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 35,\n },\n },\n })\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n spark={\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"my-connection\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskSizeGb = 35,\n },\n },\n },\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Spark = new Gcp.BigQuery.Inputs.ConnectionSparkArgs\n {\n SparkHistoryServerConfig = new Gcp.BigQuery.Inputs.ConnectionSparkSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-2\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\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 = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{\n\t\t\t\tSparkHistoryServerConfig: \u0026bigquery.ConnectionSparkSparkHistoryServerConfigArgs{\n\t\t\t\t\tDataprocCluster: basic.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\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.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkSparkHistoryServerConfigArgs;\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 basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"my-connection\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-standard-2\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(35)\n .build())\n .build())\n .build())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .spark(ConnectionSparkArgs.builder()\n .sparkHistoryServerConfig(ConnectionSparkSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n spark:\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: my-connection\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"tf-test-my-password_77884\",\n});\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst project = gcp.organizations.getProject({});\nconst keySaUser = new gcp.projects.IAMMember(\"key_sa_user\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\nconst bq_connection_cmek = new gcp.bigquery.Connection(\"bq-connection-cmek\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n kmsKeyName: \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"tf-test-my-password_77884\")\nbq_sa = gcp.bigquery.get_default_service_account()\nproject = gcp.organizations.get_project()\nkey_sa_user = gcp.projects.IAMMember(\"key_sa_user\",\n project=project.project_id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\nbq_connection_cmek = gcp.bigquery.Connection(\"bq-connection-cmek\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n kms_key_name=\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"tf-test-my-password_77884\",\n });\n\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keySaUser = new Gcp.Projects.IAMMember(\"key_sa_user\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n var bq_connection_cmek = new Gcp.BigQuery.Connection(\"bq-connection-cmek\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n KmsKeyName = \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"tf-test-my-password_77884\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, \u0026bigquery.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"key_sa_user\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", bqSa.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"bq-connection-cmek\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tKmsKeyName: pulumi.String(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"tf-test-my-password_77884\")\n .build());\n\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n final var project = OrganizationsFunctions.getProject();\n\n var keySaUser = new IAMMember(\"keySaUser\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n var bq_connection_cmek = new Connection(\"bq-connection-cmek\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .kmsKeyName(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: tf-test-my-password_77884\n keySaUser:\n type: gcp:projects:IAMMember\n name: key_sa_user\n properties:\n project: ${project.projectId}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\n bq-connection-cmek:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n kmsKeyName: projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\nvariables:\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", "properties": { "aws": { "$ref": "#/types/gcp:bigquery/ConnectionAws:ConnectionAws", @@ -130719,7 +130719,7 @@ } }, "gcp:bigquery/dataset:Dataset": { - "description": "## Example Usage\n\n### Bigquery Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\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 bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultEncryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_encryption_configuration={\n \"kms_key_name\": crypto_key.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultEncryptionConfiguration = new Gcp.BigQuery.Inputs.DatasetDefaultEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tDefaultEncryptionConfiguration: \u0026bigquery.DatasetDefaultEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\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.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetDefaultEncryptionConfigurationArgs;\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 keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultEncryptionConfiguration(DatasetDefaultEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultEncryptionConfiguration:\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public\",\n friendlyName: \"test\",\n description: \"This dataset is public\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"private\",\n friendlyName: \"test\",\n description: \"This dataset is private\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n {\n dataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public\",\n friendly_name=\"test\",\n description=\"This dataset is public\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"private\",\n friendly_name=\"test\",\n description=\"This dataset is private\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n {\n \"dataset\": {\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n FriendlyName = \"test\",\n Description = \"This dataset is public\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"private\",\n FriendlyName = \"test\",\n Description = \"This dataset is private\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\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 = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetArgs{\n\t\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetDatasetArgs{\n\t\t\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"VIEWS\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetDatasetArgs;\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 bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .friendlyName(\"test\")\n .description(\"This dataset is public\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"private\")\n .friendlyName(\"test\")\n .description(\"This dataset is private\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build(),\n DatasetAccessArgs.builder()\n .dataset(DatasetAccessDatasetArgs.builder()\n .dataset(DatasetAccessDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n friendlyName: test\n description: This dataset is public\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n friendlyName: test\n description: This dataset is private\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n - dataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: \"my@service-account.com\",\n },\n {\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\",\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": \"my@service-account.com\",\n },\n {\n \"routine\": {\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = \"my@service-account.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\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\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\t\t\tRoutineId: publicRoutine.RoutineId,\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(\"my@service-account.com\")\n .build(),\n DatasetAccessArgs.builder()\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n accesses:\n - role: OWNER\n userByEmail: my@service-account.com\n - routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset External Reference Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"aws-us-east-1\",\n externalDatasetReference: {\n externalSource: \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n connection: \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"aws-us-east-1\",\n external_dataset_reference={\n \"external_source\": \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n \"connection\": \"projects/project/locations/aws-us-east-1/connections/connection\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"aws-us-east-1\",\n ExternalDatasetReference = new Gcp.BigQuery.Inputs.DatasetExternalDatasetReferenceArgs\n {\n ExternalSource = \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n Connection = \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tExternalDatasetReference: \u0026bigquery.DatasetExternalDatasetReferenceArgs{\n\t\t\t\tExternalSource: pulumi.String(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\"),\n\t\t\t\tConnection: pulumi.String(\"projects/project/locations/aws-us-east-1/connections/connection\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetExternalDatasetReferenceArgs;\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 dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"aws-us-east-1\")\n .externalDatasetReference(DatasetExternalDatasetReferenceArgs.builder()\n .externalSource(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\")\n .connection(\"projects/project/locations/aws-us-east-1/connections/connection\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: aws-us-east-1\n externalDatasetReference:\n externalSource: aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\n connection: projects/project/locations/aws-us-east-1/connections/connection\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}`\n\n* `{{project}}/{{dataset_id}}`\n\n* `{{dataset_id}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default projects/{{project}}/datasets/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{project}}/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{dataset_id}}\n```\n\n", + "description": "## Example Usage\n\n### Bigquery Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\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 bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultEncryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_encryption_configuration={\n \"kms_key_name\": crypto_key.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultEncryptionConfiguration = new Gcp.BigQuery.Inputs.DatasetDefaultEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tDefaultEncryptionConfiguration: \u0026bigquery.DatasetDefaultEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\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.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetDefaultEncryptionConfigurationArgs;\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 keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultEncryptionConfiguration(DatasetDefaultEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultEncryptionConfiguration:\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public\",\n friendlyName: \"test\",\n description: \"This dataset is public\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"private\",\n friendlyName: \"test\",\n description: \"This dataset is private\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n {\n dataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public\",\n friendly_name=\"test\",\n description=\"This dataset is public\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"private\",\n friendly_name=\"test\",\n description=\"This dataset is private\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n {\n \"dataset\": {\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n FriendlyName = \"test\",\n Description = \"This dataset is public\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"private\",\n FriendlyName = \"test\",\n Description = \"This dataset is private\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\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 = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetArgs{\n\t\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetDatasetArgs{\n\t\t\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"VIEWS\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetDatasetArgs;\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 bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .friendlyName(\"test\")\n .description(\"This dataset is public\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"private\")\n .friendlyName(\"test\")\n .description(\"This dataset is private\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build(),\n DatasetAccessArgs.builder()\n .dataset(DatasetAccessDatasetArgs.builder()\n .dataset(DatasetAccessDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n friendlyName: test\n description: This dataset is public\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n friendlyName: test\n description: This dataset is private\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n - dataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: \"my@service-account.com\",\n },\n {\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\",\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": \"my@service-account.com\",\n },\n {\n \"routine\": {\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = \"my@service-account.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\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\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\t\t\tRoutineId: publicRoutine.RoutineId,\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(\"my@service-account.com\")\n .build(),\n DatasetAccessArgs.builder()\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n accesses:\n - role: OWNER\n userByEmail: my@service-account.com\n - routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset External Reference Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"aws-us-east-1\",\n externalDatasetReference: {\n externalSource: \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n connection: \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"aws-us-east-1\",\n external_dataset_reference={\n \"external_source\": \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n \"connection\": \"projects/project/locations/aws-us-east-1/connections/connection\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"aws-us-east-1\",\n ExternalDatasetReference = new Gcp.BigQuery.Inputs.DatasetExternalDatasetReferenceArgs\n {\n ExternalSource = \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n Connection = \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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 := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tExternalDatasetReference: \u0026bigquery.DatasetExternalDatasetReferenceArgs{\n\t\t\t\tExternalSource: pulumi.String(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\"),\n\t\t\t\tConnection: pulumi.String(\"projects/project/locations/aws-us-east-1/connections/connection\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetExternalDatasetReferenceArgs;\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 dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"aws-us-east-1\")\n .externalDatasetReference(DatasetExternalDatasetReferenceArgs.builder()\n .externalSource(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\")\n .connection(\"projects/project/locations/aws-us-east-1/connections/connection\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: aws-us-east-1\n externalDatasetReference:\n externalSource: aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\n connection: projects/project/locations/aws-us-east-1/connections/connection\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}`\n\n* `{{project}}/{{dataset_id}}`\n\n* `{{dataset_id}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default projects/{{project}}/datasets/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{project}}/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{dataset_id}}\n```\n\n", "properties": { "accesses": { "type": "array", @@ -131053,7 +131053,7 @@ } }, "gcp:bigquery/datasetAccess:DatasetAccess": { - "description": "## Example Usage\n\n### Bigquery Dataset Access Basic User\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {datasetId: \"example_dataset\"});\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: dataset.datasetId,\n role: \"OWNER\",\n userByEmail: bqowner.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\", dataset_id=\"example_dataset\")\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=dataset.dataset_id,\n role=\"OWNER\",\n user_by_email=bqowner.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = dataset.DatasetId,\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: dataset.DatasetId,\n\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\tUserByEmail: bqowner.Email,\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\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 dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(dataset.datasetId())\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${dataset.datasetId}\n role: OWNER\n userByEmail: ${bqowner.email}\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access View\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"example_dataset\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"example_dataset2\"});\nconst publicTable = new gcp.bigquery.Table(\"public\", {\n deletionProtection: false,\n datasetId: _public.datasetId,\n tableId: \"example_table\",\n view: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n useLegacySql: false,\n },\n});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n view: {\n projectId: publicTable.project,\n datasetId: _public.datasetId,\n tableId: publicTable.tableId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"example_dataset\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"example_dataset2\")\npublic_table = gcp.bigquery.Table(\"public\",\n deletion_protection=False,\n dataset_id=public.dataset_id,\n table_id=\"example_table\",\n view={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"use_legacy_sql\": False,\n })\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n view={\n \"project_id\": public_table.project,\n \"dataset_id\": public.dataset_id,\n \"table_id\": public_table.table_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"example_dataset2\",\n });\n\n var publicTable = new Gcp.BigQuery.Table(\"public\", new()\n {\n DeletionProtection = false,\n DatasetId = @public.DatasetId,\n TableId = \"example_table\",\n View = new Gcp.BigQuery.Inputs.TableViewArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n UseLegacySql = false,\n },\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n View = new Gcp.BigQuery.Inputs.DatasetAccessViewArgs\n {\n ProjectId = publicTable.Project,\n DatasetId = @public.DatasetId,\n TableId = publicTable.TableId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublicTable, err := bigquery.NewTable(ctx, \"public\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tView: \u0026bigquery.TableViewArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tUseLegacySql: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tView: \u0026bigquery.DatasetAccessViewArgs{\n\t\t\t\tProjectId: publicTable.Project,\n\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\tTableId: publicTable.TableId,\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableViewArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs;\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 private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"example_dataset2\")\n .build());\n\n var publicTable = new Table(\"publicTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(public_.datasetId())\n .tableId(\"example_table\")\n .view(TableViewArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .useLegacySql(false)\n .build())\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .view(DatasetAccessViewArgs.builder()\n .projectId(publicTable.project())\n .datasetId(public_.datasetId())\n .tableId(publicTable.tableId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n view:\n projectId: ${publicTable.project}\n datasetId: ${public.datasetId}\n tableId: ${publicTable.tableId}\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset2\n publicTable:\n type: gcp:bigquery:Table\n name: public\n properties:\n deletionProtection: false\n datasetId: ${public.datasetId}\n tableId: example_table\n view:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n useLegacySql: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"private\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"public\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n authorizedDataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"private\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"public\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n authorized_dataset={\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n AuthorizedDataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tAuthorizedDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetArgs{\n\t\t\t\tDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetDatasetArgs{\n\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t},\n\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"VIEWS\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetDatasetArgs;\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 private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .authorizedDataset(DatasetAccessAuthorizedDatasetArgs.builder()\n .dataset(DatasetAccessAuthorizedDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n authorizedDataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n});\nconst authorizedRoutine = new gcp.bigquery.DatasetAccess(\"authorized_routine\", {\n datasetId: _private.datasetId,\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\")\nauthorized_routine = gcp.bigquery.DatasetAccess(\"authorized_routine\",\n dataset_id=private.dataset_id,\n routine={\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n });\n\n var authorizedRoutine = new Gcp.BigQuery.DatasetAccess(\"authorized_routine\", new()\n {\n DatasetId = @private.DatasetId,\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\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\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"authorized_routine\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\tRoutineId: publicRoutine.RoutineId,\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .build());\n\n var authorizedRoutine = new DatasetAccess(\"authorizedRoutine\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n authorizedRoutine:\n type: gcp:bigquery:DatasetAccess\n name: authorized_routine\n properties:\n datasetId: ${private.datasetId}\n routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "## Example Usage\n\n### Bigquery Dataset Access Basic User\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {datasetId: \"example_dataset\"});\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: dataset.datasetId,\n role: \"OWNER\",\n userByEmail: bqowner.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\", dataset_id=\"example_dataset\")\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=dataset.dataset_id,\n role=\"OWNER\",\n user_by_email=bqowner.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = dataset.DatasetId,\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: dataset.DatasetId,\n\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\tUserByEmail: bqowner.Email,\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\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 dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(dataset.datasetId())\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${dataset.datasetId}\n role: OWNER\n userByEmail: ${bqowner.email}\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access View\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"example_dataset\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"example_dataset2\"});\nconst publicTable = new gcp.bigquery.Table(\"public\", {\n deletionProtection: false,\n datasetId: _public.datasetId,\n tableId: \"example_table\",\n view: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n useLegacySql: false,\n },\n});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n view: {\n projectId: publicTable.project,\n datasetId: _public.datasetId,\n tableId: publicTable.tableId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"example_dataset\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"example_dataset2\")\npublic_table = gcp.bigquery.Table(\"public\",\n deletion_protection=False,\n dataset_id=public.dataset_id,\n table_id=\"example_table\",\n view={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"use_legacy_sql\": False,\n })\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n view={\n \"project_id\": public_table.project,\n \"dataset_id\": public.dataset_id,\n \"table_id\": public_table.table_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"example_dataset2\",\n });\n\n var publicTable = new Gcp.BigQuery.Table(\"public\", new()\n {\n DeletionProtection = false,\n DatasetId = @public.DatasetId,\n TableId = \"example_table\",\n View = new Gcp.BigQuery.Inputs.TableViewArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n UseLegacySql = false,\n },\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n View = new Gcp.BigQuery.Inputs.DatasetAccessViewArgs\n {\n ProjectId = publicTable.Project,\n DatasetId = @public.DatasetId,\n TableId = publicTable.TableId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublicTable, err := bigquery.NewTable(ctx, \"public\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tView: \u0026bigquery.TableViewArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tUseLegacySql: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tView: \u0026bigquery.DatasetAccessViewArgs{\n\t\t\t\tProjectId: publicTable.Project,\n\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\tTableId: publicTable.TableId,\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableViewArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs;\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 private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"example_dataset2\")\n .build());\n\n var publicTable = new Table(\"publicTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(public_.datasetId())\n .tableId(\"example_table\")\n .view(TableViewArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .useLegacySql(false)\n .build())\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .view(DatasetAccessViewArgs.builder()\n .projectId(publicTable.project())\n .datasetId(public_.datasetId())\n .tableId(publicTable.tableId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n view:\n projectId: ${publicTable.project}\n datasetId: ${public.datasetId}\n tableId: ${publicTable.tableId}\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset2\n publicTable:\n type: gcp:bigquery:Table\n name: public\n properties:\n deletionProtection: false\n datasetId: ${public.datasetId}\n tableId: example_table\n view:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n useLegacySql: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"private\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"public\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n authorizedDataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"private\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"public\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n authorized_dataset={\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n AuthorizedDataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tAuthorizedDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetArgs{\n\t\t\t\tDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetDatasetArgs{\n\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t},\n\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"VIEWS\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetDatasetArgs;\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 private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .authorizedDataset(DatasetAccessAuthorizedDatasetArgs.builder()\n .dataset(DatasetAccessAuthorizedDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n authorizedDataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n});\nconst authorizedRoutine = new gcp.bigquery.DatasetAccess(\"authorized_routine\", {\n datasetId: _private.datasetId,\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\")\nauthorized_routine = gcp.bigquery.DatasetAccess(\"authorized_routine\",\n dataset_id=private.dataset_id,\n routine={\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n });\n\n var authorizedRoutine = new Gcp.BigQuery.DatasetAccess(\"authorized_routine\", new()\n {\n DatasetId = @private.DatasetId,\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\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\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"authorized_routine\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\tRoutineId: publicRoutine.RoutineId,\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .build());\n\n var authorizedRoutine = new DatasetAccess(\"authorizedRoutine\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n authorizedRoutine:\n type: gcp:bigquery:DatasetAccess\n name: authorized_routine\n properties:\n datasetId: ${private.datasetId}\n routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "apiUpdatedMember": { "type": "boolean", @@ -132279,7 +132279,7 @@ } }, "gcp:bigquery/routine:Routine": { - "description": "A user-defined function or a stored procedure that belongs to a Dataset\n\n\nTo get more information about Routine, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n* How-to Guides\n * [Routines Intro](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n\n## Example Usage\n\n### Bigquery Routine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SQL\",\n definitionBody: \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SQL\",\n definition_body=\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SQL\",\n DefinitionBody = \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SQL\")\n .definitionBody(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SQL\n definitionBody: CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Json\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"JAVASCRIPT\",\n definitionBody: \"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments: [\n {\n name: \"x\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n name: \"y\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n returnType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"JAVASCRIPT\",\n definition_body=\"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments=[\n {\n \"name\": \"x\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n \"name\": \"y\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n return_type=\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"JAVASCRIPT\",\n DefinitionBody = \"CREATE FUNCTION multiplyInputs return x*y;\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"x\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"y\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"JAVASCRIPT\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION multiplyInputs return x*y;\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"x\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"y\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"JAVASCRIPT\")\n .definitionBody(\"CREATE FUNCTION multiplyInputs return x*y;\")\n .arguments( \n RoutineArgumentArgs.builder()\n .name(\"x\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build(),\n RoutineArgumentArgs.builder()\n .name(\"y\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n language: JAVASCRIPT\n definitionBody: CREATE FUNCTION multiplyInputs return x*y;\n arguments:\n - name: x\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n - name: y\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n returnType: '{\"typeKind\" : \"FLOAT64\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Tvf\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\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\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pyspark = new gcp.bigquery.Routine(\"pyspark\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: `from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\\\n .option(\"writeMethod\", \"direct\") \\\\\n .save(\"wordcount_dataset.wordcount_output\")\n`,\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark = gcp.bigquery.Routine(\"pyspark\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\"\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n\"\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pyspark = new Gcp.BigQuery.Routine(\"pyspark\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = @\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"\"spark-bigquery-demo\"\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"\"bigquery\"\") \\\n .option(\"\"table\"\", \"\"bigquery-public-data:samples.shakespeare\"\") \\\n .load()\nwords.createOrReplaceTempView(\"\"words\"\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"\"sum(word_count)\"\", \"\"sum_word_count\"\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"\"bigquery\"\") \\\n .option(\"\"writeMethod\"\", \"\"direct\"\") \\\n .save(\"\"wordcount_dataset.wordcount_output\"\")\n\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(`from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n`),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pyspark = new Routine(\"pyspark\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\"\"\nfrom pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n \"\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pyspark:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody: \"from pyspark.sql import SparkSession\\n\\nspark = SparkSession.builder.appName(\\\"spark-bigquery-demo\\\").getOrCreate()\\n \\n# Load data from BigQuery.\\nwords = spark.read.format(\\\"bigquery\\\") \\\\\\n .option(\\\"table\\\", \\\"bigquery-public-data:samples.shakespeare\\\") \\\\\\n .load()\\nwords.createOrReplaceTempView(\\\"words\\\")\\n \\n# Perform word count.\\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\\\"sum(word_count)\\\", \\\"sum_word_count\\\")\\nword_count.show()\\nword_count.printSchema()\\n \\n# Saving the data to BigQuery\\nword_count.write.format(\\\"bigquery\\\") \\\\\\n .option(\\\"writeMethod\\\", \\\"direct\\\") \\\\\\n .save(\\\"wordcount_dataset.wordcount_output\\\")\\n\"\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark Mainfile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pysparkMainfile = new gcp.bigquery.Routine(\"pyspark_mainfile\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n mainFileUri: \"gs://test-bucket/main.py\",\n pyFileUris: [\"gs://test-bucket/lib.py\"],\n fileUris: [\"gs://test-bucket/distribute_in_executor.json\"],\n archiveUris: [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark_mainfile = gcp.bigquery.Routine(\"pyspark_mainfile\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"main_file_uri\": \"gs://test-bucket/main.py\",\n \"py_file_uris\": [\"gs://test-bucket/lib.py\"],\n \"file_uris\": [\"gs://test-bucket/distribute_in_executor.json\"],\n \"archive_uris\": [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pysparkMainfile = new Gcp.BigQuery.Routine(\"pyspark_mainfile\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n MainFileUri = \"gs://test-bucket/main.py\",\n PyFileUris = new[]\n {\n \"gs://test-bucket/lib.py\",\n },\n FileUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.json\",\n },\n ArchiveUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.tar.gz\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark_mainfile\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tMainFileUri: pulumi.String(\"gs://test-bucket/main.py\"),\n\t\t\t\tPyFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/lib.py\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.json\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.tar.gz\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pysparkMainfile = new Routine(\"pysparkMainfile\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .mainFileUri(\"gs://test-bucket/main.py\")\n .pyFileUris(\"gs://test-bucket/lib.py\")\n .fileUris(\"gs://test-bucket/distribute_in_executor.json\")\n .archiveUris(\"gs://test-bucket/distribute_in_executor.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pysparkMainfile:\n type: gcp:bigquery:Routine\n name: pyspark_mainfile\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n mainFileUri: gs://test-bucket/main.py\n pyFileUris:\n - gs://test-bucket/lib.py\n fileUris:\n - gs://test-bucket/distribute_in_executor.json\n archiveUris:\n - gs://test-bucket/distribute_in_executor.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Spark Jar\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst sparkJar = new gcp.bigquery.Routine(\"spark_jar\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SCALA\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n containerImage: \"gcr.io/my-project-id/my-spark-image:latest\",\n mainClass: \"com.google.test.jar.MainClass\",\n jarUris: [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n properties: {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"true\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\nspark_jar = gcp.bigquery.Routine(\"spark_jar\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SCALA\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"container_image\": \"gcr.io/my-project-id/my-spark-image:latest\",\n \"main_class\": \"com.google.test.jar.MainClass\",\n \"jar_uris\": [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n \"properties\": {\n \"spark_dataproc_scaling_version\": \"2\",\n \"spark_reducer_fetch_migrated_shuffle_enabled\": \"true\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var sparkJar = new Gcp.BigQuery.Routine(\"spark_jar\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SCALA\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n ContainerImage = \"gcr.io/my-project-id/my-spark-image:latest\",\n MainClass = \"com.google.test.jar.MainClass\",\n JarUris = new[]\n {\n \"gs://test-bucket/uberjar_spark_spark3.jar\",\n },\n Properties = \n {\n { \"spark.dataproc.scaling.version\", \"2\" },\n { \"spark.reducer.fetchMigratedShuffle.enabled\", \"true\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"spark_jar\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SCALA\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tContainerImage: pulumi.String(\"gcr.io/my-project-id/my-spark-image:latest\"),\n\t\t\t\tMainClass: pulumi.String(\"com.google.test.jar.MainClass\"),\n\t\t\t\tJarUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/uberjar_spark_spark3.jar\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dataproc.scaling.version\": pulumi.String(\"2\"),\n\t\t\t\t\t\"spark.reducer.fetchMigratedShuffle.enabled\": pulumi.String(\"true\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var sparkJar = new Routine(\"sparkJar\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SCALA\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .containerImage(\"gcr.io/my-project-id/my-spark-image:latest\")\n .mainClass(\"com.google.test.jar.MainClass\")\n .jarUris(\"gs://test-bucket/uberjar_spark_spark3.jar\")\n .properties(Map.ofEntries(\n Map.entry(\"spark.dataproc.scaling.version\", \"2\"),\n Map.entry(\"spark.reducer.fetchMigratedShuffle.enabled\", \"true\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n sparkJar:\n type: gcp:bigquery:Routine\n name: spark_jar\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SCALA\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n containerImage: gcr.io/my-project-id/my-spark-image:latest\n mainClass: com.google.test.jar.MainClass\n jarUris:\n - gs://test-bucket/uberjar_spark_spark3.jar\n properties:\n spark.dataproc.scaling.version: '2'\n spark.reducer.fetchMigratedShuffle.enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Data Governance Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"tf_test_dataset_id_15222\"});\nconst customMaskingRoutine = new gcp.bigquery.Routine(\"custom_masking_routine\", {\n datasetId: test.datasetId,\n routineId: \"custom_masking_routine\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"SQL\",\n dataGovernanceType: \"DATA_MASKING\",\n definitionBody: \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments: [{\n name: \"ssn\",\n dataType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"tf_test_dataset_id_15222\")\ncustom_masking_routine = gcp.bigquery.Routine(\"custom_masking_routine\",\n dataset_id=test.dataset_id,\n routine_id=\"custom_masking_routine\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"SQL\",\n data_governance_type=\"DATA_MASKING\",\n definition_body=\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments=[{\n \"name\": \"ssn\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"tf_test_dataset_id_15222\",\n });\n\n var customMaskingRoutine = new Gcp.BigQuery.Routine(\"custom_masking_routine\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"custom_masking_routine\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"SQL\",\n DataGovernanceType = \"DATA_MASKING\",\n DefinitionBody = \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"ssn\",\n DataType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test_dataset_id_15222\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"custom_masking_routine\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"custom_masking_routine\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDataGovernanceType: pulumi.String(\"DATA_MASKING\"),\n\t\t\tDefinitionBody: pulumi.String(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"ssn\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"tf_test_dataset_id_15222\")\n .build());\n\n var customMaskingRoutine = new Routine(\"customMaskingRoutine\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"custom_masking_routine\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"SQL\")\n .dataGovernanceType(\"DATA_MASKING\")\n .definitionBody(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"ssn\")\n .dataType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test_dataset_id_15222\n customMaskingRoutine:\n type: gcp:bigquery:Routine\n name: custom_masking_routine\n properties:\n datasetId: ${test.datasetId}\n routineId: custom_masking_routine\n routineType: SCALAR_FUNCTION\n language: SQL\n dataGovernanceType: DATA_MASKING\n definitionBody: SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\n arguments:\n - name: ssn\n dataType: '{\"typeKind\" : \"STRING\"}'\n returnType: '{\"typeKind\" : \"STRING\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Remote Function\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n cloudResource: {},\n});\nconst remoteFunction = new gcp.bigquery.Routine(\"remote_function\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n definitionBody: \"\",\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remoteFunctionOptions: {\n endpoint: \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n connection: testConnection.name,\n maxBatchingRows: \"10\",\n userDefinedContext: {\n z: \"1.5\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n cloud_resource={})\nremote_function = gcp.bigquery.Routine(\"remote_function\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n definition_body=\"\",\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remote_function_options={\n \"endpoint\": \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n \"connection\": test_connection.name,\n \"max_batching_rows\": \"10\",\n \"user_defined_context\": {\n \"z\": \"1.5\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n CloudResource = null,\n });\n\n var remoteFunction = new Gcp.BigQuery.Routine(\"remote_function\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n DefinitionBody = \"\",\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n RemoteFunctionOptions = new Gcp.BigQuery.Inputs.RoutineRemoteFunctionOptionsArgs\n {\n Endpoint = \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n Connection = testConnection.Name,\n MaxBatchingRows = \"10\",\n UserDefinedContext = \n {\n { \"z\", \"1.5\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudResource: \u0026bigquery.ConnectionCloudResourceArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"remote_function\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\tRemoteFunctionOptions: \u0026bigquery.RoutineRemoteFunctionOptionsArgs{\n\t\t\t\tEndpoint: pulumi.String(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\"),\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tMaxBatchingRows: pulumi.String(\"10\"),\n\t\t\t\tUserDefinedContext: pulumi.StringMap{\n\t\t\t\t\t\"z\": pulumi.String(\"1.5\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineRemoteFunctionOptionsArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .cloudResource()\n .build());\n\n var remoteFunction = new Routine(\"remoteFunction\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .definitionBody(\"\")\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .remoteFunctionOptions(RoutineRemoteFunctionOptionsArgs.builder()\n .endpoint(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\")\n .connection(testConnection.name())\n .maxBatchingRows(\"10\")\n .userDefinedContext(Map.of(\"z\", \"1.5\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n cloudResource: {}\n remoteFunction:\n type: gcp:bigquery:Routine\n name: remote_function\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n definitionBody:\n returnType: '{\"typeKind\" : \"STRING\"}'\n remoteFunctionOptions:\n endpoint: https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\n connection: ${testConnection.name}\n maxBatchingRows: '10'\n userDefinedContext:\n z: '1.5'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoutine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}`\n\n* `{{project}}/{{dataset_id}}/{{routine_id}}`\n\n* `{{dataset_id}}/{{routine_id}}`\n\nWhen using the `pulumi import` command, Routine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{project}}/{{dataset_id}}/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{dataset_id}}/{{routine_id}}\n```\n\n", + "description": "A user-defined function or a stored procedure that belongs to a Dataset\n\n\nTo get more information about Routine, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n* How-to Guides\n * [Routines Intro](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n\n## Example Usage\n\n### Bigquery Routine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SQL\",\n definitionBody: \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SQL\",\n definition_body=\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SQL\",\n DefinitionBody = \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SQL\")\n .definitionBody(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SQL\n definitionBody: CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Json\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"JAVASCRIPT\",\n definitionBody: \"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments: [\n {\n name: \"x\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n name: \"y\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n returnType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"JAVASCRIPT\",\n definition_body=\"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments=[\n {\n \"name\": \"x\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n \"name\": \"y\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n return_type=\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"JAVASCRIPT\",\n DefinitionBody = \"CREATE FUNCTION multiplyInputs return x*y;\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"x\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"y\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"JAVASCRIPT\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION multiplyInputs return x*y;\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"x\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"y\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"JAVASCRIPT\")\n .definitionBody(\"CREATE FUNCTION multiplyInputs return x*y;\")\n .arguments( \n RoutineArgumentArgs.builder()\n .name(\"x\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build(),\n RoutineArgumentArgs.builder()\n .name(\"y\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n language: JAVASCRIPT\n definitionBody: CREATE FUNCTION multiplyInputs return x*y;\n arguments:\n - name: x\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n - name: y\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n returnType: '{\"typeKind\" : \"FLOAT64\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Tvf\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\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\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pyspark = new gcp.bigquery.Routine(\"pyspark\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: `from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\\\n .option(\"writeMethod\", \"direct\") \\\\\n .save(\"wordcount_dataset.wordcount_output\")\n`,\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark = gcp.bigquery.Routine(\"pyspark\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\"\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n\"\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pyspark = new Gcp.BigQuery.Routine(\"pyspark\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = @\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"\"spark-bigquery-demo\"\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"\"bigquery\"\") \\\n .option(\"\"table\"\", \"\"bigquery-public-data:samples.shakespeare\"\") \\\n .load()\nwords.createOrReplaceTempView(\"\"words\"\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"\"sum(word_count)\"\", \"\"sum_word_count\"\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"\"bigquery\"\") \\\n .option(\"\"writeMethod\"\", \"\"direct\"\") \\\n .save(\"\"wordcount_dataset.wordcount_output\"\")\n\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(`from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n`),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pyspark = new Routine(\"pyspark\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\"\"\nfrom pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n \"\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pyspark:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody: \"from pyspark.sql import SparkSession\\n\\nspark = SparkSession.builder.appName(\\\"spark-bigquery-demo\\\").getOrCreate()\\n \\n# Load data from BigQuery.\\nwords = spark.read.format(\\\"bigquery\\\") \\\\\\n .option(\\\"table\\\", \\\"bigquery-public-data:samples.shakespeare\\\") \\\\\\n .load()\\nwords.createOrReplaceTempView(\\\"words\\\")\\n \\n# Perform word count.\\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\\\"sum(word_count)\\\", \\\"sum_word_count\\\")\\nword_count.show()\\nword_count.printSchema()\\n \\n# Saving the data to BigQuery\\nword_count.write.format(\\\"bigquery\\\") \\\\\\n .option(\\\"writeMethod\\\", \\\"direct\\\") \\\\\\n .save(\\\"wordcount_dataset.wordcount_output\\\")\\n\"\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark Mainfile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pysparkMainfile = new gcp.bigquery.Routine(\"pyspark_mainfile\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n mainFileUri: \"gs://test-bucket/main.py\",\n pyFileUris: [\"gs://test-bucket/lib.py\"],\n fileUris: [\"gs://test-bucket/distribute_in_executor.json\"],\n archiveUris: [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark_mainfile = gcp.bigquery.Routine(\"pyspark_mainfile\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"main_file_uri\": \"gs://test-bucket/main.py\",\n \"py_file_uris\": [\"gs://test-bucket/lib.py\"],\n \"file_uris\": [\"gs://test-bucket/distribute_in_executor.json\"],\n \"archive_uris\": [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pysparkMainfile = new Gcp.BigQuery.Routine(\"pyspark_mainfile\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n MainFileUri = \"gs://test-bucket/main.py\",\n PyFileUris = new[]\n {\n \"gs://test-bucket/lib.py\",\n },\n FileUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.json\",\n },\n ArchiveUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.tar.gz\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark_mainfile\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tMainFileUri: pulumi.String(\"gs://test-bucket/main.py\"),\n\t\t\t\tPyFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/lib.py\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.json\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.tar.gz\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pysparkMainfile = new Routine(\"pysparkMainfile\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .mainFileUri(\"gs://test-bucket/main.py\")\n .pyFileUris(\"gs://test-bucket/lib.py\")\n .fileUris(\"gs://test-bucket/distribute_in_executor.json\")\n .archiveUris(\"gs://test-bucket/distribute_in_executor.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pysparkMainfile:\n type: gcp:bigquery:Routine\n name: pyspark_mainfile\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n mainFileUri: gs://test-bucket/main.py\n pyFileUris:\n - gs://test-bucket/lib.py\n fileUris:\n - gs://test-bucket/distribute_in_executor.json\n archiveUris:\n - gs://test-bucket/distribute_in_executor.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Spark Jar\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst sparkJar = new gcp.bigquery.Routine(\"spark_jar\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SCALA\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n containerImage: \"gcr.io/my-project-id/my-spark-image:latest\",\n mainClass: \"com.google.test.jar.MainClass\",\n jarUris: [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n properties: {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"true\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\nspark_jar = gcp.bigquery.Routine(\"spark_jar\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SCALA\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"container_image\": \"gcr.io/my-project-id/my-spark-image:latest\",\n \"main_class\": \"com.google.test.jar.MainClass\",\n \"jar_uris\": [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n \"properties\": {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"true\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var sparkJar = new Gcp.BigQuery.Routine(\"spark_jar\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SCALA\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n ContainerImage = \"gcr.io/my-project-id/my-spark-image:latest\",\n MainClass = \"com.google.test.jar.MainClass\",\n JarUris = new[]\n {\n \"gs://test-bucket/uberjar_spark_spark3.jar\",\n },\n Properties = \n {\n { \"spark.dataproc.scaling.version\", \"2\" },\n { \"spark.reducer.fetchMigratedShuffle.enabled\", \"true\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"spark_jar\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SCALA\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tContainerImage: pulumi.String(\"gcr.io/my-project-id/my-spark-image:latest\"),\n\t\t\t\tMainClass: pulumi.String(\"com.google.test.jar.MainClass\"),\n\t\t\t\tJarUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/uberjar_spark_spark3.jar\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dataproc.scaling.version\": pulumi.String(\"2\"),\n\t\t\t\t\t\"spark.reducer.fetchMigratedShuffle.enabled\": pulumi.String(\"true\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var sparkJar = new Routine(\"sparkJar\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SCALA\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .containerImage(\"gcr.io/my-project-id/my-spark-image:latest\")\n .mainClass(\"com.google.test.jar.MainClass\")\n .jarUris(\"gs://test-bucket/uberjar_spark_spark3.jar\")\n .properties(Map.ofEntries(\n Map.entry(\"spark.dataproc.scaling.version\", \"2\"),\n Map.entry(\"spark.reducer.fetchMigratedShuffle.enabled\", \"true\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n sparkJar:\n type: gcp:bigquery:Routine\n name: spark_jar\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SCALA\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n containerImage: gcr.io/my-project-id/my-spark-image:latest\n mainClass: com.google.test.jar.MainClass\n jarUris:\n - gs://test-bucket/uberjar_spark_spark3.jar\n properties:\n spark.dataproc.scaling.version: '2'\n spark.reducer.fetchMigratedShuffle.enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Data Governance Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"tf_test_dataset_id_15222\"});\nconst customMaskingRoutine = new gcp.bigquery.Routine(\"custom_masking_routine\", {\n datasetId: test.datasetId,\n routineId: \"custom_masking_routine\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"SQL\",\n dataGovernanceType: \"DATA_MASKING\",\n definitionBody: \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments: [{\n name: \"ssn\",\n dataType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"tf_test_dataset_id_15222\")\ncustom_masking_routine = gcp.bigquery.Routine(\"custom_masking_routine\",\n dataset_id=test.dataset_id,\n routine_id=\"custom_masking_routine\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"SQL\",\n data_governance_type=\"DATA_MASKING\",\n definition_body=\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments=[{\n \"name\": \"ssn\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"tf_test_dataset_id_15222\",\n });\n\n var customMaskingRoutine = new Gcp.BigQuery.Routine(\"custom_masking_routine\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"custom_masking_routine\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"SQL\",\n DataGovernanceType = \"DATA_MASKING\",\n DefinitionBody = \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"ssn\",\n DataType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test_dataset_id_15222\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"custom_masking_routine\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"custom_masking_routine\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDataGovernanceType: pulumi.String(\"DATA_MASKING\"),\n\t\t\tDefinitionBody: pulumi.String(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"ssn\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"tf_test_dataset_id_15222\")\n .build());\n\n var customMaskingRoutine = new Routine(\"customMaskingRoutine\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"custom_masking_routine\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"SQL\")\n .dataGovernanceType(\"DATA_MASKING\")\n .definitionBody(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"ssn\")\n .dataType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test_dataset_id_15222\n customMaskingRoutine:\n type: gcp:bigquery:Routine\n name: custom_masking_routine\n properties:\n datasetId: ${test.datasetId}\n routineId: custom_masking_routine\n routineType: SCALAR_FUNCTION\n language: SQL\n dataGovernanceType: DATA_MASKING\n definitionBody: SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\n arguments:\n - name: ssn\n dataType: '{\"typeKind\" : \"STRING\"}'\n returnType: '{\"typeKind\" : \"STRING\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Remote Function\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n cloudResource: {},\n});\nconst remoteFunction = new gcp.bigquery.Routine(\"remote_function\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n definitionBody: \"\",\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remoteFunctionOptions: {\n endpoint: \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n connection: testConnection.name,\n maxBatchingRows: \"10\",\n userDefinedContext: {\n z: \"1.5\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n cloud_resource={})\nremote_function = gcp.bigquery.Routine(\"remote_function\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n definition_body=\"\",\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remote_function_options={\n \"endpoint\": \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n \"connection\": test_connection.name,\n \"max_batching_rows\": \"10\",\n \"user_defined_context\": {\n \"z\": \"1.5\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n CloudResource = null,\n });\n\n var remoteFunction = new Gcp.BigQuery.Routine(\"remote_function\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n DefinitionBody = \"\",\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n RemoteFunctionOptions = new Gcp.BigQuery.Inputs.RoutineRemoteFunctionOptionsArgs\n {\n Endpoint = \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n Connection = testConnection.Name,\n MaxBatchingRows = \"10\",\n UserDefinedContext = \n {\n { \"z\", \"1.5\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudResource: \u0026bigquery.ConnectionCloudResourceArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"remote_function\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\tRemoteFunctionOptions: \u0026bigquery.RoutineRemoteFunctionOptionsArgs{\n\t\t\t\tEndpoint: pulumi.String(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\"),\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tMaxBatchingRows: pulumi.String(\"10\"),\n\t\t\t\tUserDefinedContext: pulumi.StringMap{\n\t\t\t\t\t\"z\": pulumi.String(\"1.5\"),\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.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineRemoteFunctionOptionsArgs;\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 Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .cloudResource()\n .build());\n\n var remoteFunction = new Routine(\"remoteFunction\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .definitionBody(\"\")\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .remoteFunctionOptions(RoutineRemoteFunctionOptionsArgs.builder()\n .endpoint(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\")\n .connection(testConnection.name())\n .maxBatchingRows(\"10\")\n .userDefinedContext(Map.of(\"z\", \"1.5\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n cloudResource: {}\n remoteFunction:\n type: gcp:bigquery:Routine\n name: remote_function\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n definitionBody:\n returnType: '{\"typeKind\" : \"STRING\"}'\n remoteFunctionOptions:\n endpoint: https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\n connection: ${testConnection.name}\n maxBatchingRows: '10'\n userDefinedContext:\n z: '1.5'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoutine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}`\n\n* `{{project}}/{{dataset_id}}/{{routine_id}}`\n\n* `{{dataset_id}}/{{routine_id}}`\n\nWhen using the `pulumi import` command, Routine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{project}}/{{dataset_id}}/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{dataset_id}}/{{routine_id}}\n```\n\n", "properties": { "arguments": { "type": "array", @@ -140204,7 +140204,7 @@ } }, "gcp:cloudbuild/trigger:Trigger": { - "description": "Configuration for an automated build in response to source repository changes.\n\n\nTo get more information about Trigger, see:\n\n* [API documentation](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers)\n* How-to Guides\n * [Automating builds using build triggers](https://cloud.google.com/cloud-build/docs/running-builds/automate-builds)\n\n\u003e **Note:** You can retrieve the email of the Cloud Build Service Account used in jobs by using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Cloudbuild Trigger Filename\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst filename_trigger = new gcp.cloudbuild.Trigger(\"filename-trigger\", {\n location: \"us-central1\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilename_trigger = gcp.cloudbuild.Trigger(\"filename-trigger\",\n location=\"us-central1\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n substitutions={\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var filename_trigger = new Gcp.CloudBuild.Trigger(\"filename-trigger\", new()\n {\n Location = \"us-central1\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"filename-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\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 filename_trigger = new Trigger(\"filename-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n filename-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n triggerTemplate:\n branchName: main\n repoName: my-repo\n substitutions:\n _FOO: bar\n _BAZ: qux\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Build\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst build_trigger = new gcp.cloudbuild.Trigger(\"build-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [\n {\n name: \"gcr.io/cloud-builders/gsutil\",\n args: [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n timeout: \"120s\",\n secretEnvs: [\"MY_SECRET\"],\n },\n {\n name: \"ubuntu\",\n script: \"echo hello\",\n },\n ],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n npmPackages: [{\n packagePath: \"package.json\",\n repository: \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n pythonPackages: [{\n paths: [\"dist/*\"],\n repository: \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n mavenArtifacts: [{\n repository: \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n path: \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n artifactId: \"my-app\",\n groupId: \"com.mycompany.app\",\n version: \"1.0\",\n }],\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbuild_trigger = gcp.cloudbuild.Trigger(\"build-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [\n {\n \"name\": \"gcr.io/cloud-builders/gsutil\",\n \"args\": [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n \"timeout\": \"120s\",\n \"secret_envs\": [\"MY_SECRET\"],\n },\n {\n \"name\": \"ubuntu\",\n \"script\": \"echo hello\",\n },\n ],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n \"npm_packages\": [{\n \"package_path\": \"package.json\",\n \"repository\": \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n \"python_packages\": [{\n \"paths\": [\"dist/*\"],\n \"repository\": \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n \"maven_artifacts\": [{\n \"repository\": \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n \"path\": \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n \"artifact_id\": \"my-app\",\n \"group_id\": \"com.mycompany.app\",\n \"version\": \"1.0\",\n }],\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var build_trigger = new Gcp.CloudBuild.Trigger(\"build-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"gcr.io/cloud-builders/gsutil\",\n Args = new[]\n {\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n },\n Timeout = \"120s\",\n SecretEnvs = new[]\n {\n \"MY_SECRET\",\n },\n },\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Script = \"echo hello\",\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n NpmPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsNpmPackageArgs\n {\n PackagePath = \"package.json\",\n Repository = \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n },\n },\n PythonPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsPythonPackageArgs\n {\n Paths = new[]\n {\n \"dist/*\",\n },\n Repository = \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n },\n },\n MavenArtifacts = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsMavenArtifactArgs\n {\n Repository = \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n Path = \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n ArtifactId = \"my-app\",\n GroupId = \"com.mycompany.app\",\n Version = \"1.0\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"build-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"gcr.io/cloud-builders/gsutil\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cp\"),\n\t\t\t\t\t\t\tpulumi.String(\"gs://mybucket/remotefile.zip\"),\n\t\t\t\t\t\t\tpulumi.String(\"localfile.zip\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTimeout: pulumi.String(\"120s\"),\n\t\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tScript: pulumi.String(\"echo hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNpmPackages: cloudbuild.TriggerBuildArtifactsNpmPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsNpmPackageArgs{\n\t\t\t\t\t\t\tPackagePath: pulumi.String(\"package.json\"),\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPythonPackages: cloudbuild.TriggerBuildArtifactsPythonPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsPythonPackageArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"dist/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMavenArtifacts: cloudbuild.TriggerBuildArtifactsMavenArtifactArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsMavenArtifactArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\"),\n\t\t\t\t\t\t\tArtifactId: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\tGroupId: pulumi.String(\"com.mycompany.app\"),\n\t\t\t\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 build_trigger = new Trigger(\"build-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps( \n TriggerBuildStepArgs.builder()\n .name(\"gcr.io/cloud-builders/gsutil\")\n .args( \n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\")\n .timeout(\"120s\")\n .secretEnvs(\"MY_SECRET\")\n .build(),\n TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .script(\"echo hello\")\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .npmPackages(TriggerBuildArtifactsNpmPackageArgs.builder()\n .packagePath(\"package.json\")\n .repository(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\")\n .build())\n .pythonPackages(TriggerBuildArtifactsPythonPackageArgs.builder()\n .paths(\"dist/*\")\n .repository(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\")\n .build())\n .mavenArtifacts(TriggerBuildArtifactsMavenArtifactArgs.builder()\n .repository(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\")\n .path(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\")\n .artifactId(\"my-app\")\n .groupId(\"com.mycompany.app\")\n .version(\"1.0\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n build-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: gcr.io/cloud-builders/gsutil\n args:\n - cp\n - gs://mybucket/remotefile.zip\n - localfile.zip\n timeout: 120s\n secretEnvs:\n - MY_SECRET\n - name: ubuntu\n script: echo hello\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n npmPackages:\n - packagePath: package.json\n repository: https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\n pythonPackages:\n - paths:\n - dist/*\n repository: https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\n mavenArtifacts:\n - repository: https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\n path: /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\n artifactId: my-app\n groupId: com.mycompany.app\n version: '1.0'\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudbuildServiceAccount = new gcp.serviceaccount.Account(\"cloudbuild_service_account\", {accountId: \"cloud-sa\"});\nconst actAs = new gcp.projects.IAMMember(\"act_as\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logs_writer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst service_account_trigger = new gcp.cloudbuild.Trigger(\"service-account-trigger\", {\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n serviceAccount: cloudbuildServiceAccount.id,\n filename: \"cloudbuild.yaml\",\n}, {\n dependsOn: [\n actAs,\n logsWriter,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudbuild_service_account = gcp.serviceaccount.Account(\"cloudbuild_service_account\", account_id=\"cloud-sa\")\nact_as = gcp.projects.IAMMember(\"act_as\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountUser\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nlogs_writer = gcp.projects.IAMMember(\"logs_writer\",\n project=project.project_id,\n role=\"roles/logging.logWriter\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nservice_account_trigger = gcp.cloudbuild.Trigger(\"service-account-trigger\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n service_account=cloudbuild_service_account.id,\n filename=\"cloudbuild.yaml\",\n opts = pulumi.ResourceOptions(depends_on=[\n act_as,\n logs_writer,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudbuildServiceAccount = new Gcp.ServiceAccount.Account(\"cloudbuild_service_account\", new()\n {\n AccountId = \"cloud-sa\",\n });\n\n var actAs = new Gcp.Projects.IAMMember(\"act_as\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountUser\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var logsWriter = new Gcp.Projects.IAMMember(\"logs_writer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/logging.logWriter\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var service_account_trigger = new Gcp.CloudBuild.Trigger(\"service-account-trigger\", new()\n {\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n ServiceAccount = cloudbuildServiceAccount.Id,\n Filename = \"cloudbuild.yaml\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n actAs,\n logsWriter,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudbuildServiceAccount, err := serviceaccount.NewAccount(ctx, \"cloudbuild_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tactAs, err := projects.NewIAMMember(ctx, \"act_as\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\tlogsWriter, err := projects.NewIAMMember(ctx, \"logs_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = cloudbuild.NewTrigger(ctx, \"service-account-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tServiceAccount: cloudbuildServiceAccount.ID(),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tactAs,\n\t\t\tlogsWriter,\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.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\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 project = OrganizationsFunctions.getProject();\n\n var cloudbuildServiceAccount = new Account(\"cloudbuildServiceAccount\", AccountArgs.builder()\n .accountId(\"cloud-sa\")\n .build());\n\n var actAs = new IAMMember(\"actAs\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountUser\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var logsWriter = new IAMMember(\"logsWriter\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/logging.logWriter\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var service_account_trigger = new Trigger(\"service-account-trigger\", TriggerArgs.builder()\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .serviceAccount(cloudbuildServiceAccount.id())\n .filename(\"cloudbuild.yaml\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n actAs,\n logsWriter)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-account-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n triggerTemplate:\n branchName: main\n repoName: my-repo\n serviceAccount: ${cloudbuildServiceAccount.id}\n filename: cloudbuild.yaml\n options:\n dependson:\n - ${actAs}\n - ${logsWriter}\n cloudbuildServiceAccount:\n type: gcp:serviceaccount:Account\n name: cloudbuild_service_account\n properties:\n accountId: cloud-sa\n actAs:\n type: gcp:projects:IAMMember\n name: act_as\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${cloudbuildServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n name: logs_writer\n properties:\n project: ${project.projectId}\n role: roles/logging.logWriter\n member: serviceAccount:${cloudbuildServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Include Build Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst include_build_logs_trigger = new gcp.cloudbuild.Trigger(\"include-build-logs-trigger\", {\n location: \"us-central1\",\n name: \"include-build-logs-trigger\",\n filename: \"cloudbuild.yaml\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google-beta\",\n push: {\n branch: \"^main$\",\n },\n },\n includeBuildLogs: \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninclude_build_logs_trigger = gcp.cloudbuild.Trigger(\"include-build-logs-trigger\",\n location=\"us-central1\",\n name=\"include-build-logs-trigger\",\n filename=\"cloudbuild.yaml\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google-beta\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n },\n include_build_logs=\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var include_build_logs_trigger = new Gcp.CloudBuild.Trigger(\"include-build-logs-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"include-build-logs-trigger\",\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google-beta\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n IncludeBuildLogs = \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"include-build-logs-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"include-build-logs-trigger\"),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google-beta\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tIncludeBuildLogs: pulumi.String(\"INCLUDE_BUILD_LOGS_WITH_STATUS\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\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 include_build_logs_trigger = new Trigger(\"include-build-logs-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"include-build-logs-trigger\")\n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google-beta\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .includeBuildLogs(\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n include-build-logs-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: include-build-logs-trigger\n filename: cloudbuild.yaml\n github:\n owner: hashicorp\n name: terraform-provider-google-beta\n push:\n branch: ^main$\n includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_config_trigger = new gcp.cloudbuild.Trigger(\"pubsub-config-trigger\", {\n location: \"us-central1\",\n name: \"pubsub-trigger\",\n description: \"acceptance test example pubsub build trigger\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n substitutions: {\n _ACTION: \"$(body.message.data.action)\",\n },\n filter: \"_ACTION.matches('INSERT')\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_config_trigger = gcp.cloudbuild.Trigger(\"pubsub-config-trigger\",\n location=\"us-central1\",\n name=\"pubsub-trigger\",\n description=\"acceptance test example pubsub build trigger\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n substitutions={\n \"_ACTION\": \"$(body.message.data.action)\",\n },\n filter=\"_ACTION.matches('INSERT')\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_config_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-config-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"pubsub-trigger\",\n Description = \"acceptance test example pubsub build trigger\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n Substitutions = \n {\n { \"_ACTION\", \"$(body.message.data.action)\" },\n },\n Filter = \"_ACTION.matches('INSERT')\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"pubsub-trigger\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example pubsub build trigger\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_ACTION\": pulumi.String(\"$(body.message.data.action)\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\"_ACTION.matches('INSERT')\"),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_config_trigger = new Trigger(\"pubsub-config-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"pubsub-trigger\")\n .description(\"acceptance test example pubsub build trigger\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .substitutions(Map.of(\"_ACTION\", \"$(body.message.data.action)\"))\n .filter(\"_ACTION.matches('INSERT')\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: pubsub-trigger\n description: acceptance test example pubsub build trigger\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n substitutions:\n _ACTION: $(body.message.data.action)\n filter: _ACTION.matches('INSERT')\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Webhook Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst webhookTriggerSecretKey = new gcp.secretmanager.Secret(\"webhook_trigger_secret_key\", {\n secretId: \"webhook-trigger-secret-key\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst webhookTriggerSecretKeyData = new gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\", {\n secret: webhookTriggerSecretKey.id,\n secretData: \"secretkeygoeshere\",\n});\nconst project = gcp.organizations.getProject({});\nconst secretAccessor = project.then(project =\u003e gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [`serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com`],\n }],\n}));\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n project: webhookTriggerSecretKey.project,\n secretId: webhookTriggerSecretKey.secretId,\n policyData: secretAccessor.then(secretAccessor =\u003e secretAccessor.policyData),\n});\nconst webhook_config_trigger = new gcp.cloudbuild.Trigger(\"webhook-config-trigger\", {\n name: \"webhook-trigger\",\n description: \"acceptance test example webhook build trigger\",\n webhookConfig: {\n secret: webhookTriggerSecretKeyData.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwebhook_trigger_secret_key = gcp.secretmanager.Secret(\"webhook_trigger_secret_key\",\n secret_id=\"webhook-trigger-secret-key\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nwebhook_trigger_secret_key_data = gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\",\n secret=webhook_trigger_secret_key.id,\n secret_data=\"secretkeygoeshere\")\nproject = gcp.organizations.get_project()\nsecret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [f\"serviceAccount:service-{project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n project=webhook_trigger_secret_key.project,\n secret_id=webhook_trigger_secret_key.secret_id,\n policy_data=secret_accessor.policy_data)\nwebhook_config_trigger = gcp.cloudbuild.Trigger(\"webhook-config-trigger\",\n name=\"webhook-trigger\",\n description=\"acceptance test example webhook build trigger\",\n webhook_config={\n \"secret\": webhook_trigger_secret_key_data.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webhookTriggerSecretKey = new Gcp.SecretManager.Secret(\"webhook_trigger_secret_key\", new()\n {\n SecretId = \"webhook-trigger-secret-key\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var webhookTriggerSecretKeyData = new Gcp.SecretManager.SecretVersion(\"webhook_trigger_secret_key_data\", new()\n {\n Secret = webhookTriggerSecretKey.Id,\n SecretData = \"secretkeygoeshere\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n Project = webhookTriggerSecretKey.Project,\n SecretId = webhookTriggerSecretKey.SecretId,\n PolicyData = secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n var webhook_config_trigger = new Gcp.CloudBuild.Trigger(\"webhook-config-trigger\", new()\n {\n Name = \"webhook-trigger\",\n Description = \"acceptance test example webhook build trigger\",\n WebhookConfig = new Gcp.CloudBuild.Inputs.TriggerWebhookConfigArgs\n {\n Secret = webhookTriggerSecretKeyData.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twebhookTriggerSecretKey, err := secretmanager.NewSecret(ctx, \"webhook_trigger_secret_key\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"webhook-trigger-secret-key\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\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\twebhookTriggerSecretKeyData, err := secretmanager.NewSecretVersion(ctx, \"webhook_trigger_secret_key_data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhookTriggerSecretKey.ID(),\n\t\t\tSecretData: pulumi.String(\"secretkeygoeshere\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\tfmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.Number),\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\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tProject: webhookTriggerSecretKey.Project,\n\t\t\tSecretId: webhookTriggerSecretKey.SecretId,\n\t\t\tPolicyData: pulumi.String(secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"webhook-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"webhook-trigger\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example webhook build trigger\"),\n\t\t\tWebhookConfig: \u0026cloudbuild.TriggerWebhookConfigArgs{\n\t\t\t\tSecret: webhookTriggerSecretKeyData.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\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.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerWebhookConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 webhookTriggerSecretKey = new Secret(\"webhookTriggerSecretKey\", SecretArgs.builder()\n .secretId(\"webhook-trigger-secret-key\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var webhookTriggerSecretKeyData = new SecretVersion(\"webhookTriggerSecretKeyData\", SecretVersionArgs.builder()\n .secret(webhookTriggerSecretKey.id())\n .secretData(\"secretkeygoeshere\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n final var secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .project(webhookTriggerSecretKey.project())\n .secretId(webhookTriggerSecretKey.secretId())\n .policyData(secretAccessor.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n var webhook_config_trigger = new Trigger(\"webhook-config-trigger\", TriggerArgs.builder()\n .name(\"webhook-trigger\")\n .description(\"acceptance test example webhook build trigger\")\n .webhookConfig(TriggerWebhookConfigArgs.builder()\n .secret(webhookTriggerSecretKeyData.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webhookTriggerSecretKey:\n type: gcp:secretmanager:Secret\n name: webhook_trigger_secret_key\n properties:\n secretId: webhook-trigger-secret-key\n replication:\n userManaged:\n replicas:\n - location: us-central1\n webhookTriggerSecretKeyData:\n type: gcp:secretmanager:SecretVersion\n name: webhook_trigger_secret_key_data\n properties:\n secret: ${webhookTriggerSecretKey.id}\n secretData: secretkeygoeshere\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n project: ${webhookTriggerSecretKey.project}\n secretId: ${webhookTriggerSecretKey.secretId}\n policyData: ${secretAccessor.policyData}\n webhook-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: webhook-trigger\n description: acceptance test example webhook build trigger\n webhookConfig:\n secret: ${webhookTriggerSecretKeyData.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_trigger = new gcp.cloudbuild.Trigger(\"manual-trigger\", {\n name: \"manual-trigger\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n approvalConfig: {\n approvalRequired: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_trigger = gcp.cloudbuild.Trigger(\"manual-trigger\",\n name=\"manual-trigger\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n approval_config={\n \"approval_required\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_trigger = new Gcp.CloudBuild.Trigger(\"manual-trigger\", new()\n {\n Name = \"manual-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n ApprovalConfig = new Gcp.CloudBuild.Inputs.TriggerApprovalConfigArgs\n {\n ApprovalRequired = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"manual-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"manual-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tApprovalConfig: \u0026cloudbuild.TriggerApprovalConfigArgs{\n\t\t\t\tApprovalRequired: pulumi.Bool(true),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerApprovalConfigArgs;\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 manual_trigger = new Trigger(\"manual-trigger\", TriggerArgs.builder()\n .name(\"manual-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .approvalConfig(TriggerApprovalConfigArgs.builder()\n .approvalRequired(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: manual-trigger\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n approvalConfig:\n approvalRequired: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_ghe_trigger = new gcp.cloudbuild.Trigger(\"manual-ghe-trigger\", {\n name: \"\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_ghe_trigger = gcp.cloudbuild.Trigger(\"manual-ghe-trigger\",\n name=\"\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_ghe_trigger = new Gcp.CloudBuild.Trigger(\"manual-ghe-trigger\", new()\n {\n Name = \"\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"manual-ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 manual_ghe_trigger = new Trigger(\"manual-ghe-trigger\", TriggerArgs.builder()\n .name(\"\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name:\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Bitbucket Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_bitbucket_trigger = new gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\", {\n name: \"terraform-manual-bbs-trigger\",\n sourceToBuild: {\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n ref: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n revision: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_bitbucket_trigger = gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\",\n name=\"terraform-manual-bbs-trigger\",\n source_to_build={\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_bitbucket_trigger = new Gcp.CloudBuild.Trigger(\"manual-bitbucket-trigger\", new()\n {\n Name = \"terraform-manual-bbs-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Ref = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Revision = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"manual-bitbucket-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"terraform-manual-bbs-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 manual_bitbucket_trigger = new Trigger(\"manual-bitbucket-trigger\", TriggerArgs.builder()\n .name(\"terraform-manual-bbs-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .ref(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .revision(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-bitbucket-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: terraform-manual-bbs-trigger\n sourceToBuild:\n uri: https://bbs.com/scm/stag/test-repo.git\n ref: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://bbs.com/scm/stag/test-repo.git\n revision: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst repo_trigger = new gcp.cloudbuild.Trigger(\"repo-trigger\", {\n location: \"us-central1\",\n repositoryEventConfig: {\n repository: my_repository.id,\n push: {\n branch: \"feature-.*\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nrepo_trigger = gcp.cloudbuild.Trigger(\"repo-trigger\",\n location=\"us-central1\",\n repository_event_config={\n \"repository\": my_repository.id,\n \"push\": {\n \"branch\": \"feature-.*\",\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var repo_trigger = new Gcp.CloudBuild.Trigger(\"repo-trigger\", new()\n {\n Location = \"us-central1\",\n RepositoryEventConfig = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigArgs\n {\n Repository = my_repository.Id,\n Push = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigPushArgs\n {\n Branch = \"feature-.*\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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 := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\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 = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryEventConfig: \u0026cloudbuild.TriggerRepositoryEventConfigArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tPush: \u0026cloudbuild.TriggerRepositoryEventConfigPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"feature-.*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigPushArgs;\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 my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var repo_trigger = new Trigger(\"repo-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .repositoryEventConfig(TriggerRepositoryEventConfigArgs.builder()\n .repository(my_repository.id())\n .push(TriggerRepositoryEventConfigPushArgs.builder()\n .branch(\"feature-.*\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n repositoryEventConfig:\n repository: ${[\"my-repository\"].id}\n push:\n branch: feature-.*\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_push_trigger = new gcp.cloudbuild.Trigger(\"bbs-push-trigger\", {\n name: \"bbs-push-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"bbs-push-trigger\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n push: {\n tag: \"^0.1.*\",\n invertRegex: true,\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_push_trigger = gcp.cloudbuild.Trigger(\"bbs-push-trigger\",\n name=\"bbs-push-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"bbs-push-trigger\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"push\": {\n \"tag\": \"^0.1.*\",\n \"invert_regex\": True,\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_push_trigger = new Gcp.CloudBuild.Trigger(\"bbs-push-trigger\", new()\n {\n Name = \"bbs-push-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"bbs-push-trigger\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n Push = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPushArgs\n {\n Tag = \"^0.1.*\",\n InvertRegex = true,\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"bbs-push-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"bbs-push-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"bbs-push-trigger\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs{\n\t\t\t\t\tTag: pulumi.String(\"^0.1.*\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPushArgs;\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 bbs_push_trigger = new Trigger(\"bbs-push-trigger\", TriggerArgs.builder()\n .name(\"bbs-push-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"bbs-push-trigger\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .push(TriggerBitbucketServerTriggerConfigPushArgs.builder()\n .tag(\"^0.1.*\")\n .invertRegex(true)\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-push-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: bbs-push-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: bbs-push-trigger\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n push:\n tag: ^0.1.*\n invertRegex: true\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Pull Request\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_pull_request_trigger = new gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\", {\n name: \"ghe-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"terraform-provider-google\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n pullRequest: {\n branch: \"^master$\",\n invertRegex: false,\n commentControl: \"COMMENTS_ENABLED\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_pull_request_trigger = gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"terraform-provider-google\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"pull_request\": {\n \"branch\": \"^master$\",\n \"invert_regex\": False,\n \"comment_control\": \"COMMENTS_ENABLED\",\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_pull_request_trigger = new Gcp.CloudBuild.Trigger(\"bbs-pull-request-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"terraform-provider-google\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n PullRequest = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs\n {\n Branch = \"^master$\",\n InvertRegex = false,\n CommentControl = \"COMMENTS_ENABLED\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"bbs-pull-request-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPullRequest: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^master$\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(false),\n\t\t\t\t\tCommentControl: pulumi.String(\"COMMENTS_ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs;\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 bbs_pull_request_trigger = new Trigger(\"bbs-pull-request-trigger\", TriggerArgs.builder()\n .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"terraform-provider-google\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .pullRequest(TriggerBitbucketServerTriggerConfigPullRequestArgs.builder()\n .branch(\"^master$\")\n .invertRegex(false)\n .commentControl(\"COMMENTS_ENABLED\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-pull-request-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: terraform-provider-google\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n pullRequest:\n branch: ^master$\n invertRegex: false\n commentControl: COMMENTS_ENABLED\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ghe_trigger = new gcp.cloudbuild.Trigger(\"ghe-trigger\", {\n name: \"ghe-trigger\",\n location: \"us-central1\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google\",\n push: {\n branch: \"^main$\",\n },\n enterpriseConfigResourceName: \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nghe_trigger = gcp.cloudbuild.Trigger(\"ghe-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n \"enterprise_config_resource_name\": \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ghe_trigger = new Gcp.CloudBuild.Trigger(\"ghe-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n EnterpriseConfigResourceName = \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t\tEnterpriseConfigResourceName: pulumi.String(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\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 ghe_trigger = new Trigger(\"ghe-trigger\", TriggerArgs.builder()\n .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .enterpriseConfigResourceName(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n github:\n owner: hashicorp\n name: terraform-provider-google\n push:\n branch: ^main$\n enterpriseConfigResourceName: projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Failure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_failure_trigger = new gcp.cloudbuild.Trigger(\"allow-failure-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowFailure: true,\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_failure_trigger = gcp.cloudbuild.Trigger(\"allow-failure-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_failure\": True,\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allow_failure_trigger = new Gcp.CloudBuild.Trigger(\"allow-failure-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowFailure = true,\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"allow-failure-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowFailure: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 allow_failure_trigger = new Trigger(\"allow-failure-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowFailure(true)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-failure-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowFailure: true\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Exit Codes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_exit_codes_trigger = new gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowExitCodes: [\n 1,\n 3,\n ],\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_exit_codes_trigger = gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_exit_codes\": [\n 1,\n 3,\n ],\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allow_exit_codes_trigger = new Gcp.CloudBuild.Trigger(\"allow-exit-codes-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowExitCodes = new[]\n {\n 1,\n 3,\n },\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"allow-exit-codes-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowExitCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 allow_exit_codes_trigger = new Trigger(\"allow-exit-codes-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowExitCodes( \n 1,\n 3)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-exit-codes-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowExitCodes:\n - 1\n - 3\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub With Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_with_repo_trigger = new gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\", {\n name: \"pubsub-with-repo-trigger\",\n location: \"us-central1\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n repository: my_repository.id,\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n repository: my_repository.id,\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_with_repo_trigger = gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\",\n name=\"pubsub-with-repo-trigger\",\n location=\"us-central1\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"repository\": my_repository.id,\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"repository\": my_repository.id,\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_with_repo_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-with-repo-trigger\", new()\n {\n Name = \"pubsub-with-repo-trigger\",\n Location = \"us-central1\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Repository = my_repository.Id,\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Repository = my_repository.Id,\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\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 = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-with-repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"pubsub-with-repo-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\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.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_with_repo_trigger = new Trigger(\"pubsub-with-repo-trigger\", TriggerArgs.builder()\n .name(\"pubsub-with-repo-trigger\")\n .location(\"us-central1\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .repository(my_repository.id())\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .repository(my_repository.id())\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-with-repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: pubsub-with-repo-trigger\n location: us-central1\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n repository: ${[\"my-repository\"].id}\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n repository: ${[\"my-repository\"].id}\n revision: refs/heads/main\n repoType: GITHUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}`\n\n* `projects/{{project}}/triggers/{{trigger_id}}`\n\n* `{{project}}/{{trigger_id}}`\n\n* `{{trigger_id}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{project}}/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{trigger_id}}\n```\n\n", + "description": "Configuration for an automated build in response to source repository changes.\n\n\nTo get more information about Trigger, see:\n\n* [API documentation](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers)\n* How-to Guides\n * [Automating builds using build triggers](https://cloud.google.com/cloud-build/docs/running-builds/automate-builds)\n\n\u003e **Note:** You can retrieve the email of the Cloud Build Service Account used in jobs by using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Cloudbuild Trigger Filename\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst filename_trigger = new gcp.cloudbuild.Trigger(\"filename-trigger\", {\n location: \"us-central1\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilename_trigger = gcp.cloudbuild.Trigger(\"filename-trigger\",\n location=\"us-central1\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n substitutions={\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var filename_trigger = new Gcp.CloudBuild.Trigger(\"filename-trigger\", new()\n {\n Location = \"us-central1\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"filename-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\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 filename_trigger = new Trigger(\"filename-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n filename-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n triggerTemplate:\n branchName: main\n repoName: my-repo\n substitutions:\n _FOO: bar\n _BAZ: qux\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Build\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst build_trigger = new gcp.cloudbuild.Trigger(\"build-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [\n {\n name: \"gcr.io/cloud-builders/gsutil\",\n args: [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n timeout: \"120s\",\n secretEnvs: [\"MY_SECRET\"],\n },\n {\n name: \"ubuntu\",\n script: \"echo hello\",\n },\n ],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n npmPackages: [{\n packagePath: \"package.json\",\n repository: \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n pythonPackages: [{\n paths: [\"dist/*\"],\n repository: \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n mavenArtifacts: [{\n repository: \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n path: \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n artifactId: \"my-app\",\n groupId: \"com.mycompany.app\",\n version: \"1.0\",\n }],\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbuild_trigger = gcp.cloudbuild.Trigger(\"build-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [\n {\n \"name\": \"gcr.io/cloud-builders/gsutil\",\n \"args\": [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n \"timeout\": \"120s\",\n \"secret_envs\": [\"MY_SECRET\"],\n },\n {\n \"name\": \"ubuntu\",\n \"script\": \"echo hello\",\n },\n ],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n \"npm_packages\": [{\n \"package_path\": \"package.json\",\n \"repository\": \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n \"python_packages\": [{\n \"paths\": [\"dist/*\"],\n \"repository\": \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n \"maven_artifacts\": [{\n \"repository\": \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n \"path\": \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n \"artifact_id\": \"my-app\",\n \"group_id\": \"com.mycompany.app\",\n \"version\": \"1.0\",\n }],\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var build_trigger = new Gcp.CloudBuild.Trigger(\"build-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"gcr.io/cloud-builders/gsutil\",\n Args = new[]\n {\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n },\n Timeout = \"120s\",\n SecretEnvs = new[]\n {\n \"MY_SECRET\",\n },\n },\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Script = \"echo hello\",\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n NpmPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsNpmPackageArgs\n {\n PackagePath = \"package.json\",\n Repository = \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n },\n },\n PythonPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsPythonPackageArgs\n {\n Paths = new[]\n {\n \"dist/*\",\n },\n Repository = \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n },\n },\n MavenArtifacts = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsMavenArtifactArgs\n {\n Repository = \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n Path = \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n ArtifactId = \"my-app\",\n GroupId = \"com.mycompany.app\",\n Version = \"1.0\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"build-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"gcr.io/cloud-builders/gsutil\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cp\"),\n\t\t\t\t\t\t\tpulumi.String(\"gs://mybucket/remotefile.zip\"),\n\t\t\t\t\t\t\tpulumi.String(\"localfile.zip\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTimeout: pulumi.String(\"120s\"),\n\t\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tScript: pulumi.String(\"echo hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNpmPackages: cloudbuild.TriggerBuildArtifactsNpmPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsNpmPackageArgs{\n\t\t\t\t\t\t\tPackagePath: pulumi.String(\"package.json\"),\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPythonPackages: cloudbuild.TriggerBuildArtifactsPythonPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsPythonPackageArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"dist/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMavenArtifacts: cloudbuild.TriggerBuildArtifactsMavenArtifactArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsMavenArtifactArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\"),\n\t\t\t\t\t\t\tArtifactId: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\tGroupId: pulumi.String(\"com.mycompany.app\"),\n\t\t\t\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 build_trigger = new Trigger(\"build-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps( \n TriggerBuildStepArgs.builder()\n .name(\"gcr.io/cloud-builders/gsutil\")\n .args( \n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\")\n .timeout(\"120s\")\n .secretEnvs(\"MY_SECRET\")\n .build(),\n TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .script(\"echo hello\")\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .npmPackages(TriggerBuildArtifactsNpmPackageArgs.builder()\n .packagePath(\"package.json\")\n .repository(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\")\n .build())\n .pythonPackages(TriggerBuildArtifactsPythonPackageArgs.builder()\n .paths(\"dist/*\")\n .repository(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\")\n .build())\n .mavenArtifacts(TriggerBuildArtifactsMavenArtifactArgs.builder()\n .repository(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\")\n .path(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\")\n .artifactId(\"my-app\")\n .groupId(\"com.mycompany.app\")\n .version(\"1.0\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n build-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: gcr.io/cloud-builders/gsutil\n args:\n - cp\n - gs://mybucket/remotefile.zip\n - localfile.zip\n timeout: 120s\n secretEnvs:\n - MY_SECRET\n - name: ubuntu\n script: echo hello\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n npmPackages:\n - packagePath: package.json\n repository: https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\n pythonPackages:\n - paths:\n - dist/*\n repository: https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\n mavenArtifacts:\n - repository: https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\n path: /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\n artifactId: my-app\n groupId: com.mycompany.app\n version: '1.0'\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudbuildServiceAccount = new gcp.serviceaccount.Account(\"cloudbuild_service_account\", {accountId: \"cloud-sa\"});\nconst actAs = new gcp.projects.IAMMember(\"act_as\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logs_writer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst service_account_trigger = new gcp.cloudbuild.Trigger(\"service-account-trigger\", {\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n serviceAccount: cloudbuildServiceAccount.id,\n filename: \"cloudbuild.yaml\",\n}, {\n dependsOn: [\n actAs,\n logsWriter,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudbuild_service_account = gcp.serviceaccount.Account(\"cloudbuild_service_account\", account_id=\"cloud-sa\")\nact_as = gcp.projects.IAMMember(\"act_as\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountUser\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nlogs_writer = gcp.projects.IAMMember(\"logs_writer\",\n project=project.project_id,\n role=\"roles/logging.logWriter\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nservice_account_trigger = gcp.cloudbuild.Trigger(\"service-account-trigger\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n service_account=cloudbuild_service_account.id,\n filename=\"cloudbuild.yaml\",\n opts = pulumi.ResourceOptions(depends_on=[\n act_as,\n logs_writer,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudbuildServiceAccount = new Gcp.ServiceAccount.Account(\"cloudbuild_service_account\", new()\n {\n AccountId = \"cloud-sa\",\n });\n\n var actAs = new Gcp.Projects.IAMMember(\"act_as\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountUser\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var logsWriter = new Gcp.Projects.IAMMember(\"logs_writer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/logging.logWriter\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var service_account_trigger = new Gcp.CloudBuild.Trigger(\"service-account-trigger\", new()\n {\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n ServiceAccount = cloudbuildServiceAccount.Id,\n Filename = \"cloudbuild.yaml\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n actAs,\n logsWriter,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudbuildServiceAccount, err := serviceaccount.NewAccount(ctx, \"cloudbuild_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tactAs, err := projects.NewIAMMember(ctx, \"act_as\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\tlogsWriter, err := projects.NewIAMMember(ctx, \"logs_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = cloudbuild.NewTrigger(ctx, \"service-account-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tServiceAccount: cloudbuildServiceAccount.ID(),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tactAs,\n\t\t\tlogsWriter,\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.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\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 project = OrganizationsFunctions.getProject();\n\n var cloudbuildServiceAccount = new Account(\"cloudbuildServiceAccount\", AccountArgs.builder()\n .accountId(\"cloud-sa\")\n .build());\n\n var actAs = new IAMMember(\"actAs\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountUser\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var logsWriter = new IAMMember(\"logsWriter\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/logging.logWriter\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var service_account_trigger = new Trigger(\"service-account-trigger\", TriggerArgs.builder()\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .serviceAccount(cloudbuildServiceAccount.id())\n .filename(\"cloudbuild.yaml\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n actAs,\n logsWriter)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-account-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n triggerTemplate:\n branchName: main\n repoName: my-repo\n serviceAccount: ${cloudbuildServiceAccount.id}\n filename: cloudbuild.yaml\n options:\n dependson:\n - ${actAs}\n - ${logsWriter}\n cloudbuildServiceAccount:\n type: gcp:serviceaccount:Account\n name: cloudbuild_service_account\n properties:\n accountId: cloud-sa\n actAs:\n type: gcp:projects:IAMMember\n name: act_as\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${cloudbuildServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n name: logs_writer\n properties:\n project: ${project.projectId}\n role: roles/logging.logWriter\n member: serviceAccount:${cloudbuildServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Include Build Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst include_build_logs_trigger = new gcp.cloudbuild.Trigger(\"include-build-logs-trigger\", {\n location: \"us-central1\",\n name: \"include-build-logs-trigger\",\n filename: \"cloudbuild.yaml\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google-beta\",\n push: {\n branch: \"^main$\",\n },\n },\n includeBuildLogs: \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninclude_build_logs_trigger = gcp.cloudbuild.Trigger(\"include-build-logs-trigger\",\n location=\"us-central1\",\n name=\"include-build-logs-trigger\",\n filename=\"cloudbuild.yaml\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google-beta\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n },\n include_build_logs=\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var include_build_logs_trigger = new Gcp.CloudBuild.Trigger(\"include-build-logs-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"include-build-logs-trigger\",\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google-beta\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n IncludeBuildLogs = \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"include-build-logs-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"include-build-logs-trigger\"),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google-beta\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tIncludeBuildLogs: pulumi.String(\"INCLUDE_BUILD_LOGS_WITH_STATUS\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\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 include_build_logs_trigger = new Trigger(\"include-build-logs-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"include-build-logs-trigger\")\n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google-beta\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .includeBuildLogs(\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n include-build-logs-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: include-build-logs-trigger\n filename: cloudbuild.yaml\n github:\n owner: hashicorp\n name: terraform-provider-google-beta\n push:\n branch: ^main$\n includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_config_trigger = new gcp.cloudbuild.Trigger(\"pubsub-config-trigger\", {\n location: \"us-central1\",\n name: \"pubsub-trigger\",\n description: \"acceptance test example pubsub build trigger\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n substitutions: {\n _ACTION: \"$(body.message.data.action)\",\n },\n filter: \"_ACTION.matches('INSERT')\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_config_trigger = gcp.cloudbuild.Trigger(\"pubsub-config-trigger\",\n location=\"us-central1\",\n name=\"pubsub-trigger\",\n description=\"acceptance test example pubsub build trigger\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n substitutions={\n \"_ACTION\": \"$(body.message.data.action)\",\n },\n filter=\"_ACTION.matches('INSERT')\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_config_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-config-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"pubsub-trigger\",\n Description = \"acceptance test example pubsub build trigger\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n Substitutions = \n {\n { \"_ACTION\", \"$(body.message.data.action)\" },\n },\n Filter = \"_ACTION.matches('INSERT')\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"pubsub-trigger\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example pubsub build trigger\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_ACTION\": pulumi.String(\"$(body.message.data.action)\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\"_ACTION.matches('INSERT')\"),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_config_trigger = new Trigger(\"pubsub-config-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"pubsub-trigger\")\n .description(\"acceptance test example pubsub build trigger\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .substitutions(Map.of(\"_ACTION\", \"$(body.message.data.action)\"))\n .filter(\"_ACTION.matches('INSERT')\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: pubsub-trigger\n description: acceptance test example pubsub build trigger\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n substitutions:\n _ACTION: $(body.message.data.action)\n filter: _ACTION.matches('INSERT')\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Webhook Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst webhookTriggerSecretKey = new gcp.secretmanager.Secret(\"webhook_trigger_secret_key\", {\n secretId: \"webhook-trigger-secret-key\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst webhookTriggerSecretKeyData = new gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\", {\n secret: webhookTriggerSecretKey.id,\n secretData: \"secretkeygoeshere\",\n});\nconst project = gcp.organizations.getProject({});\nconst secretAccessor = project.then(project =\u003e gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [`serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com`],\n }],\n}));\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n project: webhookTriggerSecretKey.project,\n secretId: webhookTriggerSecretKey.secretId,\n policyData: secretAccessor.then(secretAccessor =\u003e secretAccessor.policyData),\n});\nconst webhook_config_trigger = new gcp.cloudbuild.Trigger(\"webhook-config-trigger\", {\n name: \"webhook-trigger\",\n description: \"acceptance test example webhook build trigger\",\n webhookConfig: {\n secret: webhookTriggerSecretKeyData.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwebhook_trigger_secret_key = gcp.secretmanager.Secret(\"webhook_trigger_secret_key\",\n secret_id=\"webhook-trigger-secret-key\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nwebhook_trigger_secret_key_data = gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\",\n secret=webhook_trigger_secret_key.id,\n secret_data=\"secretkeygoeshere\")\nproject = gcp.organizations.get_project()\nsecret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [f\"serviceAccount:service-{project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n project=webhook_trigger_secret_key.project,\n secret_id=webhook_trigger_secret_key.secret_id,\n policy_data=secret_accessor.policy_data)\nwebhook_config_trigger = gcp.cloudbuild.Trigger(\"webhook-config-trigger\",\n name=\"webhook-trigger\",\n description=\"acceptance test example webhook build trigger\",\n webhook_config={\n \"secret\": webhook_trigger_secret_key_data.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webhookTriggerSecretKey = new Gcp.SecretManager.Secret(\"webhook_trigger_secret_key\", new()\n {\n SecretId = \"webhook-trigger-secret-key\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var webhookTriggerSecretKeyData = new Gcp.SecretManager.SecretVersion(\"webhook_trigger_secret_key_data\", new()\n {\n Secret = webhookTriggerSecretKey.Id,\n SecretData = \"secretkeygoeshere\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n Project = webhookTriggerSecretKey.Project,\n SecretId = webhookTriggerSecretKey.SecretId,\n PolicyData = secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n var webhook_config_trigger = new Gcp.CloudBuild.Trigger(\"webhook-config-trigger\", new()\n {\n Name = \"webhook-trigger\",\n Description = \"acceptance test example webhook build trigger\",\n WebhookConfig = new Gcp.CloudBuild.Inputs.TriggerWebhookConfigArgs\n {\n Secret = webhookTriggerSecretKeyData.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twebhookTriggerSecretKey, err := secretmanager.NewSecret(ctx, \"webhook_trigger_secret_key\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"webhook-trigger-secret-key\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\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\twebhookTriggerSecretKeyData, err := secretmanager.NewSecretVersion(ctx, \"webhook_trigger_secret_key_data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhookTriggerSecretKey.ID(),\n\t\t\tSecretData: pulumi.String(\"secretkeygoeshere\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\tfmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.Number),\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\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tProject: webhookTriggerSecretKey.Project,\n\t\t\tSecretId: webhookTriggerSecretKey.SecretId,\n\t\t\tPolicyData: pulumi.String(secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"webhook-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"webhook-trigger\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example webhook build trigger\"),\n\t\t\tWebhookConfig: \u0026cloudbuild.TriggerWebhookConfigArgs{\n\t\t\t\tSecret: webhookTriggerSecretKeyData.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\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.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerWebhookConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 webhookTriggerSecretKey = new Secret(\"webhookTriggerSecretKey\", SecretArgs.builder()\n .secretId(\"webhook-trigger-secret-key\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var webhookTriggerSecretKeyData = new SecretVersion(\"webhookTriggerSecretKeyData\", SecretVersionArgs.builder()\n .secret(webhookTriggerSecretKey.id())\n .secretData(\"secretkeygoeshere\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n final var secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .project(webhookTriggerSecretKey.project())\n .secretId(webhookTriggerSecretKey.secretId())\n .policyData(secretAccessor.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n var webhook_config_trigger = new Trigger(\"webhook-config-trigger\", TriggerArgs.builder()\n .name(\"webhook-trigger\")\n .description(\"acceptance test example webhook build trigger\")\n .webhookConfig(TriggerWebhookConfigArgs.builder()\n .secret(webhookTriggerSecretKeyData.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webhookTriggerSecretKey:\n type: gcp:secretmanager:Secret\n name: webhook_trigger_secret_key\n properties:\n secretId: webhook-trigger-secret-key\n replication:\n userManaged:\n replicas:\n - location: us-central1\n webhookTriggerSecretKeyData:\n type: gcp:secretmanager:SecretVersion\n name: webhook_trigger_secret_key_data\n properties:\n secret: ${webhookTriggerSecretKey.id}\n secretData: secretkeygoeshere\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n project: ${webhookTriggerSecretKey.project}\n secretId: ${webhookTriggerSecretKey.secretId}\n policyData: ${secretAccessor.policyData}\n webhook-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: webhook-trigger\n description: acceptance test example webhook build trigger\n webhookConfig:\n secret: ${webhookTriggerSecretKeyData.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_trigger = new gcp.cloudbuild.Trigger(\"manual-trigger\", {\n name: \"manual-trigger\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n approvalConfig: {\n approvalRequired: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_trigger = gcp.cloudbuild.Trigger(\"manual-trigger\",\n name=\"manual-trigger\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n approval_config={\n \"approval_required\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_trigger = new Gcp.CloudBuild.Trigger(\"manual-trigger\", new()\n {\n Name = \"manual-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n ApprovalConfig = new Gcp.CloudBuild.Inputs.TriggerApprovalConfigArgs\n {\n ApprovalRequired = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"manual-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"manual-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tApprovalConfig: \u0026cloudbuild.TriggerApprovalConfigArgs{\n\t\t\t\tApprovalRequired: pulumi.Bool(true),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerApprovalConfigArgs;\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 manual_trigger = new Trigger(\"manual-trigger\", TriggerArgs.builder()\n .name(\"manual-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .approvalConfig(TriggerApprovalConfigArgs.builder()\n .approvalRequired(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: manual-trigger\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n approvalConfig:\n approvalRequired: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_ghe_trigger = new gcp.cloudbuild.Trigger(\"manual-ghe-trigger\", {\n name: \"\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_ghe_trigger = gcp.cloudbuild.Trigger(\"manual-ghe-trigger\",\n name=\"\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_ghe_trigger = new Gcp.CloudBuild.Trigger(\"manual-ghe-trigger\", new()\n {\n Name = \"\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"manual-ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 manual_ghe_trigger = new Trigger(\"manual-ghe-trigger\", TriggerArgs.builder()\n .name(\"\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name:\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Bitbucket Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_bitbucket_trigger = new gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\", {\n name: \"terraform-manual-bbs-trigger\",\n sourceToBuild: {\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n ref: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n revision: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_bitbucket_trigger = gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\",\n name=\"terraform-manual-bbs-trigger\",\n source_to_build={\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_bitbucket_trigger = new Gcp.CloudBuild.Trigger(\"manual-bitbucket-trigger\", new()\n {\n Name = \"terraform-manual-bbs-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Ref = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Revision = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"manual-bitbucket-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"terraform-manual-bbs-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 manual_bitbucket_trigger = new Trigger(\"manual-bitbucket-trigger\", TriggerArgs.builder()\n .name(\"terraform-manual-bbs-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .ref(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .revision(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-bitbucket-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: terraform-manual-bbs-trigger\n sourceToBuild:\n uri: https://bbs.com/scm/stag/test-repo.git\n ref: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://bbs.com/scm/stag/test-repo.git\n revision: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst repo_trigger = new gcp.cloudbuild.Trigger(\"repo-trigger\", {\n location: \"us-central1\",\n repositoryEventConfig: {\n repository: my_repository.id,\n push: {\n branch: \"feature-.*\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nrepo_trigger = gcp.cloudbuild.Trigger(\"repo-trigger\",\n location=\"us-central1\",\n repository_event_config={\n \"repository\": my_repository.id,\n \"push\": {\n \"branch\": \"feature-.*\",\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var repo_trigger = new Gcp.CloudBuild.Trigger(\"repo-trigger\", new()\n {\n Location = \"us-central1\",\n RepositoryEventConfig = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigArgs\n {\n Repository = my_repository.Id,\n Push = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigPushArgs\n {\n Branch = \"feature-.*\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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 := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\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 = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryEventConfig: \u0026cloudbuild.TriggerRepositoryEventConfigArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tPush: \u0026cloudbuild.TriggerRepositoryEventConfigPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"feature-.*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigPushArgs;\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 my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var repo_trigger = new Trigger(\"repo-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .repositoryEventConfig(TriggerRepositoryEventConfigArgs.builder()\n .repository(my_repository.id())\n .push(TriggerRepositoryEventConfigPushArgs.builder()\n .branch(\"feature-.*\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n repositoryEventConfig:\n repository: ${[\"my-repository\"].id}\n push:\n branch: feature-.*\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_push_trigger = new gcp.cloudbuild.Trigger(\"bbs-push-trigger\", {\n name: \"bbs-push-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"bbs-push-trigger\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n push: {\n tag: \"^0.1.*\",\n invertRegex: true,\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_push_trigger = gcp.cloudbuild.Trigger(\"bbs-push-trigger\",\n name=\"bbs-push-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"bbs-push-trigger\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"push\": {\n \"tag\": \"^0.1.*\",\n \"invert_regex\": True,\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_push_trigger = new Gcp.CloudBuild.Trigger(\"bbs-push-trigger\", new()\n {\n Name = \"bbs-push-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"bbs-push-trigger\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n Push = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPushArgs\n {\n Tag = \"^0.1.*\",\n InvertRegex = true,\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"bbs-push-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"bbs-push-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"bbs-push-trigger\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs{\n\t\t\t\t\tTag: pulumi.String(\"^0.1.*\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPushArgs;\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 bbs_push_trigger = new Trigger(\"bbs-push-trigger\", TriggerArgs.builder()\n .name(\"bbs-push-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"bbs-push-trigger\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .push(TriggerBitbucketServerTriggerConfigPushArgs.builder()\n .tag(\"^0.1.*\")\n .invertRegex(true)\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-push-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: bbs-push-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: bbs-push-trigger\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n push:\n tag: ^0.1.*\n invertRegex: true\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Pull Request\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_pull_request_trigger = new gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\", {\n name: \"ghe-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"terraform-provider-google\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n pullRequest: {\n branch: \"^master$\",\n invertRegex: false,\n commentControl: \"COMMENTS_ENABLED\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_pull_request_trigger = gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"terraform-provider-google\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"pull_request\": {\n \"branch\": \"^master$\",\n \"invert_regex\": False,\n \"comment_control\": \"COMMENTS_ENABLED\",\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_pull_request_trigger = new Gcp.CloudBuild.Trigger(\"bbs-pull-request-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"terraform-provider-google\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n PullRequest = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs\n {\n Branch = \"^master$\",\n InvertRegex = false,\n CommentControl = \"COMMENTS_ENABLED\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"bbs-pull-request-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPullRequest: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^master$\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(false),\n\t\t\t\t\tCommentControl: pulumi.String(\"COMMENTS_ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs;\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 bbs_pull_request_trigger = new Trigger(\"bbs-pull-request-trigger\", TriggerArgs.builder()\n .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"terraform-provider-google\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .pullRequest(TriggerBitbucketServerTriggerConfigPullRequestArgs.builder()\n .branch(\"^master$\")\n .invertRegex(false)\n .commentControl(\"COMMENTS_ENABLED\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-pull-request-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: terraform-provider-google\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n pullRequest:\n branch: ^master$\n invertRegex: false\n commentControl: COMMENTS_ENABLED\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ghe_trigger = new gcp.cloudbuild.Trigger(\"ghe-trigger\", {\n name: \"ghe-trigger\",\n location: \"us-central1\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google\",\n push: {\n branch: \"^main$\",\n },\n enterpriseConfigResourceName: \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nghe_trigger = gcp.cloudbuild.Trigger(\"ghe-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n \"enterprise_config_resource_name\": \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ghe_trigger = new Gcp.CloudBuild.Trigger(\"ghe-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n EnterpriseConfigResourceName = \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t\tEnterpriseConfigResourceName: pulumi.String(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\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 ghe_trigger = new Trigger(\"ghe-trigger\", TriggerArgs.builder()\n .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .enterpriseConfigResourceName(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n github:\n owner: hashicorp\n name: terraform-provider-google\n push:\n branch: ^main$\n enterpriseConfigResourceName: projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Failure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_failure_trigger = new gcp.cloudbuild.Trigger(\"allow-failure-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowFailure: true,\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_failure_trigger = gcp.cloudbuild.Trigger(\"allow-failure-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_failure\": True,\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allow_failure_trigger = new Gcp.CloudBuild.Trigger(\"allow-failure-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowFailure = true,\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"allow-failure-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowFailure: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 allow_failure_trigger = new Trigger(\"allow-failure-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowFailure(true)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-failure-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowFailure: true\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Exit Codes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_exit_codes_trigger = new gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowExitCodes: [\n 1,\n 3,\n ],\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_exit_codes_trigger = gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_exit_codes\": [\n 1,\n 3,\n ],\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allow_exit_codes_trigger = new Gcp.CloudBuild.Trigger(\"allow-exit-codes-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowExitCodes = new[]\n {\n 1,\n 3,\n },\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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 := cloudbuild.NewTrigger(ctx, \"allow-exit-codes-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowExitCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 allow_exit_codes_trigger = new Trigger(\"allow-exit-codes-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowExitCodes( \n 1,\n 3)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-exit-codes-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowExitCodes:\n - 1\n - 3\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub With Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_with_repo_trigger = new gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\", {\n name: \"pubsub-with-repo-trigger\",\n location: \"us-central1\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n repository: my_repository.id,\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n repository: my_repository.id,\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_with_repo_trigger = gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\",\n name=\"pubsub-with-repo-trigger\",\n location=\"us-central1\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"repository\": my_repository.id,\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"repository\": my_repository.id,\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_with_repo_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-with-repo-trigger\", new()\n {\n Name = \"pubsub-with-repo-trigger\",\n Location = \"us-central1\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Repository = my_repository.Id,\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Repository = my_repository.Id,\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\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 = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-with-repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"pubsub-with-repo-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\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.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\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 my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_with_repo_trigger = new Trigger(\"pubsub-with-repo-trigger\", TriggerArgs.builder()\n .name(\"pubsub-with-repo-trigger\")\n .location(\"us-central1\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .repository(my_repository.id())\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .repository(my_repository.id())\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-with-repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: pubsub-with-repo-trigger\n location: us-central1\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n repository: ${[\"my-repository\"].id}\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n repository: ${[\"my-repository\"].id}\n revision: refs/heads/main\n repoType: GITHUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}`\n\n* `projects/{{project}}/triggers/{{trigger_id}}`\n\n* `{{project}}/{{trigger_id}}`\n\n* `{{trigger_id}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{project}}/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{trigger_id}}\n```\n\n", "properties": { "approvalConfig": { "$ref": "#/types/gcp:cloudbuild/TriggerApprovalConfig:TriggerApprovalConfig", @@ -142201,7 +142201,7 @@ } }, "gcp:clouddeploy/deliveryPipeline:DeliveryPipeline": { - "description": "The Cloud Deploy `DeliveryPipeline` resource\n\n## Example Usage\n\n### Canary_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canary_service_networking_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canaryrun_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Verify_delivery_pipeline\ntests creating and updating a delivery pipeline with deployment verification strategy\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeliveryPipeline can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DeliveryPipeline can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{location}}/{{name}}\n```\n\n", + "description": "The Cloud Deploy `DeliveryPipeline` resource\n\n## Example Usage\n\n### Canary_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canary_service_networking_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canaryrun_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Verify_delivery_pipeline\ntests creating and updating a delivery pipeline with deployment verification strategy\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\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.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeliveryPipeline can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DeliveryPipeline can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -144435,7 +144435,7 @@ } }, "gcp:cloudfunctionsv2/function:Function": { - "description": "A Cloud Function that contains user computation executed in response to an event.\n\n\nTo get more information about function, see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions)\n\n## Example Usage\n\n### Cloudfunctions2 Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n SERVICE_CONFIG_DIFF_TEST: account.email,\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n \"servic_e__confi_g__dif_f__test\": account.email,\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n { \"SERVICE_CONFIG_DIFF_TEST\", account.Email },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t\t\"SERVICE_CONFIG_DIFF_TEST\": account.Email,\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.ofEntries(\n Map.entry(\"SERVICE_CONFIG_TEST\", \"config_test\"),\n Map.entry(\"SERVICE_CONFIG_DIFF_TEST\", account.email())\n ))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n SERVICE_CONFIG_DIFF_TEST: ${account.email}\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Scheduler Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n serviceAccountEmail: account.email,\n },\n});\nconst invoker = new gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\", {\n project: _function.project,\n location: _function.location,\n cloudFunction: _function.name,\n role: \"roles/cloudfunctions.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst cloudRunInvoker = new gcp.cloudrun.IamMember(\"cloud_run_invoker\", {\n project: _function.project,\n location: _function.location,\n service: _function.name,\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst invokeCloudFunction = new gcp.cloudscheduler.Job(\"invoke_cloud_function\", {\n name: \"invoke-gcf-function\",\n description: \"Schedule the HTTPS trigger for cloud function\",\n schedule: \"0 0 * * *\",\n project: _function.project,\n region: _function.location,\n httpTarget: {\n uri: _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri),\n httpMethod: \"POST\",\n oidcToken: {\n audience: _function.serviceConfig.apply(serviceConfig =\u003e `${serviceConfig?.uri}/`),\n serviceAccountEmail: account.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"service_account_email\": account.email,\n })\ninvoker = gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\",\n project=function.project,\n location=function.location,\n cloud_function=function.name,\n role=\"roles/cloudfunctions.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ncloud_run_invoker = gcp.cloudrun.IamMember(\"cloud_run_invoker\",\n project=function.project,\n location=function.location,\n service=function.name,\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ninvoke_cloud_function = gcp.cloudscheduler.Job(\"invoke_cloud_function\",\n name=\"invoke-gcf-function\",\n description=\"Schedule the HTTPS trigger for cloud function\",\n schedule=\"0 0 * * *\",\n project=function.project,\n region=function.location,\n http_target={\n \"uri\": function.service_config.uri,\n \"http_method\": \"POST\",\n \"oidc_token\": {\n \"audience\": function.service_config.apply(lambda service_config: f\"{service_config.uri}/\"),\n \"service_account_email\": account.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n ServiceAccountEmail = account.Email,\n },\n });\n\n var invoker = new Gcp.CloudFunctionsV2.FunctionIamMember(\"invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n CloudFunction = function.Name,\n Role = \"roles/cloudfunctions.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var cloudRunInvoker = new Gcp.CloudRun.IamMember(\"cloud_run_invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n Service = function.Name,\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var invokeCloudFunction = new Gcp.CloudScheduler.Job(\"invoke_cloud_function\", new()\n {\n Name = \"invoke-gcf-function\",\n Description = \"Schedule the HTTPS trigger for cloud function\",\n Schedule = \"0 0 * * *\",\n Project = function.Project,\n Region = function.Location,\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n Uri = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n HttpMethod = \"POST\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n Audience = function.ServiceConfig.Apply(serviceConfig =\u003e $\"{serviceConfig?.Uri}/\"),\n ServiceAccountEmail = account.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunctionIamMember(ctx, \"invoker\", \u0026cloudfunctionsv2.FunctionIamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tCloudFunction: function.Name,\n\t\t\tRole: pulumi.String(\"roles/cloudfunctions.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = cloudrun.NewIamMember(ctx, \"cloud_run_invoker\", \u0026cloudrun.IamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tService: function.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = cloudscheduler.NewJob(ctx, \"invoke_cloud_function\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"invoke-gcf-function\"),\n\t\t\tDescription: pulumi.String(\"Schedule the HTTPS trigger for cloud function\"),\n\t\t\tSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\tProject: function.Project,\n\t\t\tRegion: function.Location,\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tUri: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tAudience: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/\", serviceConfig.Uri), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tServiceAccountEmail: account.Email,\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMember;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMemberArgs;\nimport com.pulumi.gcp.cloudrun.IamMember;\nimport com.pulumi.gcp.cloudrun.IamMemberArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .serviceAccountEmail(account.email())\n .build())\n .build());\n\n var invoker = new FunctionIamMember(\"invoker\", FunctionIamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .cloudFunction(function.name())\n .role(\"roles/cloudfunctions.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var cloudRunInvoker = new IamMember(\"cloudRunInvoker\", IamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .service(function.name())\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var invokeCloudFunction = new Job(\"invokeCloudFunction\", JobArgs.builder()\n .name(\"invoke-gcf-function\")\n .description(\"Schedule the HTTPS trigger for cloud function\")\n .schedule(\"0 0 * * *\")\n .project(function.project())\n .region(function.location())\n .httpTarget(JobHttpTargetArgs.builder()\n .uri(function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()))\n .httpMethod(\"POST\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .audience(function.serviceConfig().applyValue(serviceConfig -\u003e String.format(\"%s/\", serviceConfig.uri())))\n .serviceAccountEmail(account.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n serviceAccountEmail: ${account.email}\n invoker:\n type: gcp:cloudfunctionsv2:FunctionIamMember\n properties:\n project: ${function.project}\n location: ${function.location}\n cloudFunction: ${function.name}\n role: roles/cloudfunctions.invoker\n member: serviceAccount:${account.email}\n cloudRunInvoker:\n type: gcp:cloudrun:IamMember\n name: cloud_run_invoker\n properties:\n project: ${function.project}\n location: ${function.location}\n service: ${function.name}\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n invokeCloudFunction:\n type: gcp:cloudscheduler:Job\n name: invoke_cloud_function\n properties:\n name: invoke-gcf-function\n description: Schedule the HTTPS trigger for cloud function\n schedule: 0 0 * * *\n project: ${function.project}\n region: ${function.location}\n httpTarget:\n uri: ${function.serviceConfig.uri}\n httpMethod: POST\n oidcToken:\n audience: ${function.serviceConfig.uri}/\n serviceAccountEmail: ${account.email}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst trigger_bucket = new gcp.storage.Bucket(\"trigger-bucket\", {\n name: \"gcf-trigger-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\n// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\nconst gcs_pubsub_publishing = new gcp.projects.IAMMember(\"gcs-pubsub-publishing\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.publisher\",\n member: gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [gcs_pubsub_publishing],\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n eventType: \"google.cloud.storage.object.v1.finalized\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [{\n attribute: \"bucket\",\n value: trigger_bucket.name,\n }],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\ntrigger_bucket = gcp.storage.Bucket(\"trigger-bucket\",\n name=\"gcf-trigger-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\ngcs_account = gcp.storage.get_project_service_account()\n# To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n# (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\ngcs_pubsub_publishing = gcp.projects.IAMMember(\"gcs-pubsub-publishing\",\n project=\"my-project-name\",\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{gcs_account.email_address}\")\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[gcs_pubsub_publishing]))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"event_type\": \"google.cloud.storage.object.v1.finalized\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [{\n \"attribute\": \"bucket\",\n \"value\": trigger_bucket.name,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var trigger_bucket = new Gcp.Storage.Bucket(\"trigger-bucket\", new()\n {\n Name = \"gcf-trigger-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new Gcp.Projects.IAMMember(\"gcs-pubsub-publishing\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcs_pubsub_publishing,\n },\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n EventType = \"google.cloud.storage.object.v1.finalized\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"bucket\",\n Value = trigger_bucket.Name,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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 := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"trigger-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-trigger-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n\t\t// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n\t\t_, err = projects.NewIAMMember(ctx, \"gcs-pubsub-publishing\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcs_pubsub_publishing,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tEventType: pulumi.String(\"google.cloud.storage.object.v1.finalized\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tValue: trigger_bucket.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var trigger_bucket = new Bucket(\"trigger-bucket\", BucketArgs.builder()\n .name(\"gcf-trigger-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new IAMMember(\"gcs-pubsub-publishing\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcs_pubsub_publishing)\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .eventType(\"google.cloud.storage.object.v1.finalized\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters(FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"bucket\")\n .value(trigger_bucket.name())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n trigger-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-trigger-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n # (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n gcs-pubsub-publishing:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/pubsub.publisher\n member: serviceAccount:${gcsAccount.emailAddress}\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"gcs-pubsub-publishing\"]}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n eventType: google.cloud.storage.object.v1.finalized\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: bucket\n value: ${[\"trigger-bucket\"].name}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Auditlogs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example follows the examples shown in this Google Cloud Community blog post\n// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n// and the docs:\n// https://cloud.google.com/eventarc/docs/path-patterns\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n// google_cloudfunctions2_function below (Audit Log events have path pattern support)\nconst audit_log_bucket = new gcp.storage.Bucket(\"audit-log-bucket\", {\n name: \"gcf-auditlog-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.audit.log.v1.written\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [\n {\n attribute: \"serviceName\",\n value: \"storage.googleapis.com\",\n },\n {\n attribute: \"methodName\",\n value: \"storage.objects.create\",\n },\n {\n attribute: \"resourceName\",\n value: pulumi.interpolate`/projects/_/buckets/${audit_log_bucket.name}/objects/*.txt`,\n operator: \"match-path-pattern\",\n },\n ],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example follows the examples shown in this Google Cloud Community blog post\n# https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n# and the docs:\n# https://cloud.google.com/eventarc/docs/path-patterns\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n# Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n# google_cloudfunctions2_function below (Audit Log events have path pattern support)\naudit_log_bucket = gcp.storage.Bucket(\"audit-log-bucket\",\n name=\"gcf-auditlog-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.audit.log.v1.written\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [\n {\n \"attribute\": \"serviceName\",\n \"value\": \"storage.googleapis.com\",\n },\n {\n \"attribute\": \"methodName\",\n \"value\": \"storage.objects.create\",\n },\n {\n \"attribute\": \"resourceName\",\n \"value\": audit_log_bucket.name.apply(lambda name: f\"/projects/_/buckets/{name}/objects/*.txt\"),\n \"operator\": \"match-path-pattern\",\n },\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Gcp.Storage.Bucket(\"audit-log-bucket\", new()\n {\n Name = \"gcf-auditlog-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.audit.log.v1.written\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"serviceName\",\n Value = \"storage.googleapis.com\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"methodName\",\n Value = \"storage.objects.create\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"resourceName\",\n Value = audit_log_bucket.Name.Apply(name =\u003e $\"/projects/_/buckets/{name}/objects/*.txt\"),\n Operator = \"match-path-pattern\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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// This example follows the examples shown in this Google Cloud Community blog post\n\t\t// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n\t\t// and the docs:\n\t\t// https://cloud.google.com/eventarc/docs/path-patterns\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n\t\t// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n\t\t// google_cloudfunctions2_function below (Audit Log events have path pattern support)\n\t\t_, err = storage.NewBucket(ctx, \"audit-log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-auditlog-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.audit.log.v1.written\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"serviceName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"methodName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.objects.create\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"resourceName\"),\n\t\t\t\t\t\tValue: audit_log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"/projects/_/buckets/%v/objects/*.txt\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tOperator: pulumi.String(\"match-path-pattern\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Bucket(\"audit-log-bucket\", BucketArgs.builder()\n .name(\"gcf-auditlog-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.audit.log.v1.written\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters( \n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"serviceName\")\n .value(\"storage.googleapis.com\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"methodName\")\n .value(\"storage.objects.create\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"resourceName\")\n .value(audit_log_bucket.name().applyValue(name -\u003e String.format(\"/projects/_/buckets/%s/objects/*.txt\", name)))\n .operator(\"match-path-pattern\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example follows the examples shown in this Google Cloud Community blog post\n # https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n # and the docs:\n # https://cloud.google.com/eventarc/docs/path-patterns\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n # Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n # google_cloudfunctions2_function below (Audit Log events have path pattern support)\n audit-log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-auditlog-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.audit.log.v1.written\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: serviceName\n value: storage.googleapis.com\n - attribute: methodName\n value: storage.objects.create\n - attribute: resourceName\n value: /projects/_/buckets/${[\"audit-log-bucket\"].name}/objects/*.txt\n operator: match-path-pattern\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Builder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst logWriter = new gcp.projects.IAMMember(\"log_writer\", {\n project: account.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactRegistryWriter = new gcp.projects.IAMMember(\"artifact_registry_writer\", {\n project: account.project,\n role: \"roles/artifactregistry.writer\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst storageObjectAdmin = new gcp.projects.IAMMember(\"storage_object_admin\", {\n project: account.project,\n role: \"roles/storage.objectAdmin\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\n// builder permissions need to stablize before it can pull the source zip\nconst wait60s = new time.index.Sleep(\"wait_60s\", {createDuration: \"60s\"}, {\n dependsOn: [\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n ],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n serviceAccount: account.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [wait60s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nlog_writer = gcp.projects.IAMMember(\"log_writer\",\n project=account.project,\n role=\"roles/logging.logWriter\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifact_registry_writer = gcp.projects.IAMMember(\"artifact_registry_writer\",\n project=account.project,\n role=\"roles/artifactregistry.writer\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_object_admin = gcp.projects.IAMMember(\"storage_object_admin\",\n project=account.project,\n role=\"roles/storage.objectAdmin\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\n# builder permissions need to stablize before it can pull the source zip\nwait60s = time.index.Sleep(\"wait_60s\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[\n log_writer,\n artifact_registry_writer,\n storage_object_admin,\n ]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"service_account\": account.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait60s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var logWriter = new Gcp.Projects.IAMMember(\"log_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/logging.logWriter\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactRegistryWriter = new Gcp.Projects.IAMMember(\"artifact_registry_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/artifactregistry.writer\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageObjectAdmin = new Gcp.Projects.IAMMember(\"storage_object_admin\", new()\n {\n Project = account.Project,\n Role = \"roles/storage.objectAdmin\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Time.Index.Sleep(\"wait_60s\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n ServiceAccount = account.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogWriter, err := projects.NewIAMMember(ctx, \"log_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\tartifactRegistryWriter, err := projects.NewIAMMember(ctx, \"artifact_registry_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.writer\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\tstorageObjectAdmin, err := projects.NewIAMMember(ctx, \"storage_object_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectAdmin\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// builder permissions need to stablize before it can pull the source zip\n\t\twait60s, err := time.NewSleep(ctx, \"wait_60s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlogWriter,\n\t\t\tartifactRegistryWriter,\n\t\t\tstorageObjectAdmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceAccount: account.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60s,\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var logWriter = new IAMMember(\"logWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/logging.logWriter\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactRegistryWriter = new IAMMember(\"artifactRegistryWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/artifactregistry.writer\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageObjectAdmin = new IAMMember(\"storageObjectAdmin\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/storage.objectAdmin\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Sleep(\"wait60s\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .serviceAccount(account.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n logWriter:\n type: gcp:projects:IAMMember\n name: log_writer\n properties:\n project: ${account.project}\n role: roles/logging.logWriter\n member: serviceAccount:${account.email}\n artifactRegistryWriter:\n type: gcp:projects:IAMMember\n name: artifact_registry_writer\n properties:\n project: ${account.project}\n role: roles/artifactregistry.writer\n member: serviceAccount:${account.email}\n storageObjectAdmin:\n type: gcp:projects:IAMMember\n name: storage_object_admin\n properties:\n project: ${account.project}\n role: roles/storage.objectAdmin\n member: serviceAccount:${account.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n # builder permissions need to stablize before it can pull the source zip\n wait60s:\n type: time:sleep\n name: wait_60s\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${logWriter}\n - ${artifactRegistryWriter}\n - ${storageObjectAdmin}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceAccount: ${account.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${wait60s}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Env\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretEnvironmentVariables: [{\n key: \"TEST\",\n projectId: project,\n secret: secret.secretId,\n version: \"latest\",\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_environment_variables\": [{\n \"key\": \"TEST\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n \"version\": \"latest\",\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretEnvironmentVariables = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretEnvironmentVariableArgs\n {\n Key = \"TEST\",\n ProjectId = project,\n Secret = secret.SecretId,\n Version = \"latest\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretEnvironmentVariables: cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"TEST\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretEnvironmentVariables(FunctionServiceConfigSecretEnvironmentVariableArgs.builder()\n .key(\"TEST\")\n .projectId(project)\n .secret(secret.secretId())\n .version(\"latest\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretEnvironmentVariables:\n - key: TEST\n projectId: ${project}\n secret: ${secret.secretId}\n version: latest\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Volume\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretVolumes: [{\n mountPath: \"/etc/secrets\",\n projectId: project,\n secret: secret.secretId,\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_volumes\": [{\n \"mount_path\": \"/etc/secrets\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretVolumes = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretVolumeArgs\n {\n MountPath = \"/etc/secrets\",\n ProjectId = project,\n Secret = secret.SecretId,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretVolumes: cloudfunctionsv2.FunctionServiceConfigSecretVolumeArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs{\n\t\t\t\t\t\tMountPath: pulumi.String(\"/etc/secrets\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretVolumes(FunctionServiceConfigSecretVolumeArgs.builder()\n .mountPath(\"/etc/secrets\")\n .projectId(project)\n .secret(secret.secretId())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretVolumes:\n - mountPath: /etc/secrets\n projectId: ${project}\n secret: ${secret.secretId}\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Private Workerpool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"workerpool\",\n location: \"us-central1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-8\",\n noExternalIp: false,\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-workerpool\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n workerPool: pool.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"workerpool\",\n location=\"us-central1\",\n worker_config={\n \"disk_size_gb\": 100,\n \"machine_type\": \"e2-standard-8\",\n \"no_external_ip\": False,\n })\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-workerpool\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"worker_pool\": pool.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"workerpool\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-8\",\n NoExternalIp = false,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-workerpool\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n WorkerPool = pool.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-8\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerPool: pool.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"workerpool\")\n .location(\"us-central1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-8\")\n .noExternalIp(false)\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-workerpool\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .workerPool(pool.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: workerpool\n location: us-central1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-8\n noExternalIp: false\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-workerpool\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n workerPool: ${pool.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Cmek Docs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst projectGetProject = gcp.organizations.getProject({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst eaSa = new gcp.projects.ServiceIdentity(\"ea_sa\", {\n project: projectGetProject.then(projectGetProject =\u003e projectGetProject.projectId),\n service: \"eventarc.googleapis.com\",\n});\nconst unencoded_ar_repo = new gcp.artifactregistry.Repository(\"unencoded-ar-repo\", {\n repositoryId: \"ar-repo\",\n location: \"us-central1\",\n format: \"DOCKER\",\n});\nconst gcfCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", {\n cryptoKeyId: \"cmek-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com`),\n eaSa.member,\n ],\n}, {\n dependsOn: [eaSa],\n});\nconst encoded_ar_repo = new gcp.artifactregistry.Repository(\"encoded-ar-repo\", {\n location: \"us-central1\",\n repositoryId: \"cmek-repo\",\n format: \"DOCKER\",\n kmsKeyName: \"cmek-key\",\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\nconst binding = new gcp.artifactregistry.RepositoryIamBinding(\"binding\", {\n location: encoded_ar_repo.location,\n repository: encoded_ar_repo.name,\n role: \"roles/artifactregistry.admin\",\n members: [projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`)],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-cmek\",\n location: \"us-central1\",\n description: \"CMEK function\",\n kmsKeyName: \"cmek-key\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n dockerRepository: encoded_ar_repo.id,\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nproject_get_project = gcp.organizations.get_project()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nea_sa = gcp.projects.ServiceIdentity(\"ea_sa\",\n project=project_get_project.project_id,\n service=\"eventarc.googleapis.com\")\nunencoded_ar_repo = gcp.artifactregistry.Repository(\"unencoded-ar-repo\",\n repository_id=\"ar-repo\",\n location=\"us-central1\",\n format=\"DOCKER\")\ngcf_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\",\n crypto_key_id=\"cmek-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[\n f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gs-project-accounts.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@serverless-robot-prod.iam.gserviceaccount.com\",\n ea_sa.member,\n ],\n opts = pulumi.ResourceOptions(depends_on=[ea_sa]))\nencoded_ar_repo = gcp.artifactregistry.Repository(\"encoded-ar-repo\",\n location=\"us-central1\",\n repository_id=\"cmek-repo\",\n format=\"DOCKER\",\n kms_key_name=\"cmek-key\",\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\nbinding = gcp.artifactregistry.RepositoryIamBinding(\"binding\",\n location=encoded_ar_repo.location,\n repository=encoded_ar_repo.name,\n role=\"roles/artifactregistry.admin\",\n members=[f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\"])\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-cmek\",\n location=\"us-central1\",\n description=\"CMEK function\",\n kms_key_name=\"cmek-key\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"docker_repository\": encoded_ar_repo.id,\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var projectGetProject = Gcp.Organizations.GetProject.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var eaSa = new Gcp.Projects.ServiceIdentity(\"ea_sa\", new()\n {\n Project = projectGetProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"eventarc.googleapis.com\",\n });\n\n var unencoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"unencoded-ar-repo\", new()\n {\n RepositoryId = \"ar-repo\",\n Location = \"us-central1\",\n Format = \"DOCKER\",\n });\n\n var gcfCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", new()\n {\n CryptoKeyId = \"cmek-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gs-project-accounts.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@serverless-robot-prod.iam.gserviceaccount.com\",\n eaSa.Member,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n eaSa,\n },\n });\n\n var encoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"encoded-ar-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"cmek-repo\",\n Format = \"DOCKER\",\n KmsKeyName = \"cmek-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n var binding = new Gcp.ArtifactRegistry.RepositoryIamBinding(\"binding\", new()\n {\n Location = encoded_ar_repo.Location,\n Repository = encoded_ar_repo.Name,\n Role = \"roles/artifactregistry.admin\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-cmek\",\n Location = \"us-central1\",\n Description = \"CMEK function\",\n KmsKeyName = \"cmek-key\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n DockerRepository = encoded_ar_repo.Id,\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tprojectGetProject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teaSa, err := projects.NewServiceIdentity(ctx, \"ea_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(projectGetProject.ProjectId),\n\t\t\tService: pulumi.String(\"eventarc.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"unencoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"ar-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcfCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"gcf_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"cmek-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\teaSa.Member,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\teaSa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"encoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"cmek-repo\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepositoryIamBinding(ctx, \"binding\", \u0026artifactregistry.RepositoryIamBindingArgs{\n\t\t\tLocation: encoded_ar_repo.Location,\n\t\t\tRepository: encoded_ar_repo.Name,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-cmek\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"CMEK function\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tDockerRepository: encoded_ar_repo.ID(),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\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.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBinding;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBindingArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n final var projectGetProject = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var eaSa = new ServiceIdentity(\"eaSa\", ServiceIdentityArgs.builder()\n .project(projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"eventarc.googleapis.com\")\n .build());\n\n var unencoded_ar_repo = new Repository(\"unencoded-ar-repo\", RepositoryArgs.builder()\n .repositoryId(\"ar-repo\")\n .location(\"us-central1\")\n .format(\"DOCKER\")\n .build());\n\n var gcfCmekKeyuser = new CryptoKeyIAMBinding(\"gcfCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"cmek-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members( \n String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n eaSa.member())\n .build(), CustomResourceOptions.builder()\n .dependsOn(eaSa)\n .build());\n\n var encoded_ar_repo = new Repository(\"encoded-ar-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"cmek-repo\")\n .format(\"DOCKER\")\n .kmsKeyName(\"cmek-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n var binding = new RepositoryIamBinding(\"binding\", RepositoryIamBindingArgs.builder()\n .location(encoded_ar_repo.location())\n .repository(encoded_ar_repo.name())\n .role(\"roles/artifactregistry.admin\")\n .members(String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-cmek\")\n .location(\"us-central1\")\n .description(\"CMEK function\")\n .kmsKeyName(\"cmek-key\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .dockerRepository(encoded_ar_repo.id())\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n eaSa:\n type: gcp:projects:ServiceIdentity\n name: ea_sa\n properties:\n project: ${projectGetProject.projectId}\n service: eventarc.googleapis.com\n unencoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: ar-repo\n location: us-central1\n format: DOCKER\n binding:\n type: gcp:artifactregistry:RepositoryIamBinding\n properties:\n location: ${[\"encoded-ar-repo\"].location}\n repository: ${[\"encoded-ar-repo\"].name}\n role: roles/artifactregistry.admin\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n gcfCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: gcf_cmek_keyuser\n properties:\n cryptoKeyId: cmek-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com\n - ${eaSa.member}\n options:\n dependson:\n - ${eaSa}\n encoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: cmek-repo\n format: DOCKER\n kmsKeyName: cmek-key\n options:\n dependson:\n - ${gcfCmekKeyuser}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-cmek\n location: us-central1\n description: CMEK function\n kmsKeyName: cmek-key\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n dockerRepository: ${[\"encoded-ar-repo\"].id}\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${gcfCmekKeyuser}\nvariables:\n project: my-project-name\n projectGetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n automaticUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"automatic_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n AutomaticUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAutomaticUpdatePolicy: \u0026cloudfunctionsv2.FunctionBuildConfigAutomaticUpdatePolicyArgs{},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigAutomaticUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .automaticUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n automaticUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu On Deploy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n onDeployUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"on_deploy_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n OnDeployUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOnDeployUpdatePolicy: \u0026cloudfunctionsv2.FunctionBuildConfigOnDeployUpdatePolicyArgs{},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigOnDeployUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .onDeployUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n onDeployUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nfunction can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/functions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, function can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Function that contains user computation executed in response to an event.\n\n\nTo get more information about function, see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions)\n\n## Example Usage\n\n### Cloudfunctions2 Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n SERVICE_CONFIG_DIFF_TEST: account.email,\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n \"SERVICE_CONFIG_DIFF_TEST\": account.email,\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n { \"SERVICE_CONFIG_DIFF_TEST\", account.Email },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t\t\"SERVICE_CONFIG_DIFF_TEST\": account.Email,\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.ofEntries(\n Map.entry(\"SERVICE_CONFIG_TEST\", \"config_test\"),\n Map.entry(\"SERVICE_CONFIG_DIFF_TEST\", account.email())\n ))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n SERVICE_CONFIG_DIFF_TEST: ${account.email}\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Scheduler Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n serviceAccountEmail: account.email,\n },\n});\nconst invoker = new gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\", {\n project: _function.project,\n location: _function.location,\n cloudFunction: _function.name,\n role: \"roles/cloudfunctions.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst cloudRunInvoker = new gcp.cloudrun.IamMember(\"cloud_run_invoker\", {\n project: _function.project,\n location: _function.location,\n service: _function.name,\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst invokeCloudFunction = new gcp.cloudscheduler.Job(\"invoke_cloud_function\", {\n name: \"invoke-gcf-function\",\n description: \"Schedule the HTTPS trigger for cloud function\",\n schedule: \"0 0 * * *\",\n project: _function.project,\n region: _function.location,\n httpTarget: {\n uri: _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri),\n httpMethod: \"POST\",\n oidcToken: {\n audience: _function.serviceConfig.apply(serviceConfig =\u003e `${serviceConfig?.uri}/`),\n serviceAccountEmail: account.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"service_account_email\": account.email,\n })\ninvoker = gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\",\n project=function.project,\n location=function.location,\n cloud_function=function.name,\n role=\"roles/cloudfunctions.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ncloud_run_invoker = gcp.cloudrun.IamMember(\"cloud_run_invoker\",\n project=function.project,\n location=function.location,\n service=function.name,\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ninvoke_cloud_function = gcp.cloudscheduler.Job(\"invoke_cloud_function\",\n name=\"invoke-gcf-function\",\n description=\"Schedule the HTTPS trigger for cloud function\",\n schedule=\"0 0 * * *\",\n project=function.project,\n region=function.location,\n http_target={\n \"uri\": function.service_config.uri,\n \"http_method\": \"POST\",\n \"oidc_token\": {\n \"audience\": function.service_config.apply(lambda service_config: f\"{service_config.uri}/\"),\n \"service_account_email\": account.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n ServiceAccountEmail = account.Email,\n },\n });\n\n var invoker = new Gcp.CloudFunctionsV2.FunctionIamMember(\"invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n CloudFunction = function.Name,\n Role = \"roles/cloudfunctions.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var cloudRunInvoker = new Gcp.CloudRun.IamMember(\"cloud_run_invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n Service = function.Name,\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var invokeCloudFunction = new Gcp.CloudScheduler.Job(\"invoke_cloud_function\", new()\n {\n Name = \"invoke-gcf-function\",\n Description = \"Schedule the HTTPS trigger for cloud function\",\n Schedule = \"0 0 * * *\",\n Project = function.Project,\n Region = function.Location,\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n Uri = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n HttpMethod = \"POST\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n Audience = function.ServiceConfig.Apply(serviceConfig =\u003e $\"{serviceConfig?.Uri}/\"),\n ServiceAccountEmail = account.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunctionIamMember(ctx, \"invoker\", \u0026cloudfunctionsv2.FunctionIamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tCloudFunction: function.Name,\n\t\t\tRole: pulumi.String(\"roles/cloudfunctions.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = cloudrun.NewIamMember(ctx, \"cloud_run_invoker\", \u0026cloudrun.IamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tService: function.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = cloudscheduler.NewJob(ctx, \"invoke_cloud_function\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"invoke-gcf-function\"),\n\t\t\tDescription: pulumi.String(\"Schedule the HTTPS trigger for cloud function\"),\n\t\t\tSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\tProject: function.Project,\n\t\t\tRegion: function.Location,\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tUri: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tAudience: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/\", serviceConfig.Uri), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tServiceAccountEmail: account.Email,\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMember;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMemberArgs;\nimport com.pulumi.gcp.cloudrun.IamMember;\nimport com.pulumi.gcp.cloudrun.IamMemberArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .serviceAccountEmail(account.email())\n .build())\n .build());\n\n var invoker = new FunctionIamMember(\"invoker\", FunctionIamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .cloudFunction(function.name())\n .role(\"roles/cloudfunctions.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var cloudRunInvoker = new IamMember(\"cloudRunInvoker\", IamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .service(function.name())\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var invokeCloudFunction = new Job(\"invokeCloudFunction\", JobArgs.builder()\n .name(\"invoke-gcf-function\")\n .description(\"Schedule the HTTPS trigger for cloud function\")\n .schedule(\"0 0 * * *\")\n .project(function.project())\n .region(function.location())\n .httpTarget(JobHttpTargetArgs.builder()\n .uri(function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()))\n .httpMethod(\"POST\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .audience(function.serviceConfig().applyValue(serviceConfig -\u003e String.format(\"%s/\", serviceConfig.uri())))\n .serviceAccountEmail(account.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n serviceAccountEmail: ${account.email}\n invoker:\n type: gcp:cloudfunctionsv2:FunctionIamMember\n properties:\n project: ${function.project}\n location: ${function.location}\n cloudFunction: ${function.name}\n role: roles/cloudfunctions.invoker\n member: serviceAccount:${account.email}\n cloudRunInvoker:\n type: gcp:cloudrun:IamMember\n name: cloud_run_invoker\n properties:\n project: ${function.project}\n location: ${function.location}\n service: ${function.name}\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n invokeCloudFunction:\n type: gcp:cloudscheduler:Job\n name: invoke_cloud_function\n properties:\n name: invoke-gcf-function\n description: Schedule the HTTPS trigger for cloud function\n schedule: 0 0 * * *\n project: ${function.project}\n region: ${function.location}\n httpTarget:\n uri: ${function.serviceConfig.uri}\n httpMethod: POST\n oidcToken:\n audience: ${function.serviceConfig.uri}/\n serviceAccountEmail: ${account.email}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst trigger_bucket = new gcp.storage.Bucket(\"trigger-bucket\", {\n name: \"gcf-trigger-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\n// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\nconst gcs_pubsub_publishing = new gcp.projects.IAMMember(\"gcs-pubsub-publishing\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.publisher\",\n member: gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [gcs_pubsub_publishing],\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n eventType: \"google.cloud.storage.object.v1.finalized\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [{\n attribute: \"bucket\",\n value: trigger_bucket.name,\n }],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\ntrigger_bucket = gcp.storage.Bucket(\"trigger-bucket\",\n name=\"gcf-trigger-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\ngcs_account = gcp.storage.get_project_service_account()\n# To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n# (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\ngcs_pubsub_publishing = gcp.projects.IAMMember(\"gcs-pubsub-publishing\",\n project=\"my-project-name\",\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{gcs_account.email_address}\")\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[gcs_pubsub_publishing]))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"event_type\": \"google.cloud.storage.object.v1.finalized\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [{\n \"attribute\": \"bucket\",\n \"value\": trigger_bucket.name,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var trigger_bucket = new Gcp.Storage.Bucket(\"trigger-bucket\", new()\n {\n Name = \"gcf-trigger-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new Gcp.Projects.IAMMember(\"gcs-pubsub-publishing\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcs_pubsub_publishing,\n },\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n EventType = \"google.cloud.storage.object.v1.finalized\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"bucket\",\n Value = trigger_bucket.Name,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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 := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"trigger-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-trigger-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n\t\t// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n\t\t_, err = projects.NewIAMMember(ctx, \"gcs-pubsub-publishing\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcs_pubsub_publishing,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tEventType: pulumi.String(\"google.cloud.storage.object.v1.finalized\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tValue: trigger_bucket.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var trigger_bucket = new Bucket(\"trigger-bucket\", BucketArgs.builder()\n .name(\"gcf-trigger-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new IAMMember(\"gcs-pubsub-publishing\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcs_pubsub_publishing)\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .eventType(\"google.cloud.storage.object.v1.finalized\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters(FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"bucket\")\n .value(trigger_bucket.name())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n trigger-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-trigger-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n # (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n gcs-pubsub-publishing:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/pubsub.publisher\n member: serviceAccount:${gcsAccount.emailAddress}\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"gcs-pubsub-publishing\"]}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n eventType: google.cloud.storage.object.v1.finalized\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: bucket\n value: ${[\"trigger-bucket\"].name}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Auditlogs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example follows the examples shown in this Google Cloud Community blog post\n// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n// and the docs:\n// https://cloud.google.com/eventarc/docs/path-patterns\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n// google_cloudfunctions2_function below (Audit Log events have path pattern support)\nconst audit_log_bucket = new gcp.storage.Bucket(\"audit-log-bucket\", {\n name: \"gcf-auditlog-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.audit.log.v1.written\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [\n {\n attribute: \"serviceName\",\n value: \"storage.googleapis.com\",\n },\n {\n attribute: \"methodName\",\n value: \"storage.objects.create\",\n },\n {\n attribute: \"resourceName\",\n value: pulumi.interpolate`/projects/_/buckets/${audit_log_bucket.name}/objects/*.txt`,\n operator: \"match-path-pattern\",\n },\n ],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example follows the examples shown in this Google Cloud Community blog post\n# https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n# and the docs:\n# https://cloud.google.com/eventarc/docs/path-patterns\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n# Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n# google_cloudfunctions2_function below (Audit Log events have path pattern support)\naudit_log_bucket = gcp.storage.Bucket(\"audit-log-bucket\",\n name=\"gcf-auditlog-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.audit.log.v1.written\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [\n {\n \"attribute\": \"serviceName\",\n \"value\": \"storage.googleapis.com\",\n },\n {\n \"attribute\": \"methodName\",\n \"value\": \"storage.objects.create\",\n },\n {\n \"attribute\": \"resourceName\",\n \"value\": audit_log_bucket.name.apply(lambda name: f\"/projects/_/buckets/{name}/objects/*.txt\"),\n \"operator\": \"match-path-pattern\",\n },\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Gcp.Storage.Bucket(\"audit-log-bucket\", new()\n {\n Name = \"gcf-auditlog-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.audit.log.v1.written\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"serviceName\",\n Value = \"storage.googleapis.com\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"methodName\",\n Value = \"storage.objects.create\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"resourceName\",\n Value = audit_log_bucket.Name.Apply(name =\u003e $\"/projects/_/buckets/{name}/objects/*.txt\"),\n Operator = \"match-path-pattern\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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// This example follows the examples shown in this Google Cloud Community blog post\n\t\t// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n\t\t// and the docs:\n\t\t// https://cloud.google.com/eventarc/docs/path-patterns\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n\t\t// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n\t\t// google_cloudfunctions2_function below (Audit Log events have path pattern support)\n\t\t_, err = storage.NewBucket(ctx, \"audit-log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-auditlog-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.audit.log.v1.written\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"serviceName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"methodName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.objects.create\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"resourceName\"),\n\t\t\t\t\t\tValue: audit_log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"/projects/_/buckets/%v/objects/*.txt\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tOperator: pulumi.String(\"match-path-pattern\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Bucket(\"audit-log-bucket\", BucketArgs.builder()\n .name(\"gcf-auditlog-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.audit.log.v1.written\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters( \n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"serviceName\")\n .value(\"storage.googleapis.com\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"methodName\")\n .value(\"storage.objects.create\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"resourceName\")\n .value(audit_log_bucket.name().applyValue(name -\u003e String.format(\"/projects/_/buckets/%s/objects/*.txt\", name)))\n .operator(\"match-path-pattern\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example follows the examples shown in this Google Cloud Community blog post\n # https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n # and the docs:\n # https://cloud.google.com/eventarc/docs/path-patterns\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n # Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n # google_cloudfunctions2_function below (Audit Log events have path pattern support)\n audit-log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-auditlog-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.audit.log.v1.written\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: serviceName\n value: storage.googleapis.com\n - attribute: methodName\n value: storage.objects.create\n - attribute: resourceName\n value: /projects/_/buckets/${[\"audit-log-bucket\"].name}/objects/*.txt\n operator: match-path-pattern\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Builder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst logWriter = new gcp.projects.IAMMember(\"log_writer\", {\n project: account.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactRegistryWriter = new gcp.projects.IAMMember(\"artifact_registry_writer\", {\n project: account.project,\n role: \"roles/artifactregistry.writer\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst storageObjectAdmin = new gcp.projects.IAMMember(\"storage_object_admin\", {\n project: account.project,\n role: \"roles/storage.objectAdmin\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\n// builder permissions need to stablize before it can pull the source zip\nconst wait60s = new time.index.Sleep(\"wait_60s\", {createDuration: \"60s\"}, {\n dependsOn: [\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n ],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n serviceAccount: account.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [wait60s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nlog_writer = gcp.projects.IAMMember(\"log_writer\",\n project=account.project,\n role=\"roles/logging.logWriter\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifact_registry_writer = gcp.projects.IAMMember(\"artifact_registry_writer\",\n project=account.project,\n role=\"roles/artifactregistry.writer\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_object_admin = gcp.projects.IAMMember(\"storage_object_admin\",\n project=account.project,\n role=\"roles/storage.objectAdmin\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\n# builder permissions need to stablize before it can pull the source zip\nwait60s = time.index.Sleep(\"wait_60s\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[\n log_writer,\n artifact_registry_writer,\n storage_object_admin,\n ]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"service_account\": account.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait60s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var logWriter = new Gcp.Projects.IAMMember(\"log_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/logging.logWriter\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactRegistryWriter = new Gcp.Projects.IAMMember(\"artifact_registry_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/artifactregistry.writer\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageObjectAdmin = new Gcp.Projects.IAMMember(\"storage_object_admin\", new()\n {\n Project = account.Project,\n Role = \"roles/storage.objectAdmin\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Time.Index.Sleep(\"wait_60s\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n ServiceAccount = account.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogWriter, err := projects.NewIAMMember(ctx, \"log_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\tartifactRegistryWriter, err := projects.NewIAMMember(ctx, \"artifact_registry_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.writer\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\tstorageObjectAdmin, err := projects.NewIAMMember(ctx, \"storage_object_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectAdmin\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// builder permissions need to stablize before it can pull the source zip\n\t\twait60s, err := time.NewSleep(ctx, \"wait_60s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlogWriter,\n\t\t\tartifactRegistryWriter,\n\t\t\tstorageObjectAdmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceAccount: account.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60s,\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var logWriter = new IAMMember(\"logWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/logging.logWriter\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactRegistryWriter = new IAMMember(\"artifactRegistryWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/artifactregistry.writer\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageObjectAdmin = new IAMMember(\"storageObjectAdmin\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/storage.objectAdmin\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Sleep(\"wait60s\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .serviceAccount(account.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n logWriter:\n type: gcp:projects:IAMMember\n name: log_writer\n properties:\n project: ${account.project}\n role: roles/logging.logWriter\n member: serviceAccount:${account.email}\n artifactRegistryWriter:\n type: gcp:projects:IAMMember\n name: artifact_registry_writer\n properties:\n project: ${account.project}\n role: roles/artifactregistry.writer\n member: serviceAccount:${account.email}\n storageObjectAdmin:\n type: gcp:projects:IAMMember\n name: storage_object_admin\n properties:\n project: ${account.project}\n role: roles/storage.objectAdmin\n member: serviceAccount:${account.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n # builder permissions need to stablize before it can pull the source zip\n wait60s:\n type: time:sleep\n name: wait_60s\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${logWriter}\n - ${artifactRegistryWriter}\n - ${storageObjectAdmin}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceAccount: ${account.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${wait60s}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Env\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretEnvironmentVariables: [{\n key: \"TEST\",\n projectId: project,\n secret: secret.secretId,\n version: \"latest\",\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_environment_variables\": [{\n \"key\": \"TEST\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n \"version\": \"latest\",\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretEnvironmentVariables = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretEnvironmentVariableArgs\n {\n Key = \"TEST\",\n ProjectId = project,\n Secret = secret.SecretId,\n Version = \"latest\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretEnvironmentVariables: cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"TEST\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretEnvironmentVariables(FunctionServiceConfigSecretEnvironmentVariableArgs.builder()\n .key(\"TEST\")\n .projectId(project)\n .secret(secret.secretId())\n .version(\"latest\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretEnvironmentVariables:\n - key: TEST\n projectId: ${project}\n secret: ${secret.secretId}\n version: latest\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Volume\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretVolumes: [{\n mountPath: \"/etc/secrets\",\n projectId: project,\n secret: secret.secretId,\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_volumes\": [{\n \"mount_path\": \"/etc/secrets\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretVolumes = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretVolumeArgs\n {\n MountPath = \"/etc/secrets\",\n ProjectId = project,\n Secret = secret.SecretId,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretVolumes: cloudfunctionsv2.FunctionServiceConfigSecretVolumeArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs{\n\t\t\t\t\t\tMountPath: pulumi.String(\"/etc/secrets\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretVolumes(FunctionServiceConfigSecretVolumeArgs.builder()\n .mountPath(\"/etc/secrets\")\n .projectId(project)\n .secret(secret.secretId())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretVolumes:\n - mountPath: /etc/secrets\n projectId: ${project}\n secret: ${secret.secretId}\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Private Workerpool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"workerpool\",\n location: \"us-central1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-8\",\n noExternalIp: false,\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-workerpool\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n workerPool: pool.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"workerpool\",\n location=\"us-central1\",\n worker_config={\n \"disk_size_gb\": 100,\n \"machine_type\": \"e2-standard-8\",\n \"no_external_ip\": False,\n })\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-workerpool\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"worker_pool\": pool.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"workerpool\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-8\",\n NoExternalIp = false,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-workerpool\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n WorkerPool = pool.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-8\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerPool: pool.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"workerpool\")\n .location(\"us-central1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-8\")\n .noExternalIp(false)\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-workerpool\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .workerPool(pool.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: workerpool\n location: us-central1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-8\n noExternalIp: false\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-workerpool\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n workerPool: ${pool.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Cmek Docs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst projectGetProject = gcp.organizations.getProject({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst eaSa = new gcp.projects.ServiceIdentity(\"ea_sa\", {\n project: projectGetProject.then(projectGetProject =\u003e projectGetProject.projectId),\n service: \"eventarc.googleapis.com\",\n});\nconst unencoded_ar_repo = new gcp.artifactregistry.Repository(\"unencoded-ar-repo\", {\n repositoryId: \"ar-repo\",\n location: \"us-central1\",\n format: \"DOCKER\",\n});\nconst gcfCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", {\n cryptoKeyId: \"cmek-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com`),\n eaSa.member,\n ],\n}, {\n dependsOn: [eaSa],\n});\nconst encoded_ar_repo = new gcp.artifactregistry.Repository(\"encoded-ar-repo\", {\n location: \"us-central1\",\n repositoryId: \"cmek-repo\",\n format: \"DOCKER\",\n kmsKeyName: \"cmek-key\",\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\nconst binding = new gcp.artifactregistry.RepositoryIamBinding(\"binding\", {\n location: encoded_ar_repo.location,\n repository: encoded_ar_repo.name,\n role: \"roles/artifactregistry.admin\",\n members: [projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`)],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-cmek\",\n location: \"us-central1\",\n description: \"CMEK function\",\n kmsKeyName: \"cmek-key\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n dockerRepository: encoded_ar_repo.id,\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nproject_get_project = gcp.organizations.get_project()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nea_sa = gcp.projects.ServiceIdentity(\"ea_sa\",\n project=project_get_project.project_id,\n service=\"eventarc.googleapis.com\")\nunencoded_ar_repo = gcp.artifactregistry.Repository(\"unencoded-ar-repo\",\n repository_id=\"ar-repo\",\n location=\"us-central1\",\n format=\"DOCKER\")\ngcf_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\",\n crypto_key_id=\"cmek-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[\n f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gs-project-accounts.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@serverless-robot-prod.iam.gserviceaccount.com\",\n ea_sa.member,\n ],\n opts = pulumi.ResourceOptions(depends_on=[ea_sa]))\nencoded_ar_repo = gcp.artifactregistry.Repository(\"encoded-ar-repo\",\n location=\"us-central1\",\n repository_id=\"cmek-repo\",\n format=\"DOCKER\",\n kms_key_name=\"cmek-key\",\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\nbinding = gcp.artifactregistry.RepositoryIamBinding(\"binding\",\n location=encoded_ar_repo.location,\n repository=encoded_ar_repo.name,\n role=\"roles/artifactregistry.admin\",\n members=[f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\"])\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-cmek\",\n location=\"us-central1\",\n description=\"CMEK function\",\n kms_key_name=\"cmek-key\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"docker_repository\": encoded_ar_repo.id,\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var projectGetProject = Gcp.Organizations.GetProject.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var eaSa = new Gcp.Projects.ServiceIdentity(\"ea_sa\", new()\n {\n Project = projectGetProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"eventarc.googleapis.com\",\n });\n\n var unencoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"unencoded-ar-repo\", new()\n {\n RepositoryId = \"ar-repo\",\n Location = \"us-central1\",\n Format = \"DOCKER\",\n });\n\n var gcfCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", new()\n {\n CryptoKeyId = \"cmek-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gs-project-accounts.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@serverless-robot-prod.iam.gserviceaccount.com\",\n eaSa.Member,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n eaSa,\n },\n });\n\n var encoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"encoded-ar-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"cmek-repo\",\n Format = \"DOCKER\",\n KmsKeyName = \"cmek-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n var binding = new Gcp.ArtifactRegistry.RepositoryIamBinding(\"binding\", new()\n {\n Location = encoded_ar_repo.Location,\n Repository = encoded_ar_repo.Name,\n Role = \"roles/artifactregistry.admin\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-cmek\",\n Location = \"us-central1\",\n Description = \"CMEK function\",\n KmsKeyName = \"cmek-key\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n DockerRepository = encoded_ar_repo.Id,\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tprojectGetProject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teaSa, err := projects.NewServiceIdentity(ctx, \"ea_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(projectGetProject.ProjectId),\n\t\t\tService: pulumi.String(\"eventarc.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"unencoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"ar-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcfCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"gcf_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"cmek-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\teaSa.Member,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\teaSa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"encoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"cmek-repo\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepositoryIamBinding(ctx, \"binding\", \u0026artifactregistry.RepositoryIamBindingArgs{\n\t\t\tLocation: encoded_ar_repo.Location,\n\t\t\tRepository: encoded_ar_repo.Name,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-cmek\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"CMEK function\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tDockerRepository: encoded_ar_repo.ID(),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\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.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBinding;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBindingArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n final var projectGetProject = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var eaSa = new ServiceIdentity(\"eaSa\", ServiceIdentityArgs.builder()\n .project(projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"eventarc.googleapis.com\")\n .build());\n\n var unencoded_ar_repo = new Repository(\"unencoded-ar-repo\", RepositoryArgs.builder()\n .repositoryId(\"ar-repo\")\n .location(\"us-central1\")\n .format(\"DOCKER\")\n .build());\n\n var gcfCmekKeyuser = new CryptoKeyIAMBinding(\"gcfCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"cmek-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members( \n String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n eaSa.member())\n .build(), CustomResourceOptions.builder()\n .dependsOn(eaSa)\n .build());\n\n var encoded_ar_repo = new Repository(\"encoded-ar-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"cmek-repo\")\n .format(\"DOCKER\")\n .kmsKeyName(\"cmek-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n var binding = new RepositoryIamBinding(\"binding\", RepositoryIamBindingArgs.builder()\n .location(encoded_ar_repo.location())\n .repository(encoded_ar_repo.name())\n .role(\"roles/artifactregistry.admin\")\n .members(String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-cmek\")\n .location(\"us-central1\")\n .description(\"CMEK function\")\n .kmsKeyName(\"cmek-key\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .dockerRepository(encoded_ar_repo.id())\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n eaSa:\n type: gcp:projects:ServiceIdentity\n name: ea_sa\n properties:\n project: ${projectGetProject.projectId}\n service: eventarc.googleapis.com\n unencoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: ar-repo\n location: us-central1\n format: DOCKER\n binding:\n type: gcp:artifactregistry:RepositoryIamBinding\n properties:\n location: ${[\"encoded-ar-repo\"].location}\n repository: ${[\"encoded-ar-repo\"].name}\n role: roles/artifactregistry.admin\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n gcfCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: gcf_cmek_keyuser\n properties:\n cryptoKeyId: cmek-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com\n - ${eaSa.member}\n options:\n dependson:\n - ${eaSa}\n encoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: cmek-repo\n format: DOCKER\n kmsKeyName: cmek-key\n options:\n dependson:\n - ${gcfCmekKeyuser}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-cmek\n location: us-central1\n description: CMEK function\n kmsKeyName: cmek-key\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n dockerRepository: ${[\"encoded-ar-repo\"].id}\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${gcfCmekKeyuser}\nvariables:\n project: my-project-name\n projectGetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n automaticUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"automatic_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n AutomaticUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAutomaticUpdatePolicy: \u0026cloudfunctionsv2.FunctionBuildConfigAutomaticUpdatePolicyArgs{},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigAutomaticUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .automaticUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n automaticUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu On Deploy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n onDeployUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"on_deploy_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n OnDeployUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOnDeployUpdatePolicy: \u0026cloudfunctionsv2.FunctionBuildConfigOnDeployUpdatePolicyArgs{},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigOnDeployUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\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 project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .onDeployUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n onDeployUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nfunction can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/functions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, function can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n", "properties": { "buildConfig": { "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfig:FunctionBuildConfig", @@ -146020,7 +146020,7 @@ } }, "gcp:cloudrun/service:Service": { - "description": "A Cloud Run service has a unique endpoint and autoscales containers.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n\u003e **Warning:** We recommend using the `gcp.cloudrunv2.Service` resource which offers a better\ndeveloper experience and broader support of Cloud Run features.\n\n## Example Usage\n\n### Cloud Run Service Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloud_run_service_name\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"cloud-run-pubsub-invoker\",\n displayName: \"Cloud Run Pub/Sub Invoker\",\n});\nconst binding = new gcp.cloudrun.IamBinding(\"binding\", {\n location: _default.location,\n service: _default.name,\n role: \"roles/run.invoker\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst project = new gcp.projects.IAMBinding(\"project\", {\n role: \"roles/iam.serviceAccountTokenCreator\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"pubsub_topic\"});\nconst subscription = new gcp.pubsub.Subscription(\"subscription\", {\n name: \"pubsub_subscription\",\n topic: topic.name,\n pushConfig: {\n pushEndpoint: _default.statuses.apply(statuses =\u003e statuses[0].url),\n oidcToken: {\n serviceAccountEmail: sa.email,\n },\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloud_run_service_name\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"cloud-run-pubsub-invoker\",\n display_name=\"Cloud Run Pub/Sub Invoker\")\nbinding = gcp.cloudrun.IamBinding(\"binding\",\n location=default.location,\n service=default.name,\n role=\"roles/run.invoker\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\nproject = gcp.projects.IAMBinding(\"project\",\n role=\"roles/iam.serviceAccountTokenCreator\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\ntopic = gcp.pubsub.Topic(\"topic\", name=\"pubsub_topic\")\nsubscription = gcp.pubsub.Subscription(\"subscription\",\n name=\"pubsub_subscription\",\n topic=topic.name,\n push_config={\n \"push_endpoint\": default.statuses[0].url,\n \"oidc_token\": {\n \"service_account_email\": sa.email,\n },\n \"attributes\": {\n \"x_goog_version\": \"v1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloud_run_service_name\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"gcr.io/cloudrun/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"cloud-run-pubsub-invoker\",\n DisplayName = \"Cloud Run Pub/Sub Invoker\",\n });\n\n var binding = new Gcp.CloudRun.IamBinding(\"binding\", new()\n {\n Location = @default.Location,\n Service = @default.Name,\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"pubsub_topic\",\n });\n\n var subscription = new Gcp.PubSub.Subscription(\"subscription\", new()\n {\n Name = \"pubsub_subscription\",\n Topic = topic.Name,\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = @default.Statuses.Apply(statuses =\u003e statuses[0].Url),\n OidcToken = new Gcp.PubSub.Inputs.SubscriptionPushConfigOidcTokenArgs\n {\n ServiceAccountEmail = sa.Email,\n },\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloud_run_service_name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\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\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\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\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-run-pubsub-invoker\"),\n\t\t\tDisplayName: pulumi.String(\"Cloud Run Pub/Sub Invoker\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamBinding(ctx, \"binding\", \u0026cloudrun.IamBindingArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tService: _default.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"pubsub_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"subscription\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"pubsub_subscription\"),\n\t\t\tTopic: topic.Name,\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: _default.Statuses.ApplyT(func(statuses []cloudrun.ServiceStatus) (*string, error) {\n\t\t\t\t\treturn \u0026statuses[0].Url, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tOidcToken: \u0026pubsub.SubscriptionPushConfigOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: sa.Email,\n\t\t\t\t},\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudrun.IamBinding;\nimport com.pulumi.gcp.cloudrun.IamBindingArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigOidcTokenArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloud_run_service_name\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"cloud-run-pubsub-invoker\")\n .displayName(\"Cloud Run Pub/Sub Invoker\")\n .build());\n\n var binding = new IamBinding(\"binding\", IamBindingArgs.builder()\n .location(default_.location())\n .service(default_.name())\n .role(\"roles/run.invoker\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"pubsub_topic\")\n .build());\n\n var subscription = new Subscription(\"subscription\", SubscriptionArgs.builder()\n .name(\"pubsub_subscription\")\n .topic(topic.name())\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(default_.statuses().applyValue(statuses -\u003e statuses[0].url()))\n .oidcToken(SubscriptionPushConfigOidcTokenArgs.builder()\n .serviceAccountEmail(sa.email())\n .build())\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloud_run_service_name\n location: us-central1\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n traffics:\n - percent: 100\n latestRevision: true\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: cloud-run-pubsub-invoker\n displayName: Cloud Run Pub/Sub Invoker\n binding:\n type: gcp:cloudrun:IamBinding\n properties:\n location: ${default.location}\n service: ${default.name}\n role: roles/run.invoker\n members:\n - serviceAccount:${sa.email}\n project:\n type: gcp:projects:IAMBinding\n properties:\n role: roles/iam.serviceAccountTokenCreator\n members:\n - serviceAccount:${sa.email}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: pubsub_topic\n subscription:\n type: gcp:pubsub:Subscription\n properties:\n name: pubsub_subscription\n topic: ${topic.name}\n pushConfig:\n pushEndpoint: ${default.statuses[0].url}\n oidcToken:\n serviceAccountEmail: ${sa.email}\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud Run Service Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n annotations: {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template: {\n metadata: {\n annotations: {\n \"autoscaling.knative.dev/maxScale\": \"1\",\n \"run.googleapis.com/cpu-throttling\": \"false\",\n },\n },\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n resources: {\n limits: {\n cpu: \"4\",\n memory: \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n },\n }],\n nodeSelector: {\n \"run.googleapis.com/accelerator\": \"nvidia-l4\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run_googleapis_com_launch_stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"autoscaling_knative_dev_max_scale\": \"1\",\n \"run_googleapis_com_cpu_throttling\": \"false\",\n },\n },\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"4\",\n \"memory\": \"16Gi\",\n \"nvidia_com_gpu\": \"1\",\n },\n },\n }],\n \"node_selector\": {\n \"run_googleapis_com_accelerator\": \"nvidia-l4\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/launch-stage\", \"BETA\" },\n },\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"autoscaling.knative.dev/maxScale\", \"1\" },\n { \"run.googleapis.com/cpu-throttling\", \"false\" },\n },\n },\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"gcr.io/cloudrun/hello\",\n Resources = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"4\" },\n { \"memory\", \"16Gi\" },\n { \"nvidia.com/gpu\", \"1\" },\n },\n },\n },\n },\n NodeSelector = \n {\n { \"run.googleapis.com/accelerator\", \"nvidia-l4\" },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\"run.googleapis.com/launch-stage\": pulumi.String(\"BETA\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\"run.googleapis.com/cpu-throttling\": pulumi.String(\"false\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t\tResources: \u0026cloudrun.ServiceTemplateSpecContainerResourcesArgs{\n\t\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"4\"),\n\t\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"16Gi\"),\n\t\t\t\t\t\t\t\t\t\"nvidia.com/gpu\": pulumi.String(\"1\"),\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\tNodeSelector: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/accelerator\": pulumi.String(\"nvidia-l4\"),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/launch-stage\", \"BETA\"))\n .build())\n .template(ServiceTemplateArgs.builder()\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1\"),\n Map.entry(\"run.googleapis.com/cpu-throttling\", \"false\")\n ))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .resources(ServiceTemplateSpecContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"4\"),\n Map.entry(\"memory\", \"16Gi\"),\n Map.entry(\"nvidia.com/gpu\", \"1\")\n ))\n .build())\n .build())\n .nodeSelector(Map.of(\"run.googleapis.com/accelerator\", \"nvidia-l4\"))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n annotations:\n run.googleapis.com/launch-stage: BETA\n template:\n metadata:\n annotations:\n autoscaling.knative.dev/maxScale: '1'\n run.googleapis.com/cpu-throttling: 'false'\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n resources:\n limits:\n cpu: '4'\n memory: 16Gi\n nvidia.com/gpu: '1'\n nodeSelector:\n run.googleapis.com/accelerator: nvidia-l4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-east1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n metadata: {\n annotations: {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connectionName,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerateRevisionName: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-east1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n \"metadata\": {\n \"annotations\": {\n \"autoscaling_knative_dev_max_scale\": \"1000\",\n \"run_googleapis_com_cloudsql_instances\": instance.connection_name,\n \"run_googleapis_com_client_name\": \"demo\",\n },\n },\n },\n autogenerate_revision_name=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-east1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"autoscaling.knative.dev/maxScale\", \"1000\" },\n { \"run.googleapis.com/cloudsql-instances\", instance.ConnectionName },\n { \"run.googleapis.com/client-name\", \"demo\" },\n },\n },\n },\n AutogenerateRevisionName = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1000\"),\n\t\t\t\t\t\t\"run.googleapis.com/cloudsql-instances\": instance.ConnectionName,\n\t\t\t\t\t\t\"run.googleapis.com/client-name\": pulumi.String(\"demo\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutogenerateRevisionName: 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.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-east1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1000\"),\n Map.entry(\"run.googleapis.com/cloudsql-instances\", instance.connectionName()),\n Map.entry(\"run.googleapis.com/client-name\", \"demo\")\n ))\n .build())\n .build())\n .autogenerateRevisionName(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n metadata:\n annotations:\n autoscaling.knative.dev/maxScale: '1000'\n run.googleapis.com/cloudsql-instances: ${instance.connectionName}\n run.googleapis.com/client-name: demo\n autogenerateRevisionName: true\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-east1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Noauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst noauth = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/run.invoker\",\n members: [\"allUsers\"],\n }],\n});\nconst noauthIamPolicy = new gcp.cloudrun.IamPolicy(\"noauth\", {\n location: _default.location,\n project: _default.project,\n service: _default.name,\n policyData: noauth.then(noauth =\u003e noauth.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\nnoauth = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/run.invoker\",\n \"members\": [\"allUsers\"],\n}])\nnoauth_iam_policy = gcp.cloudrun.IamPolicy(\"noauth\",\n location=default.location,\n project=default.project,\n service=default.name,\n policy_data=noauth.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n });\n\n var noauth = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n \"allUsers\",\n },\n },\n },\n });\n\n var noauthIamPolicy = new Gcp.CloudRun.IamPolicy(\"noauth\", new()\n {\n Location = @default.Location,\n Project = @default.Project,\n Service = @default.Name,\n PolicyData = noauth.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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\tnoauth, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/run.invoker\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"allUsers\",\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\t_, err = cloudrun.NewIamPolicy(ctx, \"noauth\", \u0026cloudrun.IamPolicyArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tProject: _default.Project,\n\t\t\tService: _default.Name,\n\t\t\tPolicyData: pulumi.String(noauth.PolicyData),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.cloudrun.IamPolicy;\nimport com.pulumi.gcp.cloudrun.IamPolicyArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .build());\n\n final var noauth = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/run.invoker\")\n .members(\"allUsers\")\n .build())\n .build());\n\n var noauthIamPolicy = new IamPolicy(\"noauthIamPolicy\", IamPolicyArgs.builder()\n .location(default_.location())\n .project(default_.project())\n .service(default_.name())\n .policyData(noauth.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n noauthIamPolicy:\n type: gcp:cloudrun:IamPolicy\n name: noauth\n properties:\n location: ${default.location}\n project: ${default.project}\n service: ${default.name}\n policyData: ${noauth.policyData}\nvariables:\n noauth:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/run.invoker\n members:\n - allUsers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\t\tTcpSocket: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLivenessProbe: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\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\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateSpecContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateSpecContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n annotations: {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template: {\n metadata: {\n annotations: {\n \"run.googleapis.com/container-dependencies\": JSON.stringify({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n spec: {\n containers: [\n {\n name: \"hello-1\",\n ports: [{\n containerPort: 8080,\n }],\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n ],\n volumes: [{\n name: \"shared-volume\",\n emptyDir: {\n medium: \"Memory\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run_googleapis_com_launch_stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"run_googleapis_com_container_dependencies\": json.dumps({\n \"hello_1\": [\"hello-2\"],\n }),\n },\n },\n \"spec\": {\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": [{\n \"container_port\": 8080,\n }],\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n ],\n \"volumes\": [{\n \"name\": \"shared-volume\",\n \"empty_dir\": {\n \"medium\": \"Memory\",\n \"size_limit\": \"128Mi\",\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/launch-stage\", \"BETA\" },\n },\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/container-dependencies\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"hello-1\"] = new[]\n {\n \"hello-2\",\n },\n }) },\n },\n },\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-1\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeArgs\n {\n Name = \"shared-volume\",\n EmptyDir = new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeEmptyDirArgs\n {\n Medium = \"Memory\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"hello-1\": []string{\n\t\t\t\t\"hello-2\",\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\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\"run.googleapis.com/launch-stage\": pulumi.String(\"BETA\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/container-dependencies\": pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\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\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tEnvs: cloudrun.ServiceTemplateSpecContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\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\tVolumes: cloudrun.ServiceTemplateSpecVolumeArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrun.ServiceTemplateSpecVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"Memory\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/launch-stage\", \"BETA\"))\n .build())\n .template(ServiceTemplateArgs.builder()\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/container-dependencies\", serializeJson(\n jsonObject(\n jsonProperty(\"hello-1\", jsonArray(\"hello-2\"))\n ))))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers( \n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build(),\n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateSpecContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build())\n .volumes(ServiceTemplateSpecVolumeArgs.builder()\n .name(\"shared-volume\")\n .emptyDir(ServiceTemplateSpecVolumeEmptyDirArgs.builder()\n .medium(\"Memory\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n annotations:\n run.googleapis.com/launch-stage: BETA\n template:\n metadata:\n annotations:\n run.googleapis.com/container-dependencies:\n fn::toJSON:\n hello-1:\n - hello-2\n spec:\n containers:\n - name: hello-1\n ports:\n - containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n volumes:\n - name: shared-volume\n emptyDir:\n medium: Memory\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/services/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default locations/{{location}}/namespaces/{{project}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Run service has a unique endpoint and autoscales containers.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n\u003e **Warning:** We recommend using the `gcp.cloudrunv2.Service` resource which offers a better\ndeveloper experience and broader support of Cloud Run features.\n\n## Example Usage\n\n### Cloud Run Service Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloud_run_service_name\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"cloud-run-pubsub-invoker\",\n displayName: \"Cloud Run Pub/Sub Invoker\",\n});\nconst binding = new gcp.cloudrun.IamBinding(\"binding\", {\n location: _default.location,\n service: _default.name,\n role: \"roles/run.invoker\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst project = new gcp.projects.IAMBinding(\"project\", {\n role: \"roles/iam.serviceAccountTokenCreator\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"pubsub_topic\"});\nconst subscription = new gcp.pubsub.Subscription(\"subscription\", {\n name: \"pubsub_subscription\",\n topic: topic.name,\n pushConfig: {\n pushEndpoint: _default.statuses.apply(statuses =\u003e statuses[0].url),\n oidcToken: {\n serviceAccountEmail: sa.email,\n },\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloud_run_service_name\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"cloud-run-pubsub-invoker\",\n display_name=\"Cloud Run Pub/Sub Invoker\")\nbinding = gcp.cloudrun.IamBinding(\"binding\",\n location=default.location,\n service=default.name,\n role=\"roles/run.invoker\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\nproject = gcp.projects.IAMBinding(\"project\",\n role=\"roles/iam.serviceAccountTokenCreator\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\ntopic = gcp.pubsub.Topic(\"topic\", name=\"pubsub_topic\")\nsubscription = gcp.pubsub.Subscription(\"subscription\",\n name=\"pubsub_subscription\",\n topic=topic.name,\n push_config={\n \"push_endpoint\": default.statuses[0].url,\n \"oidc_token\": {\n \"service_account_email\": sa.email,\n },\n \"attributes\": {\n \"x-goog-version\": \"v1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloud_run_service_name\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"gcr.io/cloudrun/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"cloud-run-pubsub-invoker\",\n DisplayName = \"Cloud Run Pub/Sub Invoker\",\n });\n\n var binding = new Gcp.CloudRun.IamBinding(\"binding\", new()\n {\n Location = @default.Location,\n Service = @default.Name,\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"pubsub_topic\",\n });\n\n var subscription = new Gcp.PubSub.Subscription(\"subscription\", new()\n {\n Name = \"pubsub_subscription\",\n Topic = topic.Name,\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = @default.Statuses.Apply(statuses =\u003e statuses[0].Url),\n OidcToken = new Gcp.PubSub.Inputs.SubscriptionPushConfigOidcTokenArgs\n {\n ServiceAccountEmail = sa.Email,\n },\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloud_run_service_name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\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\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\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\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-run-pubsub-invoker\"),\n\t\t\tDisplayName: pulumi.String(\"Cloud Run Pub/Sub Invoker\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamBinding(ctx, \"binding\", \u0026cloudrun.IamBindingArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tService: _default.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"pubsub_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"subscription\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"pubsub_subscription\"),\n\t\t\tTopic: topic.Name,\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: _default.Statuses.ApplyT(func(statuses []cloudrun.ServiceStatus) (*string, error) {\n\t\t\t\t\treturn \u0026statuses[0].Url, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tOidcToken: \u0026pubsub.SubscriptionPushConfigOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: sa.Email,\n\t\t\t\t},\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudrun.IamBinding;\nimport com.pulumi.gcp.cloudrun.IamBindingArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigOidcTokenArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloud_run_service_name\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"cloud-run-pubsub-invoker\")\n .displayName(\"Cloud Run Pub/Sub Invoker\")\n .build());\n\n var binding = new IamBinding(\"binding\", IamBindingArgs.builder()\n .location(default_.location())\n .service(default_.name())\n .role(\"roles/run.invoker\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"pubsub_topic\")\n .build());\n\n var subscription = new Subscription(\"subscription\", SubscriptionArgs.builder()\n .name(\"pubsub_subscription\")\n .topic(topic.name())\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(default_.statuses().applyValue(statuses -\u003e statuses[0].url()))\n .oidcToken(SubscriptionPushConfigOidcTokenArgs.builder()\n .serviceAccountEmail(sa.email())\n .build())\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloud_run_service_name\n location: us-central1\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n traffics:\n - percent: 100\n latestRevision: true\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: cloud-run-pubsub-invoker\n displayName: Cloud Run Pub/Sub Invoker\n binding:\n type: gcp:cloudrun:IamBinding\n properties:\n location: ${default.location}\n service: ${default.name}\n role: roles/run.invoker\n members:\n - serviceAccount:${sa.email}\n project:\n type: gcp:projects:IAMBinding\n properties:\n role: roles/iam.serviceAccountTokenCreator\n members:\n - serviceAccount:${sa.email}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: pubsub_topic\n subscription:\n type: gcp:pubsub:Subscription\n properties:\n name: pubsub_subscription\n topic: ${topic.name}\n pushConfig:\n pushEndpoint: ${default.statuses[0].url}\n oidcToken:\n serviceAccountEmail: ${sa.email}\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud Run Service Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n annotations: {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template: {\n metadata: {\n annotations: {\n \"autoscaling.knative.dev/maxScale\": \"1\",\n \"run.googleapis.com/cpu-throttling\": \"false\",\n },\n },\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n resources: {\n limits: {\n cpu: \"4\",\n memory: \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n },\n }],\n nodeSelector: {\n \"run.googleapis.com/accelerator\": \"nvidia-l4\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"autoscaling.knative.dev/maxScale\": \"1\",\n \"run.googleapis.com/cpu-throttling\": \"false\",\n },\n },\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"4\",\n \"memory\": \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n },\n }],\n \"node_selector\": {\n \"run.googleapis.com/accelerator\": \"nvidia-l4\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/launch-stage\", \"BETA\" },\n },\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"autoscaling.knative.dev/maxScale\", \"1\" },\n { \"run.googleapis.com/cpu-throttling\", \"false\" },\n },\n },\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"gcr.io/cloudrun/hello\",\n Resources = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"4\" },\n { \"memory\", \"16Gi\" },\n { \"nvidia.com/gpu\", \"1\" },\n },\n },\n },\n },\n NodeSelector = \n {\n { \"run.googleapis.com/accelerator\", \"nvidia-l4\" },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\"run.googleapis.com/launch-stage\": pulumi.String(\"BETA\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\"run.googleapis.com/cpu-throttling\": pulumi.String(\"false\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t\tResources: \u0026cloudrun.ServiceTemplateSpecContainerResourcesArgs{\n\t\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"4\"),\n\t\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"16Gi\"),\n\t\t\t\t\t\t\t\t\t\"nvidia.com/gpu\": pulumi.String(\"1\"),\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\tNodeSelector: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/accelerator\": pulumi.String(\"nvidia-l4\"),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/launch-stage\", \"BETA\"))\n .build())\n .template(ServiceTemplateArgs.builder()\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1\"),\n Map.entry(\"run.googleapis.com/cpu-throttling\", \"false\")\n ))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .resources(ServiceTemplateSpecContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"4\"),\n Map.entry(\"memory\", \"16Gi\"),\n Map.entry(\"nvidia.com/gpu\", \"1\")\n ))\n .build())\n .build())\n .nodeSelector(Map.of(\"run.googleapis.com/accelerator\", \"nvidia-l4\"))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n annotations:\n run.googleapis.com/launch-stage: BETA\n template:\n metadata:\n annotations:\n autoscaling.knative.dev/maxScale: '1'\n run.googleapis.com/cpu-throttling: 'false'\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n resources:\n limits:\n cpu: '4'\n memory: 16Gi\n nvidia.com/gpu: '1'\n nodeSelector:\n run.googleapis.com/accelerator: nvidia-l4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-east1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n metadata: {\n annotations: {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connectionName,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerateRevisionName: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-east1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n \"metadata\": {\n \"annotations\": {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connection_name,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerate_revision_name=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-east1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"autoscaling.knative.dev/maxScale\", \"1000\" },\n { \"run.googleapis.com/cloudsql-instances\", instance.ConnectionName },\n { \"run.googleapis.com/client-name\", \"demo\" },\n },\n },\n },\n AutogenerateRevisionName = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1000\"),\n\t\t\t\t\t\t\"run.googleapis.com/cloudsql-instances\": instance.ConnectionName,\n\t\t\t\t\t\t\"run.googleapis.com/client-name\": pulumi.String(\"demo\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutogenerateRevisionName: 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.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-east1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1000\"),\n Map.entry(\"run.googleapis.com/cloudsql-instances\", instance.connectionName()),\n Map.entry(\"run.googleapis.com/client-name\", \"demo\")\n ))\n .build())\n .build())\n .autogenerateRevisionName(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n metadata:\n annotations:\n autoscaling.knative.dev/maxScale: '1000'\n run.googleapis.com/cloudsql-instances: ${instance.connectionName}\n run.googleapis.com/client-name: demo\n autogenerateRevisionName: true\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-east1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Noauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst noauth = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/run.invoker\",\n members: [\"allUsers\"],\n }],\n});\nconst noauthIamPolicy = new gcp.cloudrun.IamPolicy(\"noauth\", {\n location: _default.location,\n project: _default.project,\n service: _default.name,\n policyData: noauth.then(noauth =\u003e noauth.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\nnoauth = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/run.invoker\",\n \"members\": [\"allUsers\"],\n}])\nnoauth_iam_policy = gcp.cloudrun.IamPolicy(\"noauth\",\n location=default.location,\n project=default.project,\n service=default.name,\n policy_data=noauth.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n });\n\n var noauth = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n \"allUsers\",\n },\n },\n },\n });\n\n var noauthIamPolicy = new Gcp.CloudRun.IamPolicy(\"noauth\", new()\n {\n Location = @default.Location,\n Project = @default.Project,\n Service = @default.Name,\n PolicyData = noauth.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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\tnoauth, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/run.invoker\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"allUsers\",\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\t_, err = cloudrun.NewIamPolicy(ctx, \"noauth\", \u0026cloudrun.IamPolicyArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tProject: _default.Project,\n\t\t\tService: _default.Name,\n\t\t\tPolicyData: pulumi.String(noauth.PolicyData),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.cloudrun.IamPolicy;\nimport com.pulumi.gcp.cloudrun.IamPolicyArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .build());\n\n final var noauth = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/run.invoker\")\n .members(\"allUsers\")\n .build())\n .build());\n\n var noauthIamPolicy = new IamPolicy(\"noauthIamPolicy\", IamPolicyArgs.builder()\n .location(default_.location())\n .project(default_.project())\n .service(default_.name())\n .policyData(noauth.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n noauthIamPolicy:\n type: gcp:cloudrun:IamPolicy\n name: noauth\n properties:\n location: ${default.location}\n project: ${default.project}\n service: ${default.name}\n policyData: ${noauth.policyData}\nvariables:\n noauth:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/run.invoker\n members:\n - allUsers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\t\tTcpSocket: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLivenessProbe: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\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\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateSpecContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateSpecContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n annotations: {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template: {\n metadata: {\n annotations: {\n \"run.googleapis.com/container-dependencies\": JSON.stringify({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n spec: {\n containers: [\n {\n name: \"hello-1\",\n ports: [{\n containerPort: 8080,\n }],\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n ],\n volumes: [{\n name: \"shared-volume\",\n emptyDir: {\n medium: \"Memory\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"run.googleapis.com/container-dependencies\": json.dumps({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n \"spec\": {\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": [{\n \"container_port\": 8080,\n }],\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n ],\n \"volumes\": [{\n \"name\": \"shared-volume\",\n \"empty_dir\": {\n \"medium\": \"Memory\",\n \"size_limit\": \"128Mi\",\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/launch-stage\", \"BETA\" },\n },\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/container-dependencies\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"hello-1\"] = new[]\n {\n \"hello-2\",\n },\n }) },\n },\n },\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-1\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeArgs\n {\n Name = \"shared-volume\",\n EmptyDir = new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeEmptyDirArgs\n {\n Medium = \"Memory\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"hello-1\": []string{\n\t\t\t\t\"hello-2\",\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\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\"run.googleapis.com/launch-stage\": pulumi.String(\"BETA\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/container-dependencies\": pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\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\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tEnvs: cloudrun.ServiceTemplateSpecContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\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\tVolumes: cloudrun.ServiceTemplateSpecVolumeArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrun.ServiceTemplateSpecVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"Memory\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\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.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/launch-stage\", \"BETA\"))\n .build())\n .template(ServiceTemplateArgs.builder()\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/container-dependencies\", serializeJson(\n jsonObject(\n jsonProperty(\"hello-1\", jsonArray(\"hello-2\"))\n ))))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers( \n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build(),\n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateSpecContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build())\n .volumes(ServiceTemplateSpecVolumeArgs.builder()\n .name(\"shared-volume\")\n .emptyDir(ServiceTemplateSpecVolumeEmptyDirArgs.builder()\n .medium(\"Memory\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n annotations:\n run.googleapis.com/launch-stage: BETA\n template:\n metadata:\n annotations:\n run.googleapis.com/container-dependencies:\n fn::toJSON:\n hello-1:\n - hello-2\n spec:\n containers:\n - name: hello-1\n ports:\n - containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n volumes:\n - name: shared-volume\n emptyDir:\n medium: Memory\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/services/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default locations/{{location}}/namespaces/{{project}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{name}}\n```\n\n", "properties": { "autogenerateRevisionName": { "type": "boolean", @@ -146872,7 +146872,7 @@ } }, "gcp:cloudrunv2/service:Service": { - "description": "Service acts as a top-level container that manages a set of configurations and revision templates which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tResources: \u0026cloudrunv2.ServiceTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .resources(ServiceTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n scaling: {\n maxInstanceCount: 2,\n },\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"SECRET_ENV_VAR\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n traffics: [{\n type: \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n percent: 100,\n }],\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"scaling\": {\n \"max_instance_count\": 2,\n },\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloud_sql_instance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"SECRET_ENV_VAR\",\n \"value_source\": {\n \"secret_key_ref\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volume_mounts\": [{\n \"name\": \"cloudsql\",\n \"mount_path\": \"/cloudsql\",\n }],\n }],\n },\n traffics=[{\n \"type\": \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n \"percent\": 100,\n }],\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 2,\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"SECRET_ENV_VAR\",\n ValueSource = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTrafficArgs\n {\n Type = \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n Percent = 100,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.ServiceTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\tinstance.ConnectionName,\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\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"SECRET_ENV_VAR\"),\n\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t},\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\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\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\tTraffics: cloudrunv2.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrunv2.ServiceTrafficArgs{\n\t\t\t\t\tType: pulumi.String(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\"),\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(2)\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(ServiceTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs( \n ServiceTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n ServiceTemplateContainerEnvArgs.builder()\n .name(\"SECRET_ENV_VAR\")\n .valueSource(ServiceTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .type(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\")\n .percent(100)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n scaling:\n maxInstanceCount: 2\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: FOO\n value: bar\n - name: SECRET_ENV_VAR\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n traffics:\n - type: TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\n percent: 100\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"GA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"GA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"GA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n launchStage: GA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n launchStage: \"BETA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"4\",\n memory: \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n startupCpuBoost: true,\n },\n }],\n nodeSelector: {\n accelerator: \"nvidia-l4\",\n },\n scaling: {\n maxInstanceCount: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n launch_stage=\"BETA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"4\",\n \"memory\": \"16Gi\",\n \"nvidia_com_gpu\": \"1\",\n },\n \"startup_cpu_boost\": True,\n },\n }],\n \"node_selector\": {\n \"accelerator\": \"nvidia-l4\",\n },\n \"scaling\": {\n \"max_instance_count\": 1,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"4\" },\n { \"memory\", \"16Gi\" },\n { \"nvidia.com/gpu\", \"1\" },\n },\n StartupCpuBoost = true,\n },\n },\n },\n NodeSelector = new Gcp.CloudRunV2.Inputs.ServiceTemplateNodeSelectorArgs\n {\n Accelerator = \"nvidia-l4\",\n },\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tResources: \u0026cloudrunv2.ServiceTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"4\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"16Gi\"),\n\t\t\t\t\t\t\t\t\"nvidia.com/gpu\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupCpuBoost: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNodeSelector: \u0026cloudrunv2.ServiceTemplateNodeSelectorArgs{\n\t\t\t\t\tAccelerator: pulumi.String(\"nvidia-l4\"),\n\t\t\t\t},\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: pulumi.Int(1),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateNodeSelectorArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .resources(ServiceTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"4\"),\n Map.entry(\"memory\", \"16Gi\"),\n Map.entry(\"nvidia.com/gpu\", \"1\")\n ))\n .startupCpuBoost(true)\n .build())\n .build())\n .nodeSelector(ServiceTemplateNodeSelectorArgs.builder()\n .accelerator(\"nvidia-l4\")\n .build())\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n launchStage: BETA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '4'\n memory: 16Gi\n nvidia.com/gpu: '1'\n startupCpuBoost: true\n nodeSelector:\n accelerator: nvidia-l4\n scaling:\n maxInstanceCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\tTcpSocket: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLivenessProbe: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"default_mode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"a-volume\",\n \"mount_path\": \"/secrets\",\n }],\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\tSecret: \u0026cloudrunv2.ServiceTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\tItems: cloudrunv2.ServiceTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\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\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(ServiceTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(ServiceTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .build())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"BETA\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [\n {\n name: \"hello-1\",\n ports: {\n containerPort: 8080,\n },\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n dependsOns: [\"hello-2\"],\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n },\n ],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"256Mi\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"BETA\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": {\n \"container_port\": 8080,\n },\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"depends_ons\": [\"hello-2\"],\n \"volume_mounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mount_path\": \"/mnt\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n },\n ],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"empty_dir\": {\n \"medium\": \"MEMORY\",\n \"size_limit\": \"256Mi\",\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"BETA\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-1\",\n Ports = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerPortsArgs\n {\n ContainerPort = 8080,\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n DependsOns = new[]\n {\n \"hello-2\",\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"256Mi\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\tPorts: \u0026cloudrunv2.ServiceTemplateContainerPortsArgs{\n\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tDependsOns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hello-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\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\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\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\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.ServiceTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"256Mi\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"BETA\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers( \n ServiceTemplateContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateContainerPortsArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .dependsOns(\"hello-2\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build(),\n ServiceTemplateContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(ServiceTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"256Mi\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n launchStage: BETA\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - name: hello-1\n ports:\n containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n dependsOns:\n - hello-2\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 256Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBucket = new gcp.storage.Bucket(\"default\", {\n name: \"cloudrun-service\",\n location: \"US\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"bucket\",\n mountPath: \"/var/www\",\n }],\n }],\n volumes: [{\n name: \"bucket\",\n gcs: {\n bucket: defaultBucket.name,\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_bucket = gcp.storage.Bucket(\"default\",\n name=\"cloudrun-service\",\n location=\"US\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"bucket\",\n \"mount_path\": \"/var/www\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"bucket\",\n \"gcs\": {\n \"bucket\": default_bucket.name,\n \"read_only\": False,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultBucket = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"US\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"bucket\",\n MountPath = \"/var/www\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"bucket\",\n Gcs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeGcsArgs\n {\n Bucket = defaultBucket.Name,\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultBucket, err := storage.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/var/www\"),\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\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tGcs: \u0026cloudrunv2.ServiceTemplateVolumeGcsArgs{\n\t\t\t\t\t\t\tBucket: defaultBucket.Name,\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 defaultBucket = new Bucket(\"defaultBucket\", BucketArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"US\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"bucket\")\n .mountPath(\"/var/www\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"bucket\")\n .gcs(ServiceTemplateVolumeGcsArgs.builder()\n .bucket(defaultBucket.name())\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: bucket\n mountPath: /var/www\n volumes:\n - name: bucket\n gcs:\n bucket: ${defaultBucket.name}\n readOnly: false\n defaultBucket:\n type: gcp:storage:Bucket\n name: default\n properties:\n name: cloudrun-service\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Nfs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultInstance = new gcp.filestore.Instance(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n volumeMounts: [{\n name: \"nfs\",\n mountPath: \"/mnt/nfs/filestore\",\n }],\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n }],\n },\n volumes: [{\n name: \"nfs\",\n nfs: {\n server: defaultInstance.networks.apply(networks =\u003e networks[0].ipAddresses?.[0]),\n path: \"/share1\",\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_instance = gcp.filestore.Instance(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n \"volume_mounts\": [{\n \"name\": \"nfs\",\n \"mount_path\": \"/mnt/nfs/filestore\",\n }],\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n }],\n },\n \"volumes\": [{\n \"name\": \"nfs\",\n \"nfs\": {\n \"server\": default_instance.networks[0].ip_addresses[0],\n \"path\": \"/share1\",\n \"read_only\": False,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultInstance = new Gcp.Filestore.Instance(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"nfs\",\n MountPath = \"/mnt/nfs/filestore\",\n },\n },\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"nfs\",\n Nfs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeNfsArgs\n {\n Server = defaultInstance.Networks.Apply(networks =\u003e networks[0].IpAddresses[0]),\n Path = \"/share1\",\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/filestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultInstance, err := filestore.NewInstance(ctx, \"default\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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 = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello:latest\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/nfs/filestore\"),\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\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\tNfs: \u0026cloudrunv2.ServiceTemplateVolumeNfsArgs{\n\t\t\t\t\t\t\tServer: defaultInstance.Networks.ApplyT(func(networks []filestore.InstanceNetwork) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026networks[0].IpAddresses[0], nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/share1\"),\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\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.gcp.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello:latest\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"nfs\")\n .mountPath(\"/mnt/nfs/filestore\")\n .build())\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"nfs\")\n .nfs(ServiceTemplateVolumeNfsArgs.builder()\n .server(defaultInstance.networks().applyValue(networks -\u003e networks[0].ipAddresses()[0]))\n .path(\"/share1\")\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello:latest\n volumeMounts:\n - name: nfs\n mountPath: /mnt/nfs/filestore\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n volumes:\n - name: nfs\n nfs:\n server: ${defaultInstance.networks[0].ipAddresses[0]}\n path: /share1\n readOnly: false\n defaultInstance:\n type: gcp:filestore:Instance\n name: default\n properties:\n name: cloudrun-service\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst mesh = new gcp.networkservices.Mesh(\"mesh\", {name: \"network-services-mesh\"});\nconst waitForMesh = new time.index.Sleep(\"wait_for_mesh\", {createDuration: \"1m\"}, {\n dependsOn: [mesh],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n deletionProtection: false,\n location: \"us-central1\",\n launchStage: \"BETA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n serviceMesh: {\n mesh: mesh.id,\n },\n },\n}, {\n dependsOn: [waitForMesh],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nmesh = gcp.networkservices.Mesh(\"mesh\", name=\"network-services-mesh\")\nwait_for_mesh = time.index.Sleep(\"wait_for_mesh\", create_duration=1m,\nopts = pulumi.ResourceOptions(depends_on=[mesh]))\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n deletion_protection=False,\n location=\"us-central1\",\n launch_stage=\"BETA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"service_mesh\": {\n \"mesh\": mesh.id,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[wait_for_mesh]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mesh = new Gcp.NetworkServices.Mesh(\"mesh\", new()\n {\n Name = \"network-services-mesh\",\n });\n\n var waitForMesh = new Time.Index.Sleep(\"wait_for_mesh\", new()\n {\n CreateDuration = \"1m\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mesh,\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n DeletionProtection = false,\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n ServiceMesh = new Gcp.CloudRunV2.Inputs.ServiceTemplateServiceMeshArgs\n {\n Mesh = mesh.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitForMesh,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmesh, err := networkservices.NewMesh(ctx, \"mesh\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"network-services-mesh\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twaitForMesh, err := time.NewSleep(ctx, \"wait_for_mesh\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"1m\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmesh,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceMesh: \u0026cloudrunv2.ServiceTemplateServiceMeshArgs{\n\t\t\t\t\tMesh: mesh.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitForMesh,\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.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateServiceMeshArgs;\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 mesh = new Mesh(\"mesh\", MeshArgs.builder()\n .name(\"network-services-mesh\")\n .build());\n\n var waitForMesh = new Sleep(\"waitForMesh\", SleepArgs.builder()\n .createDuration(\"1m\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(mesh)\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .deletionProtection(false)\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .serviceMesh(ServiceTemplateServiceMeshArgs.builder()\n .mesh(mesh.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitForMesh)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n deletionProtection: false\n location: us-central1\n launchStage: BETA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n serviceMesh:\n mesh: ${mesh.id}\n options:\n dependson:\n - ${waitForMesh}\n waitForMesh:\n type: time:sleep\n name: wait_for_mesh\n properties:\n createDuration: 1m\n options:\n dependson:\n - ${mesh}\n mesh:\n type: gcp:networkservices:Mesh\n properties:\n name: network-services-mesh\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/services/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default projects/{{project}}/locations/{{location}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{location}}/{{name}}\n```\n\n", + "description": "Service acts as a top-level container that manages a set of configurations and revision templates which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tResources: \u0026cloudrunv2.ServiceTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .resources(ServiceTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n scaling: {\n maxInstanceCount: 2,\n },\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"SECRET_ENV_VAR\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n traffics: [{\n type: \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n percent: 100,\n }],\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"scaling\": {\n \"max_instance_count\": 2,\n },\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloud_sql_instance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"SECRET_ENV_VAR\",\n \"value_source\": {\n \"secret_key_ref\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volume_mounts\": [{\n \"name\": \"cloudsql\",\n \"mount_path\": \"/cloudsql\",\n }],\n }],\n },\n traffics=[{\n \"type\": \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n \"percent\": 100,\n }],\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 2,\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"SECRET_ENV_VAR\",\n ValueSource = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTrafficArgs\n {\n Type = \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n Percent = 100,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.ServiceTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\tinstance.ConnectionName,\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\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"SECRET_ENV_VAR\"),\n\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t},\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\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\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\tTraffics: cloudrunv2.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrunv2.ServiceTrafficArgs{\n\t\t\t\t\tType: pulumi.String(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\"),\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(2)\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(ServiceTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs( \n ServiceTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n ServiceTemplateContainerEnvArgs.builder()\n .name(\"SECRET_ENV_VAR\")\n .valueSource(ServiceTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .type(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\")\n .percent(100)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n scaling:\n maxInstanceCount: 2\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: FOO\n value: bar\n - name: SECRET_ENV_VAR\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n traffics:\n - type: TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\n percent: 100\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"GA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"GA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"GA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n launchStage: GA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n launchStage: \"BETA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"4\",\n memory: \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n startupCpuBoost: true,\n },\n }],\n nodeSelector: {\n accelerator: \"nvidia-l4\",\n },\n scaling: {\n maxInstanceCount: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n launch_stage=\"BETA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"4\",\n \"memory\": \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n \"startup_cpu_boost\": True,\n },\n }],\n \"node_selector\": {\n \"accelerator\": \"nvidia-l4\",\n },\n \"scaling\": {\n \"max_instance_count\": 1,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"4\" },\n { \"memory\", \"16Gi\" },\n { \"nvidia.com/gpu\", \"1\" },\n },\n StartupCpuBoost = true,\n },\n },\n },\n NodeSelector = new Gcp.CloudRunV2.Inputs.ServiceTemplateNodeSelectorArgs\n {\n Accelerator = \"nvidia-l4\",\n },\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tResources: \u0026cloudrunv2.ServiceTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"4\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"16Gi\"),\n\t\t\t\t\t\t\t\t\"nvidia.com/gpu\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupCpuBoost: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNodeSelector: \u0026cloudrunv2.ServiceTemplateNodeSelectorArgs{\n\t\t\t\t\tAccelerator: pulumi.String(\"nvidia-l4\"),\n\t\t\t\t},\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: pulumi.Int(1),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateNodeSelectorArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .resources(ServiceTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"4\"),\n Map.entry(\"memory\", \"16Gi\"),\n Map.entry(\"nvidia.com/gpu\", \"1\")\n ))\n .startupCpuBoost(true)\n .build())\n .build())\n .nodeSelector(ServiceTemplateNodeSelectorArgs.builder()\n .accelerator(\"nvidia-l4\")\n .build())\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n launchStage: BETA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '4'\n memory: 16Gi\n nvidia.com/gpu: '1'\n startupCpuBoost: true\n nodeSelector:\n accelerator: nvidia-l4\n scaling:\n maxInstanceCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\tTcpSocket: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLivenessProbe: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"default_mode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"a-volume\",\n \"mount_path\": \"/secrets\",\n }],\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\tSecret: \u0026cloudrunv2.ServiceTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\tItems: cloudrunv2.ServiceTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\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\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(ServiceTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(ServiceTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .build())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"BETA\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [\n {\n name: \"hello-1\",\n ports: {\n containerPort: 8080,\n },\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n dependsOns: [\"hello-2\"],\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n },\n ],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"256Mi\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"BETA\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": {\n \"container_port\": 8080,\n },\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"depends_ons\": [\"hello-2\"],\n \"volume_mounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mount_path\": \"/mnt\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n },\n ],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"empty_dir\": {\n \"medium\": \"MEMORY\",\n \"size_limit\": \"256Mi\",\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"BETA\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-1\",\n Ports = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerPortsArgs\n {\n ContainerPort = 8080,\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n DependsOns = new[]\n {\n \"hello-2\",\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"256Mi\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\tPorts: \u0026cloudrunv2.ServiceTemplateContainerPortsArgs{\n\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tDependsOns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hello-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\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\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\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\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.ServiceTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"256Mi\"),\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.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"BETA\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers( \n ServiceTemplateContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateContainerPortsArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .dependsOns(\"hello-2\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build(),\n ServiceTemplateContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(ServiceTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"256Mi\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n launchStage: BETA\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - name: hello-1\n ports:\n containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n dependsOns:\n - hello-2\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 256Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBucket = new gcp.storage.Bucket(\"default\", {\n name: \"cloudrun-service\",\n location: \"US\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"bucket\",\n mountPath: \"/var/www\",\n }],\n }],\n volumes: [{\n name: \"bucket\",\n gcs: {\n bucket: defaultBucket.name,\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_bucket = gcp.storage.Bucket(\"default\",\n name=\"cloudrun-service\",\n location=\"US\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"bucket\",\n \"mount_path\": \"/var/www\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"bucket\",\n \"gcs\": {\n \"bucket\": default_bucket.name,\n \"read_only\": False,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultBucket = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"US\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"bucket\",\n MountPath = \"/var/www\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"bucket\",\n Gcs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeGcsArgs\n {\n Bucket = defaultBucket.Name,\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultBucket, err := storage.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/var/www\"),\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\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tGcs: \u0026cloudrunv2.ServiceTemplateVolumeGcsArgs{\n\t\t\t\t\t\t\tBucket: defaultBucket.Name,\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 defaultBucket = new Bucket(\"defaultBucket\", BucketArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"US\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"bucket\")\n .mountPath(\"/var/www\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"bucket\")\n .gcs(ServiceTemplateVolumeGcsArgs.builder()\n .bucket(defaultBucket.name())\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: bucket\n mountPath: /var/www\n volumes:\n - name: bucket\n gcs:\n bucket: ${defaultBucket.name}\n readOnly: false\n defaultBucket:\n type: gcp:storage:Bucket\n name: default\n properties:\n name: cloudrun-service\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Nfs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultInstance = new gcp.filestore.Instance(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n volumeMounts: [{\n name: \"nfs\",\n mountPath: \"/mnt/nfs/filestore\",\n }],\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n }],\n },\n volumes: [{\n name: \"nfs\",\n nfs: {\n server: defaultInstance.networks.apply(networks =\u003e networks[0].ipAddresses?.[0]),\n path: \"/share1\",\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_instance = gcp.filestore.Instance(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n \"volume_mounts\": [{\n \"name\": \"nfs\",\n \"mount_path\": \"/mnt/nfs/filestore\",\n }],\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n }],\n },\n \"volumes\": [{\n \"name\": \"nfs\",\n \"nfs\": {\n \"server\": default_instance.networks[0].ip_addresses[0],\n \"path\": \"/share1\",\n \"read_only\": False,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultInstance = new Gcp.Filestore.Instance(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"nfs\",\n MountPath = \"/mnt/nfs/filestore\",\n },\n },\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"nfs\",\n Nfs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeNfsArgs\n {\n Server = defaultInstance.Networks.Apply(networks =\u003e networks[0].IpAddresses[0]),\n Path = \"/share1\",\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/filestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultInstance, err := filestore.NewInstance(ctx, \"default\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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 = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello:latest\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/nfs/filestore\"),\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\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\tNfs: \u0026cloudrunv2.ServiceTemplateVolumeNfsArgs{\n\t\t\t\t\t\t\tServer: defaultInstance.Networks.ApplyT(func(networks []filestore.InstanceNetwork) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026networks[0].IpAddresses[0], nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/share1\"),\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\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.gcp.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello:latest\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"nfs\")\n .mountPath(\"/mnt/nfs/filestore\")\n .build())\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"nfs\")\n .nfs(ServiceTemplateVolumeNfsArgs.builder()\n .server(defaultInstance.networks().applyValue(networks -\u003e networks[0].ipAddresses()[0]))\n .path(\"/share1\")\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello:latest\n volumeMounts:\n - name: nfs\n mountPath: /mnt/nfs/filestore\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n volumes:\n - name: nfs\n nfs:\n server: ${defaultInstance.networks[0].ipAddresses[0]}\n path: /share1\n readOnly: false\n defaultInstance:\n type: gcp:filestore:Instance\n name: default\n properties:\n name: cloudrun-service\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst mesh = new gcp.networkservices.Mesh(\"mesh\", {name: \"network-services-mesh\"});\nconst waitForMesh = new time.index.Sleep(\"wait_for_mesh\", {createDuration: \"1m\"}, {\n dependsOn: [mesh],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n deletionProtection: false,\n location: \"us-central1\",\n launchStage: \"BETA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n serviceMesh: {\n mesh: mesh.id,\n },\n },\n}, {\n dependsOn: [waitForMesh],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nmesh = gcp.networkservices.Mesh(\"mesh\", name=\"network-services-mesh\")\nwait_for_mesh = time.index.Sleep(\"wait_for_mesh\", create_duration=1m,\nopts = pulumi.ResourceOptions(depends_on=[mesh]))\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n deletion_protection=False,\n location=\"us-central1\",\n launch_stage=\"BETA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"service_mesh\": {\n \"mesh\": mesh.id,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[wait_for_mesh]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mesh = new Gcp.NetworkServices.Mesh(\"mesh\", new()\n {\n Name = \"network-services-mesh\",\n });\n\n var waitForMesh = new Time.Index.Sleep(\"wait_for_mesh\", new()\n {\n CreateDuration = \"1m\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mesh,\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n DeletionProtection = false,\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n ServiceMesh = new Gcp.CloudRunV2.Inputs.ServiceTemplateServiceMeshArgs\n {\n Mesh = mesh.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitForMesh,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmesh, err := networkservices.NewMesh(ctx, \"mesh\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"network-services-mesh\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twaitForMesh, err := time.NewSleep(ctx, \"wait_for_mesh\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"1m\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmesh,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceMesh: \u0026cloudrunv2.ServiceTemplateServiceMeshArgs{\n\t\t\t\t\tMesh: mesh.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitForMesh,\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.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateServiceMeshArgs;\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 mesh = new Mesh(\"mesh\", MeshArgs.builder()\n .name(\"network-services-mesh\")\n .build());\n\n var waitForMesh = new Sleep(\"waitForMesh\", SleepArgs.builder()\n .createDuration(\"1m\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(mesh)\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .deletionProtection(false)\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .serviceMesh(ServiceTemplateServiceMeshArgs.builder()\n .mesh(mesh.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitForMesh)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n deletionProtection: false\n location: us-central1\n launchStage: BETA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n serviceMesh:\n mesh: ${mesh.id}\n options:\n dependson:\n - ${waitForMesh}\n waitForMesh:\n type: time:sleep\n name: wait_for_mesh\n properties:\n createDuration: 1m\n options:\n dependson:\n - ${mesh}\n mesh:\n type: gcp:networkservices:Mesh\n properties:\n name: network-services-mesh\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/services/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default projects/{{project}}/locations/{{location}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -147676,7 +147676,7 @@ } }, "gcp:cloudscheduler/job:Job": { - "description": "A scheduled job that can publish a PubSub message or an HTTP request\nevery X interval of time, using a crontab format string.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/scheduler/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/scheduler/)\n\n## Example Usage\n\n### Scheduler Job Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"job-topic\"});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test job\",\n schedule: \"*/2 * * * *\",\n pubsubTarget: {\n topicName: topic.id,\n data: std.base64encode({\n input: \"test\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"job-topic\")\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test job\",\n schedule=\"*/2 * * * *\",\n pubsub_target={\n \"topic_name\": topic.id,\n \"data\": std.base64encode(input=\"test\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"job-topic\",\n });\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test job\",\n Schedule = \"*/2 * * * *\",\n PubsubTarget = new Gcp.CloudScheduler.Inputs.JobPubsubTargetArgs\n {\n TopicName = topic.Id,\n Data = Std.Base64encode.Invoke(new()\n {\n Input = \"test\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"job-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test job\"),\n\t\t\tSchedule: pulumi.String(\"*/2 * * * *\"),\n\t\t\tPubsubTarget: \u0026cloudscheduler.JobPubsubTargetArgs{\n\t\t\t\tTopicName: topic.ID(),\n\t\t\t\tData: pulumi.String(invokeBase64encode.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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobPubsubTargetArgs;\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 topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"job-topic\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test job\")\n .schedule(\"*/2 * * * *\")\n .pubsubTarget(JobPubsubTargetArgs.builder()\n .topicName(topic.id())\n .data(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"test\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: job-topic\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test job\n schedule: '*/2 * * * *'\n pubsubTarget:\n topicName: ${topic.id}\n data:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: test\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"content__type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\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.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Paused\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n paused: true,\n name: \"test-job\",\n description: \"test http job with updated fields\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/ping\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n paused=True,\n name=\"test-job\",\n description=\"test http job with updated fields\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/ping\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"content__type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Paused = true,\n Name = \"test-job\",\n Description = \"test http job with updated fields\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/ping\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tPaused: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job with updated fields\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\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.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .paused(true)\n .name(\"test-job\")\n .description(\"test http job with updated fields\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/ping\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n paused: true\n name: test-job\n description: test http job with updated fields\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/ping\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job App Engine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n schedule: \"*/4 * * * *\",\n description: \"test app engine job\",\n timeZone: \"Europe/London\",\n attemptDeadline: \"320s\",\n retryConfig: {\n minBackoffDuration: \"1s\",\n maxRetryDuration: \"10s\",\n maxDoublings: 2,\n retryCount: 3,\n },\n appEngineHttpTarget: {\n httpMethod: \"POST\",\n appEngineRouting: {\n service: \"web\",\n version: \"prod\",\n instance: \"my-instance-001\",\n },\n relativeUri: \"/ping\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n schedule=\"*/4 * * * *\",\n description=\"test app engine job\",\n time_zone=\"Europe/London\",\n attempt_deadline=\"320s\",\n retry_config={\n \"min_backoff_duration\": \"1s\",\n \"max_retry_duration\": \"10s\",\n \"max_doublings\": 2,\n \"retry_count\": 3,\n },\n app_engine_http_target={\n \"http_method\": \"POST\",\n \"app_engine_routing\": {\n \"service\": \"web\",\n \"version\": \"prod\",\n \"instance\": \"my-instance-001\",\n },\n \"relative_uri\": \"/ping\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Schedule = \"*/4 * * * *\",\n Description = \"test app engine job\",\n TimeZone = \"Europe/London\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n MinBackoffDuration = \"1s\",\n MaxRetryDuration = \"10s\",\n MaxDoublings = 2,\n RetryCount = 3,\n },\n AppEngineHttpTarget = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetArgs\n {\n HttpMethod = \"POST\",\n AppEngineRouting = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetAppEngineRoutingArgs\n {\n Service = \"web\",\n Version = \"prod\",\n Instance = \"my-instance-001\",\n },\n RelativeUri = \"/ping\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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 := cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tSchedule: pulumi.String(\"*/4 * * * *\"),\n\t\t\tDescription: pulumi.String(\"test app engine job\"),\n\t\t\tTimeZone: pulumi.String(\"Europe/London\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tMinBackoffDuration: pulumi.String(\"1s\"),\n\t\t\t\tMaxRetryDuration: pulumi.String(\"10s\"),\n\t\t\t\tMaxDoublings: pulumi.Int(2),\n\t\t\t\tRetryCount: pulumi.Int(3),\n\t\t\t},\n\t\t\tAppEngineHttpTarget: \u0026cloudscheduler.JobAppEngineHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tAppEngineRouting: \u0026cloudscheduler.JobAppEngineHttpTargetAppEngineRoutingArgs{\n\t\t\t\t\tService: pulumi.String(\"web\"),\n\t\t\t\t\tVersion: pulumi.String(\"prod\"),\n\t\t\t\t\tInstance: pulumi.String(\"my-instance-001\"),\n\t\t\t\t},\n\t\t\t\tRelativeUri: pulumi.String(\"/ping\"),\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.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetAppEngineRoutingArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .schedule(\"*/4 * * * *\")\n .description(\"test app engine job\")\n .timeZone(\"Europe/London\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .minBackoffDuration(\"1s\")\n .maxRetryDuration(\"10s\")\n .maxDoublings(2)\n .retryCount(3)\n .build())\n .appEngineHttpTarget(JobAppEngineHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .appEngineRouting(JobAppEngineHttpTargetAppEngineRoutingArgs.builder()\n .service(\"web\")\n .version(\"prod\")\n .instance(\"my-instance-001\")\n .build())\n .relativeUri(\"/ping\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n schedule: '*/4 * * * *'\n description: test app engine job\n timeZone: Europe/London\n attemptDeadline: 320s\n retryConfig:\n minBackoffDuration: 1s\n maxRetryDuration: 10s\n maxDoublings: 2\n retryCount: 3\n appEngineHttpTarget:\n httpMethod: POST\n appEngineRouting:\n service: web\n version: prod\n instance: my-instance-001\n relativeUri: /ping\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n oauthToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n \"oauth_token\": {\n \"service_account_email\": default.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n OauthToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOauthTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\"),\n\t\t\t\tOauthToken: \u0026cloudscheduler.JobHttpTargetOauthTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.Email),\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.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOauthTokenArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\")\n .oauthToken(JobHttpTargetOauthTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\n oauthToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oidc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://example.com/ping\",\n oidcToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://example.com/ping\",\n \"oidc_token\": {\n \"service_account_email\": default.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://example.com/ping\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.Email),\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.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://example.com/ping\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://example.com/ping\n oidcToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/jobs/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default projects/{{project}}/locations/{{region}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{name}}\n```\n\n", + "description": "A scheduled job that can publish a PubSub message or an HTTP request\nevery X interval of time, using a crontab format string.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/scheduler/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/scheduler/)\n\n## Example Usage\n\n### Scheduler Job Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"job-topic\"});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test job\",\n schedule: \"*/2 * * * *\",\n pubsubTarget: {\n topicName: topic.id,\n data: std.base64encode({\n input: \"test\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"job-topic\")\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test job\",\n schedule=\"*/2 * * * *\",\n pubsub_target={\n \"topic_name\": topic.id,\n \"data\": std.base64encode(input=\"test\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"job-topic\",\n });\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test job\",\n Schedule = \"*/2 * * * *\",\n PubsubTarget = new Gcp.CloudScheduler.Inputs.JobPubsubTargetArgs\n {\n TopicName = topic.Id,\n Data = Std.Base64encode.Invoke(new()\n {\n Input = \"test\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"job-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test job\"),\n\t\t\tSchedule: pulumi.String(\"*/2 * * * *\"),\n\t\t\tPubsubTarget: \u0026cloudscheduler.JobPubsubTargetArgs{\n\t\t\t\tTopicName: topic.ID(),\n\t\t\t\tData: pulumi.String(invokeBase64encode.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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobPubsubTargetArgs;\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 topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"job-topic\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test job\")\n .schedule(\"*/2 * * * *\")\n .pubsubTarget(JobPubsubTargetArgs.builder()\n .topicName(topic.id())\n .data(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"test\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: job-topic\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test job\n schedule: '*/2 * * * *'\n pubsubTarget:\n topicName: ${topic.id}\n data:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: test\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"Content-Type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\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.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Paused\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n paused: true,\n name: \"test-job\",\n description: \"test http job with updated fields\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/ping\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n paused=True,\n name=\"test-job\",\n description=\"test http job with updated fields\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/ping\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"Content-Type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Paused = true,\n Name = \"test-job\",\n Description = \"test http job with updated fields\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/ping\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tPaused: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job with updated fields\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\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.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .paused(true)\n .name(\"test-job\")\n .description(\"test http job with updated fields\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/ping\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n paused: true\n name: test-job\n description: test http job with updated fields\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/ping\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job App Engine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n schedule: \"*/4 * * * *\",\n description: \"test app engine job\",\n timeZone: \"Europe/London\",\n attemptDeadline: \"320s\",\n retryConfig: {\n minBackoffDuration: \"1s\",\n maxRetryDuration: \"10s\",\n maxDoublings: 2,\n retryCount: 3,\n },\n appEngineHttpTarget: {\n httpMethod: \"POST\",\n appEngineRouting: {\n service: \"web\",\n version: \"prod\",\n instance: \"my-instance-001\",\n },\n relativeUri: \"/ping\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n schedule=\"*/4 * * * *\",\n description=\"test app engine job\",\n time_zone=\"Europe/London\",\n attempt_deadline=\"320s\",\n retry_config={\n \"min_backoff_duration\": \"1s\",\n \"max_retry_duration\": \"10s\",\n \"max_doublings\": 2,\n \"retry_count\": 3,\n },\n app_engine_http_target={\n \"http_method\": \"POST\",\n \"app_engine_routing\": {\n \"service\": \"web\",\n \"version\": \"prod\",\n \"instance\": \"my-instance-001\",\n },\n \"relative_uri\": \"/ping\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Schedule = \"*/4 * * * *\",\n Description = \"test app engine job\",\n TimeZone = \"Europe/London\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n MinBackoffDuration = \"1s\",\n MaxRetryDuration = \"10s\",\n MaxDoublings = 2,\n RetryCount = 3,\n },\n AppEngineHttpTarget = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetArgs\n {\n HttpMethod = \"POST\",\n AppEngineRouting = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetAppEngineRoutingArgs\n {\n Service = \"web\",\n Version = \"prod\",\n Instance = \"my-instance-001\",\n },\n RelativeUri = \"/ping\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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 := cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tSchedule: pulumi.String(\"*/4 * * * *\"),\n\t\t\tDescription: pulumi.String(\"test app engine job\"),\n\t\t\tTimeZone: pulumi.String(\"Europe/London\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tMinBackoffDuration: pulumi.String(\"1s\"),\n\t\t\t\tMaxRetryDuration: pulumi.String(\"10s\"),\n\t\t\t\tMaxDoublings: pulumi.Int(2),\n\t\t\t\tRetryCount: pulumi.Int(3),\n\t\t\t},\n\t\t\tAppEngineHttpTarget: \u0026cloudscheduler.JobAppEngineHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tAppEngineRouting: \u0026cloudscheduler.JobAppEngineHttpTargetAppEngineRoutingArgs{\n\t\t\t\t\tService: pulumi.String(\"web\"),\n\t\t\t\t\tVersion: pulumi.String(\"prod\"),\n\t\t\t\t\tInstance: pulumi.String(\"my-instance-001\"),\n\t\t\t\t},\n\t\t\t\tRelativeUri: pulumi.String(\"/ping\"),\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.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetAppEngineRoutingArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .schedule(\"*/4 * * * *\")\n .description(\"test app engine job\")\n .timeZone(\"Europe/London\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .minBackoffDuration(\"1s\")\n .maxRetryDuration(\"10s\")\n .maxDoublings(2)\n .retryCount(3)\n .build())\n .appEngineHttpTarget(JobAppEngineHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .appEngineRouting(JobAppEngineHttpTargetAppEngineRoutingArgs.builder()\n .service(\"web\")\n .version(\"prod\")\n .instance(\"my-instance-001\")\n .build())\n .relativeUri(\"/ping\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n schedule: '*/4 * * * *'\n description: test app engine job\n timeZone: Europe/London\n attemptDeadline: 320s\n retryConfig:\n minBackoffDuration: 1s\n maxRetryDuration: 10s\n maxDoublings: 2\n retryCount: 3\n appEngineHttpTarget:\n httpMethod: POST\n appEngineRouting:\n service: web\n version: prod\n instance: my-instance-001\n relativeUri: /ping\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n oauthToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n \"oauth_token\": {\n \"service_account_email\": default.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n OauthToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOauthTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\"),\n\t\t\t\tOauthToken: \u0026cloudscheduler.JobHttpTargetOauthTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.Email),\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.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOauthTokenArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\")\n .oauthToken(JobHttpTargetOauthTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\n oauthToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oidc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://example.com/ping\",\n oidcToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://example.com/ping\",\n \"oidc_token\": {\n \"service_account_email\": default.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://example.com/ping\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.Email),\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.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://example.com/ping\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://example.com/ping\n oidcToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/jobs/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default projects/{{project}}/locations/{{region}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{name}}\n```\n\n", "properties": { "appEngineHttpTarget": { "$ref": "#/types/gcp:cloudscheduler/JobAppEngineHttpTarget:JobAppEngineHttpTarget", @@ -175839,7 +175839,7 @@ } }, "gcp:container/awsNodePool:AwsNodePool": { - "description": "An Anthos node pool running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_aws_cluster\nA basic example of a containeraws node pool\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"PREFER_NO_SCHEDULE\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n management: {\n autoRepair: true,\n },\n kubeletConfig: {\n cpuManagerPolicy: \"none\",\n cpuCfsQuota: true,\n cpuCfsQuotaPeriod: \"100ms\",\n podPidsLimit: 1024,\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag_one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"PREFER_NO_SCHEDULE\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n management={\n \"auto_repair\": True,\n },\n kubelet_config={\n \"cpu_manager_policy\": \"none\",\n \"cpu_cfs_quota\": True,\n \"cpu_cfs_quota_period\": \"100ms\",\n \"pod_pids_limit\": 1024,\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"PREFER_NO_SCHEDULE\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Management = new Gcp.Container.Inputs.AwsNodePoolManagementArgs\n {\n AutoRepair = true,\n },\n KubeletConfig = new Gcp.Container.Inputs.AwsNodePoolKubeletConfigArgs\n {\n CpuManagerPolicy = \"none\",\n CpuCfsQuota = true,\n CpuCfsQuotaPeriod = \"100ms\",\n PodPidsLimit = 1024,\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"PREFER_NO_SCHEDULE\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tManagement: \u0026container.AwsNodePoolManagementArgs{\n\t\t\t\tAutoRepair: pulumi.Bool(true),\n\t\t\t},\n\t\t\tKubeletConfig: \u0026container.AwsNodePoolKubeletConfigArgs{\n\t\t\t\tCpuManagerPolicy: pulumi.String(\"none\"),\n\t\t\t\tCpuCfsQuota: pulumi.Bool(true),\n\t\t\t\tCpuCfsQuotaPeriod: pulumi.String(\"100ms\"),\n\t\t\t\tPodPidsLimit: pulumi.Int(1024),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolManagementArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolKubeletConfigArgs;\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 versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"PREFER_NO_SCHEDULE\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .management(AwsNodePoolManagementArgs.builder()\n .autoRepair(true)\n .build())\n .kubeletConfig(AwsNodePoolKubeletConfigArgs.builder()\n .cpuManagerPolicy(\"none\")\n .cpuCfsQuota(true)\n .cpuCfsQuotaPeriod(\"100ms\")\n .podPidsLimit(1024)\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: PREFER_NO_SCHEDULE\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n management:\n autoRepair: true\n kubeletConfig:\n cpuManagerPolicy: none\n cpuCfsQuota: true\n cpuCfsQuotaPeriod: 100ms\n podPidsLimit: 1024\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"gp3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag_one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"prefer_no_schedule\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\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 versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n instancePlacement: {\n tenancy: \"dedicated\",\n },\n imageType: \"ubuntu\",\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"gp3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag_one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"prefer_no_schedule\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n \"instance_placement\": {\n \"tenancy\": \"dedicated\",\n },\n \"image_type\": \"ubuntu\",\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n InstancePlacement = new Gcp.Container.Inputs.AwsNodePoolConfigInstancePlacementArgs\n {\n Tenancy = \"dedicated\",\n },\n ImageType = \"ubuntu\",\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstancePlacement: \u0026container.AwsNodePoolConfigInstancePlacementArgs{\n\t\t\t\t\tTenancy: pulumi.String(\"dedicated\"),\n\t\t\t\t},\n\t\t\t\tImageType: pulumi.String(\"ubuntu\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigInstancePlacementArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\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 versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .instancePlacement(AwsNodePoolConfigInstancePlacementArgs.builder()\n .tenancy(\"dedicated\")\n .build())\n .imageType(\"ubuntu\")\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n instancePlacement:\n tenancy: dedicated\n imageType: ubuntu\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", + "description": "An Anthos node pool running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_aws_cluster\nA basic example of a containeraws node pool\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"PREFER_NO_SCHEDULE\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n management: {\n autoRepair: true,\n },\n kubeletConfig: {\n cpuManagerPolicy: \"none\",\n cpuCfsQuota: true,\n cpuCfsQuotaPeriod: \"100ms\",\n podPidsLimit: 1024,\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag-one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"PREFER_NO_SCHEDULE\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n management={\n \"auto_repair\": True,\n },\n kubelet_config={\n \"cpu_manager_policy\": \"none\",\n \"cpu_cfs_quota\": True,\n \"cpu_cfs_quota_period\": \"100ms\",\n \"pod_pids_limit\": 1024,\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"PREFER_NO_SCHEDULE\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Management = new Gcp.Container.Inputs.AwsNodePoolManagementArgs\n {\n AutoRepair = true,\n },\n KubeletConfig = new Gcp.Container.Inputs.AwsNodePoolKubeletConfigArgs\n {\n CpuManagerPolicy = \"none\",\n CpuCfsQuota = true,\n CpuCfsQuotaPeriod = \"100ms\",\n PodPidsLimit = 1024,\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"PREFER_NO_SCHEDULE\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tManagement: \u0026container.AwsNodePoolManagementArgs{\n\t\t\t\tAutoRepair: pulumi.Bool(true),\n\t\t\t},\n\t\t\tKubeletConfig: \u0026container.AwsNodePoolKubeletConfigArgs{\n\t\t\t\tCpuManagerPolicy: pulumi.String(\"none\"),\n\t\t\t\tCpuCfsQuota: pulumi.Bool(true),\n\t\t\t\tCpuCfsQuotaPeriod: pulumi.String(\"100ms\"),\n\t\t\t\tPodPidsLimit: pulumi.Int(1024),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolManagementArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolKubeletConfigArgs;\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 versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"PREFER_NO_SCHEDULE\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .management(AwsNodePoolManagementArgs.builder()\n .autoRepair(true)\n .build())\n .kubeletConfig(AwsNodePoolKubeletConfigArgs.builder()\n .cpuManagerPolicy(\"none\")\n .cpuCfsQuota(true)\n .cpuCfsQuotaPeriod(\"100ms\")\n .podPidsLimit(1024)\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: PREFER_NO_SCHEDULE\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n management:\n autoRepair: true\n kubeletConfig:\n cpuManagerPolicy: none\n cpuCfsQuota: true\n cpuCfsQuotaPeriod: 100ms\n podPidsLimit: 1024\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"gp3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag-one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"prefer_no_schedule\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\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 versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n instancePlacement: {\n tenancy: \"dedicated\",\n },\n imageType: \"ubuntu\",\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"gp3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag-one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"prefer_no_schedule\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n \"instance_placement\": {\n \"tenancy\": \"dedicated\",\n },\n \"image_type\": \"ubuntu\",\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n InstancePlacement = new Gcp.Container.Inputs.AwsNodePoolConfigInstancePlacementArgs\n {\n Tenancy = \"dedicated\",\n },\n ImageType = \"ubuntu\",\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstancePlacement: \u0026container.AwsNodePoolConfigInstancePlacementArgs{\n\t\t\t\t\tTenancy: pulumi.String(\"dedicated\"),\n\t\t\t\t},\n\t\t\t\tImageType: pulumi.String(\"ubuntu\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigInstancePlacementArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\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 versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .instancePlacement(AwsNodePoolConfigInstancePlacementArgs.builder()\n .tenancy(\"dedicated\")\n .build())\n .imageType(\"ubuntu\")\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n instancePlacement:\n tenancy: dedicated\n imageType: ubuntu\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -187602,7 +187602,7 @@ } }, "gcp:dataplex/task:Task": { - "description": "A Dataplex task represents the work that you want Dataplex to do on a schedule. It encapsulates code, parameters, and the schedule.\n\n\nTo get more information about Task, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest/v1/projects.locations.lakes.tasks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Task Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.dataplex.Lake(\"example\", {\n name: \"tf-test-lake_91042\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleTask = new gcp.dataplex.Task(\"example\", {\n taskId: \"tf-test-task_72490\",\n location: \"us-central1\",\n lake: example.name,\n description: \"Test Task Basic\",\n displayName: \"task-basic\",\n labels: {\n count: \"3\",\n },\n triggerSpec: {\n type: \"RECURRING\",\n disabled: false,\n maxRetries: 3,\n startTime: \"2023-10-02T15:01:23Z\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n project: \"my-project-name\",\n maxJobExecutionLifetime: \"100s\",\n kmsKey: \"234jn2kjn42k3n423\",\n },\n spark: {\n pythonScriptFile: \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.dataplex.Lake(\"example\",\n name=\"tf-test-lake_91042\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_task = gcp.dataplex.Task(\"example\",\n task_id=\"tf-test-task_72490\",\n location=\"us-central1\",\n lake=example.name,\n description=\"Test Task Basic\",\n display_name=\"task-basic\",\n labels={\n \"count\": \"3\",\n },\n trigger_spec={\n \"type\": \"RECURRING\",\n \"disabled\": False,\n \"max_retries\": 3,\n \"start_time\": \"2023-10-02T15:01:23Z\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"project\": \"my-project-name\",\n \"max_job_execution_lifetime\": \"100s\",\n \"kms_key\": \"234jn2kjn42k3n423\",\n },\n spark={\n \"python_script_file\": \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.DataPlex.Lake(\"example\", new()\n {\n Name = \"tf-test-lake_91042\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleTask = new Gcp.DataPlex.Task(\"example\", new()\n {\n TaskId = \"tf-test-task_72490\",\n Location = \"us-central1\",\n Lake = example.Name,\n Description = \"Test Task Basic\",\n DisplayName = \"task-basic\",\n Labels = \n {\n { \"count\", \"3\" },\n },\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Disabled = false,\n MaxRetries = 3,\n StartTime = \"2023-10-02T15:01:23Z\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Project = \"my-project-name\",\n MaxJobExecutionLifetime = \"100s\",\n KmsKey = \"234jn2kjn42k3n423\",\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n PythonScriptFile = \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := dataplex.NewLake(ctx, \"example\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_91042\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_72490\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: example.Name,\n\t\t\tDescription: pulumi.String(\"Test Task Basic\"),\n\t\t\tDisplayName: pulumi.String(\"task-basic\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\tMaxRetries: pulumi.Int(3),\n\t\t\t\tStartTime: pulumi.String(\"2023-10-02T15:01:23Z\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\t\tMaxJobExecutionLifetime: pulumi.String(\"100s\"),\n\t\t\t\tKmsKey: pulumi.String(\"234jn2kjn42k3n423\"),\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tPythonScriptFile: pulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\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 project = OrganizationsFunctions.getProject();\n\n var example = new Lake(\"example\", LakeArgs.builder()\n .name(\"tf-test-lake_91042\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleTask = new Task(\"exampleTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_72490\")\n .location(\"us-central1\")\n .lake(example.name())\n .description(\"Test Task Basic\")\n .displayName(\"task-basic\")\n .labels(Map.of(\"count\", \"3\"))\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .disabled(false)\n .maxRetries(3)\n .startTime(\"2023-10-02T15:01:23Z\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .project(\"my-project-name\")\n .maxJobExecutionLifetime(\"100s\")\n .kmsKey(\"234jn2kjn42k3n423\")\n .build())\n .spark(TaskSparkArgs.builder()\n .pythonScriptFile(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:dataplex:Lake\n properties:\n name: tf-test-lake_91042\n location: us-central1\n project: my-project-name\n exampleTask:\n type: gcp:dataplex:Task\n name: example\n properties:\n taskId: tf-test-task_72490\n location: us-central1\n lake: ${example.name}\n description: Test Task Basic\n displayName: task-basic\n labels:\n count: '3'\n triggerSpec:\n type: RECURRING\n disabled: false\n maxRetries: 3\n startTime: 2023-10-02T15:01:23Z\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n project: my-project-name\n maxJobExecutionLifetime: 100s\n kmsKey: 234jn2kjn42k3n423\n spark:\n pythonScriptFile: gs://dataproc-examples/pyspark/hello-world/hello-world.py\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_89605\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleSpark = new gcp.dataplex.Lake(\"example_spark\", {\n name: \"tf-test-lake_56730\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleSparkTask = new gcp.dataplex.Task(\"example_spark\", {\n taskId: \"tf-test-task_95154\",\n location: \"us-central1\",\n lake: exampleSpark.name,\n triggerSpec: {\n type: \"ON_DEMAND\",\n },\n description: \"task-spark-terraform\",\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark: {\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n subNetwork: _default.id,\n },\n },\n fileUris: [\"gs://terrafrom-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n sqlScript: \"show databases\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_89605\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_spark = gcp.dataplex.Lake(\"example_spark\",\n name=\"tf-test-lake_56730\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_spark_task = gcp.dataplex.Task(\"example_spark\",\n task_id=\"tf-test-task_95154\",\n location=\"us-central1\",\n lake=example_spark.name,\n trigger_spec={\n \"type\": \"ON_DEMAND\",\n },\n description=\"task-spark-terraform\",\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"tas_k__args\": \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark={\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"sub_network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terrafrom-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n \"sql_script\": \"show databases\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_89605\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleSpark = new Gcp.DataPlex.Lake(\"example_spark\", new()\n {\n Name = \"tf-test-lake_56730\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleSparkTask = new Gcp.DataPlex.Task(\"example_spark\", new()\n {\n TaskId = \"tf-test-task_95154\",\n Location = \"us-central1\",\n Lake = exampleSpark.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"ON_DEMAND\",\n },\n Description = \"task-spark-terraform\",\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\" },\n },\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n SubNetwork = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terrafrom-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n SqlScript = \"show databases\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\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// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_89605\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSpark, err := dataplex.NewLake(ctx, \"example_spark\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_56730\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example_spark\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_95154\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleSpark.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"ON_DEMAND\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"task-spark-terraform\"),\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskSparkInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskSparkInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskSparkInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskSparkInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSubNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terrafrom-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tSqlScript: pulumi.String(\"show databases\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecVpcNetworkArgs;\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 // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_89605\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleSpark = new Lake(\"exampleSpark\", LakeArgs.builder()\n .name(\"tf-test-lake_56730\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleSparkTask = new Task(\"exampleSparkTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_95154\")\n .location(\"us-central1\")\n .lake(exampleSpark.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"ON_DEMAND\")\n .build())\n .description(\"task-spark-terraform\")\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\"))\n .build())\n .spark(TaskSparkArgs.builder()\n .infrastructureSpec(TaskSparkInfrastructureSpecArgs.builder()\n .batch(TaskSparkInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskSparkInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskSparkInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .subNetwork(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terrafrom-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .sqlScript(\"show databases\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_89605\n autoCreateSubnetworks: true\n exampleSpark:\n type: gcp:dataplex:Lake\n name: example_spark\n properties:\n name: tf-test-lake_56730\n location: us-central1\n project: my-project-name\n exampleSparkTask:\n type: gcp:dataplex:Task\n name: example_spark\n properties:\n taskId: tf-test-task_95154\n location: us-central1\n lake: ${exampleSpark.name}\n triggerSpec:\n type: ON_DEMAND\n description: task-spark-terraform\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job/task-result, --output_format, json\n spark:\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n subNetwork: ${default.id}\n fileUris:\n - gs://terrafrom-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n sqlScript: show databases\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Notebook\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_64336\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleNotebook = new gcp.dataplex.Lake(\"example_notebook\", {\n name: \"tf-test-lake_34962\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleNotebookTask = new gcp.dataplex.Task(\"example_notebook\", {\n taskId: \"tf-test-task_74000\",\n location: \"us-central1\",\n lake: exampleNotebook.name,\n triggerSpec: {\n type: \"RECURRING\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook: {\n notebook: \"gs://terraform-test/test-notebook.ipynb\",\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n network: _default.id,\n },\n },\n fileUris: [\"gs://terraform-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_64336\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_notebook = gcp.dataplex.Lake(\"example_notebook\",\n name=\"tf-test-lake_34962\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_notebook_task = gcp.dataplex.Task(\"example_notebook\",\n task_id=\"tf-test-task_74000\",\n location=\"us-central1\",\n lake=example_notebook.name,\n trigger_spec={\n \"type\": \"RECURRING\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"tas_k__args\": \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook={\n \"notebook\": \"gs://terraform-test/test-notebook.ipynb\",\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terraform-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_64336\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleNotebook = new Gcp.DataPlex.Lake(\"example_notebook\", new()\n {\n Name = \"tf-test-lake_34962\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleNotebookTask = new Gcp.DataPlex.Task(\"example_notebook\", new()\n {\n TaskId = \"tf-test-task_74000\",\n Location = \"us-central1\",\n Lake = exampleNotebook.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\" },\n },\n },\n Notebook = new Gcp.DataPlex.Inputs.TaskNotebookArgs\n {\n Notebook = \"gs://terraform-test/test-notebook.ipynb\",\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n Network = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\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// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_64336\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNotebook, err := dataplex.NewLake(ctx, \"example_notebook\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_34962\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example_notebook\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_74000\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleNotebook.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotebook: \u0026dataplex.TaskNotebookArgs{\n\t\t\t\tNotebook: pulumi.String(\"gs://terraform-test/test-notebook.ipynb\"),\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskNotebookInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskNotebookInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskNotebookInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskNotebookInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs;\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 // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_64336\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleNotebook = new Lake(\"exampleNotebook\", LakeArgs.builder()\n .name(\"tf-test-lake_34962\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleNotebookTask = new Task(\"exampleNotebookTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_74000\")\n .location(\"us-central1\")\n .lake(exampleNotebook.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"))\n .build())\n .notebook(TaskNotebookArgs.builder()\n .notebook(\"gs://terraform-test/test-notebook.ipynb\")\n .infrastructureSpec(TaskNotebookInfrastructureSpecArgs.builder()\n .batch(TaskNotebookInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskNotebookInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskNotebookInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .network(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terraform-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_64336\n autoCreateSubnetworks: true\n exampleNotebook:\n type: gcp:dataplex:Lake\n name: example_notebook\n properties:\n name: tf-test-lake_34962\n location: us-central1\n project: my-project-name\n exampleNotebookTask:\n type: gcp:dataplex:Task\n name: example_notebook\n properties:\n taskId: tf-test-task_74000\n location: us-central1\n lake: ${exampleNotebook.name}\n triggerSpec:\n type: RECURRING\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\n notebook:\n notebook: gs://terraform-test/test-notebook.ipynb\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n network: ${default.id}\n fileUris:\n - gs://terraform-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTask can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{task_id}}`\n\n* `{{location}}/{{lake}}/{{task_id}}`\n\nWhen using the `pulumi import` command, Task can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{project}}/{{location}}/{{lake}}/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{location}}/{{lake}}/{{task_id}}\n```\n\n", + "description": "A Dataplex task represents the work that you want Dataplex to do on a schedule. It encapsulates code, parameters, and the schedule.\n\n\nTo get more information about Task, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest/v1/projects.locations.lakes.tasks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Task Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.dataplex.Lake(\"example\", {\n name: \"tf-test-lake_91042\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleTask = new gcp.dataplex.Task(\"example\", {\n taskId: \"tf-test-task_72490\",\n location: \"us-central1\",\n lake: example.name,\n description: \"Test Task Basic\",\n displayName: \"task-basic\",\n labels: {\n count: \"3\",\n },\n triggerSpec: {\n type: \"RECURRING\",\n disabled: false,\n maxRetries: 3,\n startTime: \"2023-10-02T15:01:23Z\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n project: \"my-project-name\",\n maxJobExecutionLifetime: \"100s\",\n kmsKey: \"234jn2kjn42k3n423\",\n },\n spark: {\n pythonScriptFile: \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.dataplex.Lake(\"example\",\n name=\"tf-test-lake_91042\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_task = gcp.dataplex.Task(\"example\",\n task_id=\"tf-test-task_72490\",\n location=\"us-central1\",\n lake=example.name,\n description=\"Test Task Basic\",\n display_name=\"task-basic\",\n labels={\n \"count\": \"3\",\n },\n trigger_spec={\n \"type\": \"RECURRING\",\n \"disabled\": False,\n \"max_retries\": 3,\n \"start_time\": \"2023-10-02T15:01:23Z\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"project\": \"my-project-name\",\n \"max_job_execution_lifetime\": \"100s\",\n \"kms_key\": \"234jn2kjn42k3n423\",\n },\n spark={\n \"python_script_file\": \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.DataPlex.Lake(\"example\", new()\n {\n Name = \"tf-test-lake_91042\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleTask = new Gcp.DataPlex.Task(\"example\", new()\n {\n TaskId = \"tf-test-task_72490\",\n Location = \"us-central1\",\n Lake = example.Name,\n Description = \"Test Task Basic\",\n DisplayName = \"task-basic\",\n Labels = \n {\n { \"count\", \"3\" },\n },\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Disabled = false,\n MaxRetries = 3,\n StartTime = \"2023-10-02T15:01:23Z\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Project = \"my-project-name\",\n MaxJobExecutionLifetime = \"100s\",\n KmsKey = \"234jn2kjn42k3n423\",\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n PythonScriptFile = \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := dataplex.NewLake(ctx, \"example\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_91042\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_72490\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: example.Name,\n\t\t\tDescription: pulumi.String(\"Test Task Basic\"),\n\t\t\tDisplayName: pulumi.String(\"task-basic\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\tMaxRetries: pulumi.Int(3),\n\t\t\t\tStartTime: pulumi.String(\"2023-10-02T15:01:23Z\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\t\tMaxJobExecutionLifetime: pulumi.String(\"100s\"),\n\t\t\t\tKmsKey: pulumi.String(\"234jn2kjn42k3n423\"),\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tPythonScriptFile: pulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\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 project = OrganizationsFunctions.getProject();\n\n var example = new Lake(\"example\", LakeArgs.builder()\n .name(\"tf-test-lake_91042\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleTask = new Task(\"exampleTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_72490\")\n .location(\"us-central1\")\n .lake(example.name())\n .description(\"Test Task Basic\")\n .displayName(\"task-basic\")\n .labels(Map.of(\"count\", \"3\"))\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .disabled(false)\n .maxRetries(3)\n .startTime(\"2023-10-02T15:01:23Z\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .project(\"my-project-name\")\n .maxJobExecutionLifetime(\"100s\")\n .kmsKey(\"234jn2kjn42k3n423\")\n .build())\n .spark(TaskSparkArgs.builder()\n .pythonScriptFile(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:dataplex:Lake\n properties:\n name: tf-test-lake_91042\n location: us-central1\n project: my-project-name\n exampleTask:\n type: gcp:dataplex:Task\n name: example\n properties:\n taskId: tf-test-task_72490\n location: us-central1\n lake: ${example.name}\n description: Test Task Basic\n displayName: task-basic\n labels:\n count: '3'\n triggerSpec:\n type: RECURRING\n disabled: false\n maxRetries: 3\n startTime: 2023-10-02T15:01:23Z\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n project: my-project-name\n maxJobExecutionLifetime: 100s\n kmsKey: 234jn2kjn42k3n423\n spark:\n pythonScriptFile: gs://dataproc-examples/pyspark/hello-world/hello-world.py\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_89605\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleSpark = new gcp.dataplex.Lake(\"example_spark\", {\n name: \"tf-test-lake_56730\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleSparkTask = new gcp.dataplex.Task(\"example_spark\", {\n taskId: \"tf-test-task_95154\",\n location: \"us-central1\",\n lake: exampleSpark.name,\n triggerSpec: {\n type: \"ON_DEMAND\",\n },\n description: \"task-spark-terraform\",\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark: {\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n subNetwork: _default.id,\n },\n },\n fileUris: [\"gs://terrafrom-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n sqlScript: \"show databases\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_89605\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_spark = gcp.dataplex.Lake(\"example_spark\",\n name=\"tf-test-lake_56730\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_spark_task = gcp.dataplex.Task(\"example_spark\",\n task_id=\"tf-test-task_95154\",\n location=\"us-central1\",\n lake=example_spark.name,\n trigger_spec={\n \"type\": \"ON_DEMAND\",\n },\n description=\"task-spark-terraform\",\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"TASK_ARGS\": \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark={\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"sub_network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terrafrom-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n \"sql_script\": \"show databases\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_89605\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleSpark = new Gcp.DataPlex.Lake(\"example_spark\", new()\n {\n Name = \"tf-test-lake_56730\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleSparkTask = new Gcp.DataPlex.Task(\"example_spark\", new()\n {\n TaskId = \"tf-test-task_95154\",\n Location = \"us-central1\",\n Lake = exampleSpark.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"ON_DEMAND\",\n },\n Description = \"task-spark-terraform\",\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\" },\n },\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n SubNetwork = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terrafrom-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n SqlScript = \"show databases\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\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// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_89605\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSpark, err := dataplex.NewLake(ctx, \"example_spark\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_56730\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example_spark\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_95154\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleSpark.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"ON_DEMAND\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"task-spark-terraform\"),\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskSparkInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskSparkInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskSparkInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskSparkInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSubNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terrafrom-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tSqlScript: pulumi.String(\"show databases\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecVpcNetworkArgs;\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 // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_89605\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleSpark = new Lake(\"exampleSpark\", LakeArgs.builder()\n .name(\"tf-test-lake_56730\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleSparkTask = new Task(\"exampleSparkTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_95154\")\n .location(\"us-central1\")\n .lake(exampleSpark.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"ON_DEMAND\")\n .build())\n .description(\"task-spark-terraform\")\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\"))\n .build())\n .spark(TaskSparkArgs.builder()\n .infrastructureSpec(TaskSparkInfrastructureSpecArgs.builder()\n .batch(TaskSparkInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskSparkInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskSparkInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .subNetwork(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terrafrom-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .sqlScript(\"show databases\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_89605\n autoCreateSubnetworks: true\n exampleSpark:\n type: gcp:dataplex:Lake\n name: example_spark\n properties:\n name: tf-test-lake_56730\n location: us-central1\n project: my-project-name\n exampleSparkTask:\n type: gcp:dataplex:Task\n name: example_spark\n properties:\n taskId: tf-test-task_95154\n location: us-central1\n lake: ${exampleSpark.name}\n triggerSpec:\n type: ON_DEMAND\n description: task-spark-terraform\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job/task-result, --output_format, json\n spark:\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n subNetwork: ${default.id}\n fileUris:\n - gs://terrafrom-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n sqlScript: show databases\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Notebook\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_64336\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleNotebook = new gcp.dataplex.Lake(\"example_notebook\", {\n name: \"tf-test-lake_34962\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleNotebookTask = new gcp.dataplex.Task(\"example_notebook\", {\n taskId: \"tf-test-task_74000\",\n location: \"us-central1\",\n lake: exampleNotebook.name,\n triggerSpec: {\n type: \"RECURRING\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook: {\n notebook: \"gs://terraform-test/test-notebook.ipynb\",\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n network: _default.id,\n },\n },\n fileUris: [\"gs://terraform-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_64336\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_notebook = gcp.dataplex.Lake(\"example_notebook\",\n name=\"tf-test-lake_34962\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_notebook_task = gcp.dataplex.Task(\"example_notebook\",\n task_id=\"tf-test-task_74000\",\n location=\"us-central1\",\n lake=example_notebook.name,\n trigger_spec={\n \"type\": \"RECURRING\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"TASK_ARGS\": \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook={\n \"notebook\": \"gs://terraform-test/test-notebook.ipynb\",\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terraform-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_64336\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleNotebook = new Gcp.DataPlex.Lake(\"example_notebook\", new()\n {\n Name = \"tf-test-lake_34962\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleNotebookTask = new Gcp.DataPlex.Task(\"example_notebook\", new()\n {\n TaskId = \"tf-test-task_74000\",\n Location = \"us-central1\",\n Lake = exampleNotebook.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\" },\n },\n },\n Notebook = new Gcp.DataPlex.Inputs.TaskNotebookArgs\n {\n Notebook = \"gs://terraform-test/test-notebook.ipynb\",\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n Network = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\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// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_64336\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNotebook, err := dataplex.NewLake(ctx, \"example_notebook\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_34962\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example_notebook\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_74000\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleNotebook.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotebook: \u0026dataplex.TaskNotebookArgs{\n\t\t\t\tNotebook: pulumi.String(\"gs://terraform-test/test-notebook.ipynb\"),\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskNotebookInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskNotebookInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskNotebookInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskNotebookInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs;\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 // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_64336\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleNotebook = new Lake(\"exampleNotebook\", LakeArgs.builder()\n .name(\"tf-test-lake_34962\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleNotebookTask = new Task(\"exampleNotebookTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_74000\")\n .location(\"us-central1\")\n .lake(exampleNotebook.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"))\n .build())\n .notebook(TaskNotebookArgs.builder()\n .notebook(\"gs://terraform-test/test-notebook.ipynb\")\n .infrastructureSpec(TaskNotebookInfrastructureSpecArgs.builder()\n .batch(TaskNotebookInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskNotebookInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskNotebookInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .network(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terraform-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_64336\n autoCreateSubnetworks: true\n exampleNotebook:\n type: gcp:dataplex:Lake\n name: example_notebook\n properties:\n name: tf-test-lake_34962\n location: us-central1\n project: my-project-name\n exampleNotebookTask:\n type: gcp:dataplex:Task\n name: example_notebook\n properties:\n taskId: tf-test-task_74000\n location: us-central1\n lake: ${exampleNotebook.name}\n triggerSpec:\n type: RECURRING\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\n notebook:\n notebook: gs://terraform-test/test-notebook.ipynb\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n network: ${default.id}\n fileUris:\n - gs://terraform-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTask can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{task_id}}`\n\n* `{{location}}/{{lake}}/{{task_id}}`\n\nWhen using the `pulumi import` command, Task can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{project}}/{{location}}/{{lake}}/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{location}}/{{lake}}/{{task_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -189260,7 +189260,7 @@ } }, "gcp:dataproc/batch:Batch": { - "description": "Dataproc Serverless Batches lets you run Spark workloads without requiring you to\nprovision and manage your own Dataproc cluster.\n\n\nTo get more information about Batch, see:\n\n* [API documentation](https://cloud.google.com/dataproc-serverless/docs/reference/rest/v1/projects.locations.batches)\n* How-to Guides\n * [Dataproc Serverless Batches Intro](https://cloud.google.com/dataproc-serverless/docs/overview)\n\n## Example Usage\n\n### Dataproc Batch Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSpark = new gcp.dataproc.Batch(\"example_batch_spark\", {\n batchId: \"tf-test-batch_75125\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_spark = gcp.dataproc.Batch(\"example_batch_spark\",\n batch_id=\"tf-test-batch_75125\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark_dynamic_allocation_enabled\": \"false\",\n \"spark_executor_instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSpark = new Gcp.Dataproc.Batch(\"example_batch_spark\", new()\n {\n BatchId = \"tf-test-batch_75125\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewBatch(ctx, \"example_batch_spark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_75125\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\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.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\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 exampleBatchSpark = new Batch(\"exampleBatchSpark\", BatchArgs.builder()\n .batchId(\"tf-test-batch_75125\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSpark:\n type: gcp:dataproc:Batch\n name: example_batch_spark\n properties:\n batchId: tf-test-batch_75125\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n networkTags:\n - tag1\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Spark Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n uniformBucketLevelAccess: true,\n name: \"dataproc-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst cryptoKeyMember1 = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member_1\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com`),\n});\nconst ms = new gcp.dataproc.MetastoreService(\"ms\", {\n serviceId: \"dataproc-batch\",\n location: \"us-central1\",\n port: 9080,\n tier: \"DEVELOPER\",\n maintenanceWindow: {\n hourOfDay: 2,\n dayOfWeek: \"SUNDAY\",\n },\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n});\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"dataproc-batch\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n \"spark:spark.history.fs.logDirectory\": pulumi.interpolate`gs://${bucket.name}/*/spark-job-history`,\n },\n },\n endpointConfig: {\n enableHttpPortAccess: true,\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n metastoreConfig: {\n dataprocMetastoreService: ms.name,\n },\n },\n});\nconst exampleBatchSpark = new gcp.dataproc.Batch(\"example_batch_spark\", {\n batchId: \"dataproc-batch\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n version: \"2.2\",\n },\n environmentConfig: {\n executionConfig: {\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n kmsKey: cryptoKey.id,\n networkUri: \"default\",\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n stagingBucket: bucket.name,\n },\n peripheralsConfig: {\n metastoreService: ms.name,\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n}, {\n dependsOn: [cryptoKeyMember1],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ngcs_account = gcp.storage.get_project_service_account()\nbucket = gcp.storage.Bucket(\"bucket\",\n uniform_bucket_level_access=True,\n name=\"dataproc-bucket\",\n location=\"US\",\n force_destroy=True)\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\ncrypto_key_member1 = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member_1\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@dataproc-accounts.iam.gserviceaccount.com\")\nms = gcp.dataproc.MetastoreService(\"ms\",\n service_id=\"dataproc-batch\",\n location=\"us-central1\",\n port=9080,\n tier=\"DEVELOPER\",\n maintenance_window={\n \"hour_of_day\": 2,\n \"day_of_week\": \"SUNDAY\",\n },\n hive_metastore_config={\n \"version\": \"3.1.2\",\n })\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"dataproc-batch\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc_dataproc_allow_zero_workers\": \"true\",\n \"spark_spark_history_fs_log_directory\": bucket.name.apply(lambda name: f\"gs://{name}/*/spark-job-history\"),\n },\n },\n \"endpoint_config\": {\n \"enable_http_port_access\": True,\n },\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-standard-2\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 35,\n },\n },\n \"metastore_config\": {\n \"dataproc_metastore_service\": ms.name,\n },\n })\nexample_batch_spark = gcp.dataproc.Batch(\"example_batch_spark\",\n batch_id=\"dataproc-batch\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark_dynamic_allocation_enabled\": \"false\",\n \"spark_executor_instances\": \"2\",\n },\n \"version\": \"2.2\",\n },\n environment_config={\n \"execution_config\": {\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n \"kms_key\": crypto_key.id,\n \"network_uri\": \"default\",\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"staging_bucket\": bucket.name,\n },\n \"peripherals_config\": {\n \"metastore_service\": ms.name,\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.id,\n },\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member1]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n UniformBucketLevelAccess = true,\n Name = \"dataproc-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var cryptoKeyMember1 = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member_1\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@dataproc-accounts.iam.gserviceaccount.com\",\n });\n\n var ms = new Gcp.Dataproc.MetastoreService(\"ms\", new()\n {\n ServiceId = \"dataproc-batch\",\n Location = \"us-central1\",\n Port = 9080,\n Tier = \"DEVELOPER\",\n MaintenanceWindow = new Gcp.Dataproc.Inputs.MetastoreServiceMaintenanceWindowArgs\n {\n HourOfDay = 2,\n DayOfWeek = \"SUNDAY\",\n },\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n });\n\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"dataproc-batch\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n { \"spark:spark.history.fs.logDirectory\", bucket.Name.Apply(name =\u003e $\"gs://{name}/*/spark-job-history\") },\n },\n },\n EndpointConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigEndpointConfigArgs\n {\n EnableHttpPortAccess = true,\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskSizeGb = 35,\n },\n },\n MetastoreConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMetastoreConfigArgs\n {\n DataprocMetastoreService = ms.Name,\n },\n },\n });\n\n var exampleBatchSpark = new Gcp.Dataproc.Batch(\"example_batch_spark\", new()\n {\n BatchId = \"dataproc-batch\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n Version = \"2.2\",\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n KmsKey = cryptoKey.Id,\n NetworkUri = \"default\",\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n StagingBucket = bucket.Name,\n },\n PeripheralsConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigPeripheralsConfigArgs\n {\n MetastoreService = ms.Name,\n SparkHistoryServerConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember1,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"dataproc-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember1, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member_1\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@dataproc-accounts.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tms, err := dataproc.NewMetastoreService(ctx, \"ms\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"dataproc-batch\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPort: pulumi.Int(9080),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tMaintenanceWindow: \u0026dataproc.MetastoreServiceMaintenanceWindowArgs{\n\t\t\t\tHourOfDay: pulumi.Int(2),\n\t\t\t\tDayOfWeek: pulumi.String(\"SUNDAY\"),\n\t\t\t},\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dataproc-batch\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t\t\"spark:spark.history.fs.logDirectory\": bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/*/spark-job-history\", name), 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\tEndpointConfig: \u0026dataproc.ClusterClusterConfigEndpointConfigArgs{\n\t\t\t\t\tEnableHttpPortAccess: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-2\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetastoreConfig: \u0026dataproc.ClusterClusterConfigMetastoreConfigArgs{\n\t\t\t\t\tDataprocMetastoreService: ms.Name,\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 = dataproc.NewBatch(ctx, \"example_batch_spark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"dataproc-batch\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(\"2.2\"),\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t\tKmsKey: cryptoKey.ID(),\n\t\t\t\t\tNetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\t\tStagingBucket: bucket.Name,\n\t\t\t\t},\n\t\t\t\tPeripheralsConfig: \u0026dataproc.BatchEnvironmentConfigPeripheralsConfigArgs{\n\t\t\t\t\tMetastoreService: ms.Name,\n\t\t\t\t\tSparkHistoryServerConfig: \u0026dataproc.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs{\n\t\t\t\t\t\tDataprocCluster: basic.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember1,\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.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigEndpointConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigPeripheralsConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\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 project = OrganizationsFunctions.getProject();\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .uniformBucketLevelAccess(true)\n .name(\"dataproc-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var cryptoKeyMember1 = new CryptoKeyIAMMember(\"cryptoKeyMember1\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@dataproc-accounts.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var ms = new MetastoreService(\"ms\", MetastoreServiceArgs.builder()\n .serviceId(\"dataproc-batch\")\n .location(\"us-central1\")\n .port(9080)\n .tier(\"DEVELOPER\")\n .maintenanceWindow(MetastoreServiceMaintenanceWindowArgs.builder()\n .hourOfDay(2)\n .dayOfWeek(\"SUNDAY\")\n .build())\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .build());\n\n var basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"dataproc-batch\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.ofEntries(\n Map.entry(\"dataproc:dataproc.allow.zero.workers\", \"true\"),\n Map.entry(\"spark:spark.history.fs.logDirectory\", bucket.name().applyValue(name -\u003e String.format(\"gs://%s/*/spark-job-history\", name)))\n ))\n .build())\n .endpointConfig(ClusterClusterConfigEndpointConfigArgs.builder()\n .enableHttpPortAccess(true)\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-standard-2\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(35)\n .build())\n .build())\n .metastoreConfig(ClusterClusterConfigMetastoreConfigArgs.builder()\n .dataprocMetastoreService(ms.name())\n .build())\n .build())\n .build());\n\n var exampleBatchSpark = new Batch(\"exampleBatchSpark\", BatchArgs.builder()\n .batchId(\"dataproc-batch\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .version(\"2.2\")\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .kmsKey(cryptoKey.id())\n .networkUri(\"default\")\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .stagingBucket(bucket.name())\n .build())\n .peripheralsConfig(BatchEnvironmentConfigPeripheralsConfigArgs.builder()\n .metastoreService(ms.name())\n .sparkHistoryServerConfig(BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSpark:\n type: gcp:dataproc:Batch\n name: example_batch_spark\n properties:\n batchId: dataproc-batch\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n version: '2.2'\n environmentConfig:\n executionConfig:\n ttl: 3600s\n networkTags:\n - tag1\n kmsKey: ${cryptoKey.id}\n networkUri: default\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n stagingBucket: ${bucket.name}\n peripheralsConfig:\n metastoreService: ${ms.name}\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n options:\n dependson:\n - ${cryptoKeyMember1}\n bucket:\n type: gcp:storage:Bucket\n properties:\n uniformBucketLevelAccess: true\n name: dataproc-bucket\n location: US\n forceDestroy: true\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us-central1\n cryptoKeyMember1:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member_1\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: dataproc-batch\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n spark:spark.history.fs.logDirectory: gs://${bucket.name}/*/spark-job-history\n endpointConfig:\n enableHttpPortAccess: true\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n metastoreConfig:\n dataprocMetastoreService: ${ms.name}\n ms:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: dataproc-batch\n location: us-central1\n port: 9080\n tier: DEVELOPER\n maintenanceWindow:\n hourOfDay: 2\n dayOfWeek: SUNDAY\n hiveMetastoreConfig:\n version: 3.1.2\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Sparksql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSparsql = new gcp.dataproc.Batch(\"example_batch_sparsql\", {\n batchId: \"tf-test-batch_88722\",\n location: \"us-central1\",\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n },\n },\n sparkSqlBatch: {\n queryFileUri: \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n queryVariables: {\n name: \"value\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_sparsql = gcp.dataproc.Batch(\"example_batch_sparsql\",\n batch_id=\"tf-test-batch_88722\",\n location=\"us-central1\",\n runtime_config={\n \"properties\": {\n \"spark_dynamic_allocation_enabled\": \"false\",\n \"spark_executor_instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n },\n },\n spark_sql_batch={\n \"query_file_uri\": \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"query_variables\": {\n \"name\": \"value\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSparsql = new Gcp.Dataproc.Batch(\"example_batch_sparsql\", new()\n {\n BatchId = \"tf-test-batch_88722\",\n Location = \"us-central1\",\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n },\n },\n SparkSqlBatch = new Gcp.Dataproc.Inputs.BatchSparkSqlBatchArgs\n {\n QueryFileUri = \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n QueryVariables = \n {\n { \"name\", \"value\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewBatch(ctx, \"example_batch_sparsql\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_88722\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkSqlBatch: \u0026dataproc.BatchSparkSqlBatchArgs{\n\t\t\t\tQueryFileUri: pulumi.String(\"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\"),\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tQueryVariables: pulumi.StringMap{\n\t\t\t\t\t\"name\": pulumi.String(\"value\"),\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.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkSqlBatchArgs;\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 exampleBatchSparsql = new Batch(\"exampleBatchSparsql\", BatchArgs.builder()\n .batchId(\"tf-test-batch_88722\")\n .location(\"us-central1\")\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .build())\n .build())\n .sparkSqlBatch(BatchSparkSqlBatchArgs.builder()\n .queryFileUri(\"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .queryVariables(Map.of(\"name\", \"value\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSparsql:\n type: gcp:dataproc:Batch\n name: example_batch_sparsql\n properties:\n batchId: tf-test-batch_88722\n location: us-central1\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n sparkSqlBatch:\n queryFileUri: gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n queryVariables:\n name: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchPyspark = new gcp.dataproc.Batch(\"example_batch_pyspark\", {\n batchId: \"tf-test-batch_39249\",\n location: \"us-central1\",\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n },\n },\n pysparkBatch: {\n mainPythonFileUri: \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n pythonFileUris: [\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"],\n archiveUris: [\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n ],\n fileUris: [\"https://storage.googleapis.com/terraform-batches/people.txt\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_pyspark = gcp.dataproc.Batch(\"example_batch_pyspark\",\n batch_id=\"tf-test-batch_39249\",\n location=\"us-central1\",\n runtime_config={\n \"properties\": {\n \"spark_dynamic_allocation_enabled\": \"false\",\n \"spark_executor_instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n },\n },\n pyspark_batch={\n \"main_python_file_uri\": \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"python_file_uris\": [\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"],\n \"archive_uris\": [\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n ],\n \"file_uris\": [\"https://storage.googleapis.com/terraform-batches/people.txt\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchPyspark = new Gcp.Dataproc.Batch(\"example_batch_pyspark\", new()\n {\n BatchId = \"tf-test-batch_39249\",\n Location = \"us-central1\",\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n },\n },\n PysparkBatch = new Gcp.Dataproc.Inputs.BatchPysparkBatchArgs\n {\n MainPythonFileUri = \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n PythonFileUris = new[]\n {\n \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n ArchiveUris = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n },\n FileUris = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/people.txt\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewBatch(ctx, \"example_batch_pyspark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_39249\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPysparkBatch: \u0026dataproc.BatchPysparkBatchArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"https://storage.googleapis.com/terraform-batches/test_util.py\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tPythonFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\"),\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt.jar\"),\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/people.txt\"),\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.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchPysparkBatchArgs;\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 exampleBatchPyspark = new Batch(\"exampleBatchPyspark\", BatchArgs.builder()\n .batchId(\"tf-test-batch_39249\")\n .location(\"us-central1\")\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .build())\n .build())\n .pysparkBatch(BatchPysparkBatchArgs.builder()\n .mainPythonFileUri(\"https://storage.googleapis.com/terraform-batches/test_util.py\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .pythonFileUris(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .archiveUris( \n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\")\n .fileUris(\"https://storage.googleapis.com/terraform-batches/people.txt\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchPyspark:\n type: gcp:dataproc:Batch\n name: example_batch_pyspark\n properties:\n batchId: tf-test-batch_39249\n location: us-central1\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n pysparkBatch:\n mainPythonFileUri: https://storage.googleapis.com/terraform-batches/test_util.py\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n pythonFileUris:\n - gs://dataproc-examples/pyspark/hello-world/hello-world.py\n archiveUris:\n - https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\n - https://storage.googleapis.com/terraform-batches/animals.txt.jar\n - https://storage.googleapis.com/terraform-batches/animals.txt\n fileUris:\n - https://storage.googleapis.com/terraform-batches/people.txt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Sparkr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSparkr = new gcp.dataproc.Batch(\"example_batch_sparkr\", {\n batchId: \"tf-test-batch_74391\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n },\n },\n sparkRBatch: {\n mainRFileUri: \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n args: [\"https://storage.googleapis.com/terraform-batches/flights.csv\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_sparkr = gcp.dataproc.Batch(\"example_batch_sparkr\",\n batch_id=\"tf-test-batch_74391\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark_dynamic_allocation_enabled\": \"false\",\n \"spark_executor_instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n },\n },\n spark_r_batch={\n \"main_r_file_uri\": \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n \"args\": [\"https://storage.googleapis.com/terraform-batches/flights.csv\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSparkr = new Gcp.Dataproc.Batch(\"example_batch_sparkr\", new()\n {\n BatchId = \"tf-test-batch_74391\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n },\n },\n SparkRBatch = new Gcp.Dataproc.Inputs.BatchSparkRBatchArgs\n {\n MainRFileUri = \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n Args = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/flights.csv\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewBatch(ctx, \"example_batch_sparkr\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_74391\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkRBatch: \u0026dataproc.BatchSparkRBatchArgs{\n\t\t\t\tMainRFileUri: pulumi.String(\"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/flights.csv\"),\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.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkRBatchArgs;\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 exampleBatchSparkr = new Batch(\"exampleBatchSparkr\", BatchArgs.builder()\n .batchId(\"tf-test-batch_74391\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .build())\n .build())\n .sparkRBatch(BatchSparkRBatchArgs.builder()\n .mainRFileUri(\"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\")\n .args(\"https://storage.googleapis.com/terraform-batches/flights.csv\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSparkr:\n type: gcp:dataproc:Batch\n name: example_batch_sparkr\n properties:\n batchId: tf-test-batch_74391\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n networkTags:\n - tag1\n sparkRBatch:\n mainRFileUri: https://storage.googleapis.com/terraform-batches/spark-r-flights.r\n args:\n - https://storage.googleapis.com/terraform-batches/flights.csv\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBatch can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/batches/{{batch_id}}`\n\n* `{{project}}/{{location}}/{{batch_id}}`\n\n* `{{location}}/{{batch_id}}`\n\nWhen using the `pulumi import` command, Batch can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default projects/{{project}}/locations/{{location}}/batches/{{batch_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default {{project}}/{{location}}/{{batch_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default {{location}}/{{batch_id}}\n```\n\n", + "description": "Dataproc Serverless Batches lets you run Spark workloads without requiring you to\nprovision and manage your own Dataproc cluster.\n\n\nTo get more information about Batch, see:\n\n* [API documentation](https://cloud.google.com/dataproc-serverless/docs/reference/rest/v1/projects.locations.batches)\n* How-to Guides\n * [Dataproc Serverless Batches Intro](https://cloud.google.com/dataproc-serverless/docs/overview)\n\n## Example Usage\n\n### Dataproc Batch Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSpark = new gcp.dataproc.Batch(\"example_batch_spark\", {\n batchId: \"tf-test-batch_75125\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_spark = gcp.dataproc.Batch(\"example_batch_spark\",\n batch_id=\"tf-test-batch_75125\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSpark = new Gcp.Dataproc.Batch(\"example_batch_spark\", new()\n {\n BatchId = \"tf-test-batch_75125\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewBatch(ctx, \"example_batch_spark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_75125\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\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.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\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 exampleBatchSpark = new Batch(\"exampleBatchSpark\", BatchArgs.builder()\n .batchId(\"tf-test-batch_75125\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSpark:\n type: gcp:dataproc:Batch\n name: example_batch_spark\n properties:\n batchId: tf-test-batch_75125\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n networkTags:\n - tag1\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Spark Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n uniformBucketLevelAccess: true,\n name: \"dataproc-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst cryptoKeyMember1 = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member_1\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com`),\n});\nconst ms = new gcp.dataproc.MetastoreService(\"ms\", {\n serviceId: \"dataproc-batch\",\n location: \"us-central1\",\n port: 9080,\n tier: \"DEVELOPER\",\n maintenanceWindow: {\n hourOfDay: 2,\n dayOfWeek: \"SUNDAY\",\n },\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n});\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"dataproc-batch\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n \"spark:spark.history.fs.logDirectory\": pulumi.interpolate`gs://${bucket.name}/*/spark-job-history`,\n },\n },\n endpointConfig: {\n enableHttpPortAccess: true,\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n metastoreConfig: {\n dataprocMetastoreService: ms.name,\n },\n },\n});\nconst exampleBatchSpark = new gcp.dataproc.Batch(\"example_batch_spark\", {\n batchId: \"dataproc-batch\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n version: \"2.2\",\n },\n environmentConfig: {\n executionConfig: {\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n kmsKey: cryptoKey.id,\n networkUri: \"default\",\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n stagingBucket: bucket.name,\n },\n peripheralsConfig: {\n metastoreService: ms.name,\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n}, {\n dependsOn: [cryptoKeyMember1],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ngcs_account = gcp.storage.get_project_service_account()\nbucket = gcp.storage.Bucket(\"bucket\",\n uniform_bucket_level_access=True,\n name=\"dataproc-bucket\",\n location=\"US\",\n force_destroy=True)\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\ncrypto_key_member1 = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member_1\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@dataproc-accounts.iam.gserviceaccount.com\")\nms = gcp.dataproc.MetastoreService(\"ms\",\n service_id=\"dataproc-batch\",\n location=\"us-central1\",\n port=9080,\n tier=\"DEVELOPER\",\n maintenance_window={\n \"hour_of_day\": 2,\n \"day_of_week\": \"SUNDAY\",\n },\n hive_metastore_config={\n \"version\": \"3.1.2\",\n })\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"dataproc-batch\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n \"spark:spark.history.fs.logDirectory\": bucket.name.apply(lambda name: f\"gs://{name}/*/spark-job-history\"),\n },\n },\n \"endpoint_config\": {\n \"enable_http_port_access\": True,\n },\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-standard-2\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 35,\n },\n },\n \"metastore_config\": {\n \"dataproc_metastore_service\": ms.name,\n },\n })\nexample_batch_spark = gcp.dataproc.Batch(\"example_batch_spark\",\n batch_id=\"dataproc-batch\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n \"version\": \"2.2\",\n },\n environment_config={\n \"execution_config\": {\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n \"kms_key\": crypto_key.id,\n \"network_uri\": \"default\",\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"staging_bucket\": bucket.name,\n },\n \"peripherals_config\": {\n \"metastore_service\": ms.name,\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.id,\n },\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member1]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n UniformBucketLevelAccess = true,\n Name = \"dataproc-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var cryptoKeyMember1 = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member_1\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@dataproc-accounts.iam.gserviceaccount.com\",\n });\n\n var ms = new Gcp.Dataproc.MetastoreService(\"ms\", new()\n {\n ServiceId = \"dataproc-batch\",\n Location = \"us-central1\",\n Port = 9080,\n Tier = \"DEVELOPER\",\n MaintenanceWindow = new Gcp.Dataproc.Inputs.MetastoreServiceMaintenanceWindowArgs\n {\n HourOfDay = 2,\n DayOfWeek = \"SUNDAY\",\n },\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n });\n\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"dataproc-batch\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n { \"spark:spark.history.fs.logDirectory\", bucket.Name.Apply(name =\u003e $\"gs://{name}/*/spark-job-history\") },\n },\n },\n EndpointConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigEndpointConfigArgs\n {\n EnableHttpPortAccess = true,\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskSizeGb = 35,\n },\n },\n MetastoreConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMetastoreConfigArgs\n {\n DataprocMetastoreService = ms.Name,\n },\n },\n });\n\n var exampleBatchSpark = new Gcp.Dataproc.Batch(\"example_batch_spark\", new()\n {\n BatchId = \"dataproc-batch\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n Version = \"2.2\",\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n KmsKey = cryptoKey.Id,\n NetworkUri = \"default\",\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n StagingBucket = bucket.Name,\n },\n PeripheralsConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigPeripheralsConfigArgs\n {\n MetastoreService = ms.Name,\n SparkHistoryServerConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember1,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"dataproc-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember1, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member_1\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@dataproc-accounts.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tms, err := dataproc.NewMetastoreService(ctx, \"ms\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"dataproc-batch\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPort: pulumi.Int(9080),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tMaintenanceWindow: \u0026dataproc.MetastoreServiceMaintenanceWindowArgs{\n\t\t\t\tHourOfDay: pulumi.Int(2),\n\t\t\t\tDayOfWeek: pulumi.String(\"SUNDAY\"),\n\t\t\t},\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dataproc-batch\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t\t\"spark:spark.history.fs.logDirectory\": bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/*/spark-job-history\", name), 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\tEndpointConfig: \u0026dataproc.ClusterClusterConfigEndpointConfigArgs{\n\t\t\t\t\tEnableHttpPortAccess: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-2\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetastoreConfig: \u0026dataproc.ClusterClusterConfigMetastoreConfigArgs{\n\t\t\t\t\tDataprocMetastoreService: ms.Name,\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 = dataproc.NewBatch(ctx, \"example_batch_spark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"dataproc-batch\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(\"2.2\"),\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t\tKmsKey: cryptoKey.ID(),\n\t\t\t\t\tNetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\t\tStagingBucket: bucket.Name,\n\t\t\t\t},\n\t\t\t\tPeripheralsConfig: \u0026dataproc.BatchEnvironmentConfigPeripheralsConfigArgs{\n\t\t\t\t\tMetastoreService: ms.Name,\n\t\t\t\t\tSparkHistoryServerConfig: \u0026dataproc.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs{\n\t\t\t\t\t\tDataprocCluster: basic.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember1,\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.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigEndpointConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigPeripheralsConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\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 project = OrganizationsFunctions.getProject();\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .uniformBucketLevelAccess(true)\n .name(\"dataproc-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var cryptoKeyMember1 = new CryptoKeyIAMMember(\"cryptoKeyMember1\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@dataproc-accounts.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var ms = new MetastoreService(\"ms\", MetastoreServiceArgs.builder()\n .serviceId(\"dataproc-batch\")\n .location(\"us-central1\")\n .port(9080)\n .tier(\"DEVELOPER\")\n .maintenanceWindow(MetastoreServiceMaintenanceWindowArgs.builder()\n .hourOfDay(2)\n .dayOfWeek(\"SUNDAY\")\n .build())\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .build());\n\n var basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"dataproc-batch\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.ofEntries(\n Map.entry(\"dataproc:dataproc.allow.zero.workers\", \"true\"),\n Map.entry(\"spark:spark.history.fs.logDirectory\", bucket.name().applyValue(name -\u003e String.format(\"gs://%s/*/spark-job-history\", name)))\n ))\n .build())\n .endpointConfig(ClusterClusterConfigEndpointConfigArgs.builder()\n .enableHttpPortAccess(true)\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-standard-2\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(35)\n .build())\n .build())\n .metastoreConfig(ClusterClusterConfigMetastoreConfigArgs.builder()\n .dataprocMetastoreService(ms.name())\n .build())\n .build())\n .build());\n\n var exampleBatchSpark = new Batch(\"exampleBatchSpark\", BatchArgs.builder()\n .batchId(\"dataproc-batch\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .version(\"2.2\")\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .kmsKey(cryptoKey.id())\n .networkUri(\"default\")\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .stagingBucket(bucket.name())\n .build())\n .peripheralsConfig(BatchEnvironmentConfigPeripheralsConfigArgs.builder()\n .metastoreService(ms.name())\n .sparkHistoryServerConfig(BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSpark:\n type: gcp:dataproc:Batch\n name: example_batch_spark\n properties:\n batchId: dataproc-batch\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n version: '2.2'\n environmentConfig:\n executionConfig:\n ttl: 3600s\n networkTags:\n - tag1\n kmsKey: ${cryptoKey.id}\n networkUri: default\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n stagingBucket: ${bucket.name}\n peripheralsConfig:\n metastoreService: ${ms.name}\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n options:\n dependson:\n - ${cryptoKeyMember1}\n bucket:\n type: gcp:storage:Bucket\n properties:\n uniformBucketLevelAccess: true\n name: dataproc-bucket\n location: US\n forceDestroy: true\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us-central1\n cryptoKeyMember1:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member_1\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: dataproc-batch\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n spark:spark.history.fs.logDirectory: gs://${bucket.name}/*/spark-job-history\n endpointConfig:\n enableHttpPortAccess: true\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n metastoreConfig:\n dataprocMetastoreService: ${ms.name}\n ms:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: dataproc-batch\n location: us-central1\n port: 9080\n tier: DEVELOPER\n maintenanceWindow:\n hourOfDay: 2\n dayOfWeek: SUNDAY\n hiveMetastoreConfig:\n version: 3.1.2\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Sparksql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSparsql = new gcp.dataproc.Batch(\"example_batch_sparsql\", {\n batchId: \"tf-test-batch_88722\",\n location: \"us-central1\",\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n },\n },\n sparkSqlBatch: {\n queryFileUri: \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n queryVariables: {\n name: \"value\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_sparsql = gcp.dataproc.Batch(\"example_batch_sparsql\",\n batch_id=\"tf-test-batch_88722\",\n location=\"us-central1\",\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n },\n },\n spark_sql_batch={\n \"query_file_uri\": \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"query_variables\": {\n \"name\": \"value\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSparsql = new Gcp.Dataproc.Batch(\"example_batch_sparsql\", new()\n {\n BatchId = \"tf-test-batch_88722\",\n Location = \"us-central1\",\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n },\n },\n SparkSqlBatch = new Gcp.Dataproc.Inputs.BatchSparkSqlBatchArgs\n {\n QueryFileUri = \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n QueryVariables = \n {\n { \"name\", \"value\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewBatch(ctx, \"example_batch_sparsql\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_88722\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkSqlBatch: \u0026dataproc.BatchSparkSqlBatchArgs{\n\t\t\t\tQueryFileUri: pulumi.String(\"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\"),\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tQueryVariables: pulumi.StringMap{\n\t\t\t\t\t\"name\": pulumi.String(\"value\"),\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.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkSqlBatchArgs;\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 exampleBatchSparsql = new Batch(\"exampleBatchSparsql\", BatchArgs.builder()\n .batchId(\"tf-test-batch_88722\")\n .location(\"us-central1\")\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .build())\n .build())\n .sparkSqlBatch(BatchSparkSqlBatchArgs.builder()\n .queryFileUri(\"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .queryVariables(Map.of(\"name\", \"value\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSparsql:\n type: gcp:dataproc:Batch\n name: example_batch_sparsql\n properties:\n batchId: tf-test-batch_88722\n location: us-central1\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n sparkSqlBatch:\n queryFileUri: gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n queryVariables:\n name: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchPyspark = new gcp.dataproc.Batch(\"example_batch_pyspark\", {\n batchId: \"tf-test-batch_39249\",\n location: \"us-central1\",\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n },\n },\n pysparkBatch: {\n mainPythonFileUri: \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n pythonFileUris: [\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"],\n archiveUris: [\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n ],\n fileUris: [\"https://storage.googleapis.com/terraform-batches/people.txt\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_pyspark = gcp.dataproc.Batch(\"example_batch_pyspark\",\n batch_id=\"tf-test-batch_39249\",\n location=\"us-central1\",\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n },\n },\n pyspark_batch={\n \"main_python_file_uri\": \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"python_file_uris\": [\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"],\n \"archive_uris\": [\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n ],\n \"file_uris\": [\"https://storage.googleapis.com/terraform-batches/people.txt\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchPyspark = new Gcp.Dataproc.Batch(\"example_batch_pyspark\", new()\n {\n BatchId = \"tf-test-batch_39249\",\n Location = \"us-central1\",\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n },\n },\n PysparkBatch = new Gcp.Dataproc.Inputs.BatchPysparkBatchArgs\n {\n MainPythonFileUri = \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n PythonFileUris = new[]\n {\n \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n ArchiveUris = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n },\n FileUris = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/people.txt\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewBatch(ctx, \"example_batch_pyspark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_39249\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPysparkBatch: \u0026dataproc.BatchPysparkBatchArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"https://storage.googleapis.com/terraform-batches/test_util.py\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tPythonFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\"),\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt.jar\"),\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/people.txt\"),\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.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchPysparkBatchArgs;\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 exampleBatchPyspark = new Batch(\"exampleBatchPyspark\", BatchArgs.builder()\n .batchId(\"tf-test-batch_39249\")\n .location(\"us-central1\")\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .build())\n .build())\n .pysparkBatch(BatchPysparkBatchArgs.builder()\n .mainPythonFileUri(\"https://storage.googleapis.com/terraform-batches/test_util.py\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .pythonFileUris(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .archiveUris( \n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\")\n .fileUris(\"https://storage.googleapis.com/terraform-batches/people.txt\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchPyspark:\n type: gcp:dataproc:Batch\n name: example_batch_pyspark\n properties:\n batchId: tf-test-batch_39249\n location: us-central1\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n pysparkBatch:\n mainPythonFileUri: https://storage.googleapis.com/terraform-batches/test_util.py\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n pythonFileUris:\n - gs://dataproc-examples/pyspark/hello-world/hello-world.py\n archiveUris:\n - https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\n - https://storage.googleapis.com/terraform-batches/animals.txt.jar\n - https://storage.googleapis.com/terraform-batches/animals.txt\n fileUris:\n - https://storage.googleapis.com/terraform-batches/people.txt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Sparkr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSparkr = new gcp.dataproc.Batch(\"example_batch_sparkr\", {\n batchId: \"tf-test-batch_74391\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n },\n },\n sparkRBatch: {\n mainRFileUri: \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n args: [\"https://storage.googleapis.com/terraform-batches/flights.csv\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_sparkr = gcp.dataproc.Batch(\"example_batch_sparkr\",\n batch_id=\"tf-test-batch_74391\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n },\n },\n spark_r_batch={\n \"main_r_file_uri\": \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n \"args\": [\"https://storage.googleapis.com/terraform-batches/flights.csv\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSparkr = new Gcp.Dataproc.Batch(\"example_batch_sparkr\", new()\n {\n BatchId = \"tf-test-batch_74391\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n },\n },\n SparkRBatch = new Gcp.Dataproc.Inputs.BatchSparkRBatchArgs\n {\n MainRFileUri = \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n Args = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/flights.csv\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewBatch(ctx, \"example_batch_sparkr\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_74391\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkRBatch: \u0026dataproc.BatchSparkRBatchArgs{\n\t\t\t\tMainRFileUri: pulumi.String(\"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/flights.csv\"),\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.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkRBatchArgs;\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 exampleBatchSparkr = new Batch(\"exampleBatchSparkr\", BatchArgs.builder()\n .batchId(\"tf-test-batch_74391\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .build())\n .build())\n .sparkRBatch(BatchSparkRBatchArgs.builder()\n .mainRFileUri(\"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\")\n .args(\"https://storage.googleapis.com/terraform-batches/flights.csv\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSparkr:\n type: gcp:dataproc:Batch\n name: example_batch_sparkr\n properties:\n batchId: tf-test-batch_74391\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n networkTags:\n - tag1\n sparkRBatch:\n mainRFileUri: https://storage.googleapis.com/terraform-batches/spark-r-flights.r\n args:\n - https://storage.googleapis.com/terraform-batches/flights.csv\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBatch can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/batches/{{batch_id}}`\n\n* `{{project}}/{{location}}/{{batch_id}}`\n\n* `{{location}}/{{batch_id}}`\n\nWhen using the `pulumi import` command, Batch can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default projects/{{project}}/locations/{{location}}/batches/{{batch_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default {{project}}/{{location}}/{{batch_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default {{location}}/{{batch_id}}\n```\n\n", "properties": { "batchId": { "type": "string", @@ -189560,7 +189560,7 @@ } }, "gcp:dataproc/cluster:Cluster": { - "description": "Manages a Cloud Dataproc cluster resource within GCP.\n\n* [API documentation](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataproc/docs)\n\n\n!\u003e **Warning:** Due to limitations of the API, all arguments except\n`labels`,`cluster_config.worker_config.num_instances` and `cluster_config.preemptible_worker_config.num_instances` are non-updatable. Changing `cluster_config.worker_config.min_num_instances` will be ignored. Changing others will cause recreation of the\nwhole cluster!\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst simplecluster = new gcp.dataproc.Cluster(\"simplecluster\", {\n name: \"simplecluster\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsimplecluster = gcp.dataproc.Cluster(\"simplecluster\",\n name=\"simplecluster\",\n region=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var simplecluster = new Gcp.Dataproc.Cluster(\"simplecluster\", new()\n {\n Name = \"simplecluster\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewCluster(ctx, \"simplecluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"simplecluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\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.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\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 simplecluster = new Cluster(\"simplecluster\", ClusterArgs.builder()\n .name(\"simplecluster\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n simplecluster:\n type: gcp:dataproc:Cluster\n properties:\n name: simplecluster\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Advanced\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"mycluster\",\n region: \"us-central1\",\n gracefulDecommissionTimeout: \"120s\",\n labels: {\n foo: \"bar\",\n },\n clusterConfig: {\n stagingBucket: \"dataproc-staging-bucket\",\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-medium\",\n diskConfig: {\n bootDiskType: \"pd-ssd\",\n bootDiskSizeGb: 30,\n },\n },\n workerConfig: {\n numInstances: 2,\n machineType: \"e2-medium\",\n minCpuPlatform: \"Intel Skylake\",\n diskConfig: {\n bootDiskSizeGb: 30,\n numLocalSsds: 1,\n },\n },\n preemptibleWorkerConfig: {\n numInstances: 0,\n },\n softwareConfig: {\n imageVersion: \"2.0.35-debian10\",\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n gceClusterConfig: {\n tags: [\n \"foo\",\n \"bar\",\n ],\n serviceAccount: _default.email,\n serviceAccountScopes: [\"cloud-platform\"],\n },\n initializationActions: [{\n script: \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n timeoutSec: 500,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"mycluster\",\n region=\"us-central1\",\n graceful_decommission_timeout=\"120s\",\n labels={\n \"foo\": \"bar\",\n },\n cluster_config={\n \"staging_bucket\": \"dataproc-staging-bucket\",\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-medium\",\n \"disk_config\": {\n \"boot_disk_type\": \"pd-ssd\",\n \"boot_disk_size_gb\": 30,\n },\n },\n \"worker_config\": {\n \"num_instances\": 2,\n \"machine_type\": \"e2-medium\",\n \"min_cpu_platform\": \"Intel Skylake\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 30,\n \"num_local_ssds\": 1,\n },\n },\n \"preemptible_worker_config\": {\n \"num_instances\": 0,\n },\n \"software_config\": {\n \"image_version\": \"2.0.35-debian10\",\n \"override_properties\": {\n \"dataproc_dataproc_allow_zero_workers\": \"true\",\n },\n },\n \"gce_cluster_config\": {\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n \"service_account\": default.email,\n \"service_account_scopes\": [\"cloud-platform\"],\n },\n \"initialization_actions\": [{\n \"script\": \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n \"timeout_sec\": 500,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"mycluster\",\n Region = \"us-central1\",\n GracefulDecommissionTimeout = \"120s\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n StagingBucket = \"dataproc-staging-bucket\",\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-medium\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskType = \"pd-ssd\",\n BootDiskSizeGb = 30,\n },\n },\n WorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigArgs\n {\n NumInstances = 2,\n MachineType = \"e2-medium\",\n MinCpuPlatform = \"Intel Skylake\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs\n {\n BootDiskSizeGb = 30,\n NumLocalSsds = 1,\n },\n },\n PreemptibleWorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs\n {\n NumInstances = 0,\n },\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n ImageVersion = \"2.0.35-debian10\",\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n ServiceAccount = @default.Email,\n ServiceAccountScopes = new[]\n {\n \"cloud-platform\",\n },\n },\n InitializationActions = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigInitializationActionArgs\n {\n Script = \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n TimeoutSec = 500,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\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 := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"mycluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGracefulDecommissionTimeout: pulumi.String(\"120s\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tStagingBucket: pulumi.String(\"dataproc-staging-bucket\"),\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(2),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tMinCpuPlatform: pulumi.String(\"Intel Skylake\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\tNumLocalSsds: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreemptibleWorkerConfig: \u0026dataproc.ClusterClusterConfigPreemptibleWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"2.0.35-debian10\"),\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t},\n\t\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\t\tServiceAccountScopes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInitializationActions: dataproc.ClusterClusterConfigInitializationActionArray{\n\t\t\t\t\t\u0026dataproc.ClusterClusterConfigInitializationActionArgs{\n\t\t\t\t\t\tScript: pulumi.String(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\"),\n\t\t\t\t\t\tTimeoutSec: pulumi.Int(500),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\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 default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"mycluster\")\n .region(\"us-central1\")\n .gracefulDecommissionTimeout(\"120s\")\n .labels(Map.of(\"foo\", \"bar\"))\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .stagingBucket(\"dataproc-staging-bucket\")\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-medium\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskType(\"pd-ssd\")\n .bootDiskSizeGb(30)\n .build())\n .build())\n .workerConfig(ClusterClusterConfigWorkerConfigArgs.builder()\n .numInstances(2)\n .machineType(\"e2-medium\")\n .minCpuPlatform(\"Intel Skylake\")\n .diskConfig(ClusterClusterConfigWorkerConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(30)\n .numLocalSsds(1)\n .build())\n .build())\n .preemptibleWorkerConfig(ClusterClusterConfigPreemptibleWorkerConfigArgs.builder()\n .numInstances(0)\n .build())\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .imageVersion(\"2.0.35-debian10\")\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .tags( \n \"foo\",\n \"bar\")\n .serviceAccount(default_.email())\n .serviceAccountScopes(\"cloud-platform\")\n .build())\n .initializationActions(ClusterClusterConfigInitializationActionArgs.builder()\n .script(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\")\n .timeoutSec(500)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: mycluster\n region: us-central1\n gracefulDecommissionTimeout: 120s\n labels:\n foo: bar\n clusterConfig:\n stagingBucket: dataproc-staging-bucket\n masterConfig:\n numInstances: 1\n machineType: e2-medium\n diskConfig:\n bootDiskType: pd-ssd\n bootDiskSizeGb: 30\n workerConfig:\n numInstances: 2\n machineType: e2-medium\n minCpuPlatform: Intel Skylake\n diskConfig:\n bootDiskSizeGb: 30\n numLocalSsds: 1\n preemptibleWorkerConfig:\n numInstances: 0\n softwareConfig:\n imageVersion: 2.0.35-debian10\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n gceClusterConfig:\n tags:\n - foo\n - bar\n serviceAccount: ${default.email}\n serviceAccountScopes:\n - cloud-platform\n initializationActions:\n - script: gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\n timeoutSec: 500\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using A GPU Accelerator\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst acceleratedCluster = new gcp.dataproc.Cluster(\"accelerated_cluster\", {\n name: \"my-cluster-with-gpu\",\n region: \"us-central1\",\n clusterConfig: {\n gceClusterConfig: {\n zone: \"us-central1-a\",\n },\n masterConfig: {\n accelerators: [{\n acceleratorType: \"nvidia-tesla-k80\",\n acceleratorCount: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccelerated_cluster = gcp.dataproc.Cluster(\"accelerated_cluster\",\n name=\"my-cluster-with-gpu\",\n region=\"us-central1\",\n cluster_config={\n \"gce_cluster_config\": {\n \"zone\": \"us-central1-a\",\n },\n \"master_config\": {\n \"accelerators\": [{\n \"accelerator_type\": \"nvidia-tesla-k80\",\n \"accelerator_count\": 1,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var acceleratedCluster = new Gcp.Dataproc.Cluster(\"accelerated_cluster\", new()\n {\n Name = \"my-cluster-with-gpu\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Zone = \"us-central1-a\",\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n Accelerators = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigAcceleratorArgs\n {\n AcceleratorType = \"nvidia-tesla-k80\",\n AcceleratorCount = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewCluster(ctx, \"accelerated_cluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster-with-gpu\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tAccelerators: dataproc.ClusterClusterConfigMasterConfigAcceleratorArray{\n\t\t\t\t\t\t\u0026dataproc.ClusterClusterConfigMasterConfigAcceleratorArgs{\n\t\t\t\t\t\t\tAcceleratorType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\t\tAcceleratorCount: pulumi.Int(1),\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.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\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 acceleratedCluster = new Cluster(\"acceleratedCluster\", ClusterArgs.builder()\n .name(\"my-cluster-with-gpu\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .zone(\"us-central1-a\")\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .accelerators(ClusterClusterConfigMasterConfigAcceleratorArgs.builder()\n .acceleratorType(\"nvidia-tesla-k80\")\n .acceleratorCount(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n acceleratedCluster:\n type: gcp:dataproc:Cluster\n name: accelerated_cluster\n properties:\n name: my-cluster-with-gpu\n region: us-central1\n clusterConfig:\n gceClusterConfig:\n zone: us-central1-a\n masterConfig:\n accelerators:\n - acceleratorType: nvidia-tesla-k80\n acceleratorCount: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Manages a Cloud Dataproc cluster resource within GCP.\n\n* [API documentation](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataproc/docs)\n\n\n!\u003e **Warning:** Due to limitations of the API, all arguments except\n`labels`,`cluster_config.worker_config.num_instances` and `cluster_config.preemptible_worker_config.num_instances` are non-updatable. Changing `cluster_config.worker_config.min_num_instances` will be ignored. Changing others will cause recreation of the\nwhole cluster!\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst simplecluster = new gcp.dataproc.Cluster(\"simplecluster\", {\n name: \"simplecluster\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsimplecluster = gcp.dataproc.Cluster(\"simplecluster\",\n name=\"simplecluster\",\n region=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var simplecluster = new Gcp.Dataproc.Cluster(\"simplecluster\", new()\n {\n Name = \"simplecluster\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewCluster(ctx, \"simplecluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"simplecluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\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.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\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 simplecluster = new Cluster(\"simplecluster\", ClusterArgs.builder()\n .name(\"simplecluster\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n simplecluster:\n type: gcp:dataproc:Cluster\n properties:\n name: simplecluster\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Advanced\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"mycluster\",\n region: \"us-central1\",\n gracefulDecommissionTimeout: \"120s\",\n labels: {\n foo: \"bar\",\n },\n clusterConfig: {\n stagingBucket: \"dataproc-staging-bucket\",\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-medium\",\n diskConfig: {\n bootDiskType: \"pd-ssd\",\n bootDiskSizeGb: 30,\n },\n },\n workerConfig: {\n numInstances: 2,\n machineType: \"e2-medium\",\n minCpuPlatform: \"Intel Skylake\",\n diskConfig: {\n bootDiskSizeGb: 30,\n numLocalSsds: 1,\n },\n },\n preemptibleWorkerConfig: {\n numInstances: 0,\n },\n softwareConfig: {\n imageVersion: \"2.0.35-debian10\",\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n gceClusterConfig: {\n tags: [\n \"foo\",\n \"bar\",\n ],\n serviceAccount: _default.email,\n serviceAccountScopes: [\"cloud-platform\"],\n },\n initializationActions: [{\n script: \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n timeoutSec: 500,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"mycluster\",\n region=\"us-central1\",\n graceful_decommission_timeout=\"120s\",\n labels={\n \"foo\": \"bar\",\n },\n cluster_config={\n \"staging_bucket\": \"dataproc-staging-bucket\",\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-medium\",\n \"disk_config\": {\n \"boot_disk_type\": \"pd-ssd\",\n \"boot_disk_size_gb\": 30,\n },\n },\n \"worker_config\": {\n \"num_instances\": 2,\n \"machine_type\": \"e2-medium\",\n \"min_cpu_platform\": \"Intel Skylake\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 30,\n \"num_local_ssds\": 1,\n },\n },\n \"preemptible_worker_config\": {\n \"num_instances\": 0,\n },\n \"software_config\": {\n \"image_version\": \"2.0.35-debian10\",\n \"override_properties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n \"gce_cluster_config\": {\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n \"service_account\": default.email,\n \"service_account_scopes\": [\"cloud-platform\"],\n },\n \"initialization_actions\": [{\n \"script\": \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n \"timeout_sec\": 500,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"mycluster\",\n Region = \"us-central1\",\n GracefulDecommissionTimeout = \"120s\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n StagingBucket = \"dataproc-staging-bucket\",\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-medium\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskType = \"pd-ssd\",\n BootDiskSizeGb = 30,\n },\n },\n WorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigArgs\n {\n NumInstances = 2,\n MachineType = \"e2-medium\",\n MinCpuPlatform = \"Intel Skylake\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs\n {\n BootDiskSizeGb = 30,\n NumLocalSsds = 1,\n },\n },\n PreemptibleWorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs\n {\n NumInstances = 0,\n },\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n ImageVersion = \"2.0.35-debian10\",\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n ServiceAccount = @default.Email,\n ServiceAccountScopes = new[]\n {\n \"cloud-platform\",\n },\n },\n InitializationActions = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigInitializationActionArgs\n {\n Script = \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n TimeoutSec = 500,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\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 := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"mycluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGracefulDecommissionTimeout: pulumi.String(\"120s\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tStagingBucket: pulumi.String(\"dataproc-staging-bucket\"),\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(2),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tMinCpuPlatform: pulumi.String(\"Intel Skylake\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\tNumLocalSsds: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreemptibleWorkerConfig: \u0026dataproc.ClusterClusterConfigPreemptibleWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"2.0.35-debian10\"),\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t},\n\t\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\t\tServiceAccountScopes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInitializationActions: dataproc.ClusterClusterConfigInitializationActionArray{\n\t\t\t\t\t\u0026dataproc.ClusterClusterConfigInitializationActionArgs{\n\t\t\t\t\t\tScript: pulumi.String(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\"),\n\t\t\t\t\t\tTimeoutSec: pulumi.Int(500),\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.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\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 default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"mycluster\")\n .region(\"us-central1\")\n .gracefulDecommissionTimeout(\"120s\")\n .labels(Map.of(\"foo\", \"bar\"))\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .stagingBucket(\"dataproc-staging-bucket\")\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-medium\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskType(\"pd-ssd\")\n .bootDiskSizeGb(30)\n .build())\n .build())\n .workerConfig(ClusterClusterConfigWorkerConfigArgs.builder()\n .numInstances(2)\n .machineType(\"e2-medium\")\n .minCpuPlatform(\"Intel Skylake\")\n .diskConfig(ClusterClusterConfigWorkerConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(30)\n .numLocalSsds(1)\n .build())\n .build())\n .preemptibleWorkerConfig(ClusterClusterConfigPreemptibleWorkerConfigArgs.builder()\n .numInstances(0)\n .build())\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .imageVersion(\"2.0.35-debian10\")\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .tags( \n \"foo\",\n \"bar\")\n .serviceAccount(default_.email())\n .serviceAccountScopes(\"cloud-platform\")\n .build())\n .initializationActions(ClusterClusterConfigInitializationActionArgs.builder()\n .script(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\")\n .timeoutSec(500)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: mycluster\n region: us-central1\n gracefulDecommissionTimeout: 120s\n labels:\n foo: bar\n clusterConfig:\n stagingBucket: dataproc-staging-bucket\n masterConfig:\n numInstances: 1\n machineType: e2-medium\n diskConfig:\n bootDiskType: pd-ssd\n bootDiskSizeGb: 30\n workerConfig:\n numInstances: 2\n machineType: e2-medium\n minCpuPlatform: Intel Skylake\n diskConfig:\n bootDiskSizeGb: 30\n numLocalSsds: 1\n preemptibleWorkerConfig:\n numInstances: 0\n softwareConfig:\n imageVersion: 2.0.35-debian10\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n gceClusterConfig:\n tags:\n - foo\n - bar\n serviceAccount: ${default.email}\n serviceAccountScopes:\n - cloud-platform\n initializationActions:\n - script: gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\n timeoutSec: 500\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using A GPU Accelerator\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst acceleratedCluster = new gcp.dataproc.Cluster(\"accelerated_cluster\", {\n name: \"my-cluster-with-gpu\",\n region: \"us-central1\",\n clusterConfig: {\n gceClusterConfig: {\n zone: \"us-central1-a\",\n },\n masterConfig: {\n accelerators: [{\n acceleratorType: \"nvidia-tesla-k80\",\n acceleratorCount: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccelerated_cluster = gcp.dataproc.Cluster(\"accelerated_cluster\",\n name=\"my-cluster-with-gpu\",\n region=\"us-central1\",\n cluster_config={\n \"gce_cluster_config\": {\n \"zone\": \"us-central1-a\",\n },\n \"master_config\": {\n \"accelerators\": [{\n \"accelerator_type\": \"nvidia-tesla-k80\",\n \"accelerator_count\": 1,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var acceleratedCluster = new Gcp.Dataproc.Cluster(\"accelerated_cluster\", new()\n {\n Name = \"my-cluster-with-gpu\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Zone = \"us-central1-a\",\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n Accelerators = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigAcceleratorArgs\n {\n AcceleratorType = \"nvidia-tesla-k80\",\n AcceleratorCount = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\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 := dataproc.NewCluster(ctx, \"accelerated_cluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster-with-gpu\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tAccelerators: dataproc.ClusterClusterConfigMasterConfigAcceleratorArray{\n\t\t\t\t\t\t\u0026dataproc.ClusterClusterConfigMasterConfigAcceleratorArgs{\n\t\t\t\t\t\t\tAcceleratorType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\t\tAcceleratorCount: pulumi.Int(1),\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.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\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 acceleratedCluster = new Cluster(\"acceleratedCluster\", ClusterArgs.builder()\n .name(\"my-cluster-with-gpu\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .zone(\"us-central1-a\")\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .accelerators(ClusterClusterConfigMasterConfigAcceleratorArgs.builder()\n .acceleratorType(\"nvidia-tesla-k80\")\n .acceleratorCount(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n acceleratedCluster:\n type: gcp:dataproc:Cluster\n name: accelerated_cluster\n properties:\n name: my-cluster-with-gpu\n region: us-central1\n clusterConfig:\n gceClusterConfig:\n zone: us-central1-a\n masterConfig:\n accelerators:\n - acceleratorType: nvidia-tesla-k80\n acceleratorCount: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "clusterConfig": { "$ref": "#/types/gcp:dataproc/ClusterClusterConfig:ClusterClusterConfig", @@ -190032,7 +190032,7 @@ } }, "gcp:dataproc/job:Job": { - "description": "Manages a job resource within a Dataproc cluster within GCE. For more information see\n[the official dataproc documentation](https://cloud.google.com/dataproc/).\n\n!\u003e **Note:** This resource does not support 'update' and changing any attributes will cause the resource to be recreated.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"dproc-cluster-unique-name\",\n region: \"us-central1\",\n});\n// Submit an example spark job to a dataproc cluster\nconst spark = new gcp.dataproc.Job(\"spark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n sparkConfig: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n args: [\"1000\"],\n properties: {\n \"spark.logConf\": \"true\",\n },\n loggingConfig: {\n driverLogLevels: {\n root: \"INFO\",\n },\n },\n },\n});\n// Submit an example pyspark job to a dataproc cluster\nconst pyspark = new gcp.dataproc.Job(\"pyspark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n pysparkConfig: {\n mainPythonFileUri: \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n properties: {\n \"spark.logConf\": \"true\",\n },\n },\n});\nexport const sparkStatus = spark.statuses.apply(statuses =\u003e statuses[0].state);\nexport const pysparkStatus = pyspark.statuses.apply(statuses =\u003e statuses[0].state);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"dproc-cluster-unique-name\",\n region=\"us-central1\")\n# Submit an example spark job to a dataproc cluster\nspark = gcp.dataproc.Job(\"spark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n spark_config={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"args\": [\"1000\"],\n \"properties\": {\n \"spark_log_conf\": \"true\",\n },\n \"logging_config\": {\n \"driver_log_levels\": {\n \"root\": \"INFO\",\n },\n },\n })\n# Submit an example pyspark job to a dataproc cluster\npyspark = gcp.dataproc.Job(\"pyspark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n pyspark_config={\n \"main_python_file_uri\": \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n \"properties\": {\n \"spark_log_conf\": \"true\",\n },\n })\npulumi.export(\"sparkStatus\", spark.statuses[0].state)\npulumi.export(\"pysparkStatus\", pyspark.statuses[0].state)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"dproc-cluster-unique-name\",\n Region = \"us-central1\",\n });\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Gcp.Dataproc.Job(\"spark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n SparkConfig = new Gcp.Dataproc.Inputs.JobSparkConfigArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n Args = new[]\n {\n \"1000\",\n },\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n LoggingConfig = new Gcp.Dataproc.Inputs.JobSparkConfigLoggingConfigArgs\n {\n DriverLogLevels = \n {\n { \"root\", \"INFO\" },\n },\n },\n },\n });\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Gcp.Dataproc.Job(\"pyspark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n PysparkConfig = new Gcp.Dataproc.Inputs.JobPysparkConfigArgs\n {\n MainPythonFileUri = \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sparkStatus\"] = spark.Statuses.Apply(statuses =\u003e statuses[0].State),\n [\"pysparkStatus\"] = pyspark.Statuses.Apply(statuses =\u003e statuses[0].State),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmycluster, err := dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dproc-cluster-unique-name\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Submit an example spark job to a dataproc cluster\n\t\tspark, err := dataproc.NewJob(ctx, \"spark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tSparkConfig: \u0026dataproc.JobSparkConfigArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tLoggingConfig: \u0026dataproc.JobSparkConfigLoggingConfigArgs{\n\t\t\t\t\tDriverLogLevels: pulumi.StringMap{\n\t\t\t\t\t\t\"root\": pulumi.String(\"INFO\"),\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// Submit an example pyspark job to a dataproc cluster\n\t\tpyspark, err := dataproc.NewJob(ctx, \"pyspark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tPysparkConfig: \u0026dataproc.JobPysparkConfigArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\"),\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\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\tctx.Export(\"sparkStatus\", spark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"pysparkStatus\", pyspark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\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.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.Job;\nimport com.pulumi.gcp.dataproc.JobArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPlacementArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigLoggingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPysparkConfigArgs;\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 mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"dproc-cluster-unique-name\")\n .region(\"us-central1\")\n .build());\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Job(\"spark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .sparkConfig(JobSparkConfigArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .args(\"1000\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .loggingConfig(JobSparkConfigLoggingConfigArgs.builder()\n .driverLogLevels(Map.of(\"root\", \"INFO\"))\n .build())\n .build())\n .build());\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Job(\"pyspark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .pysparkConfig(JobPysparkConfigArgs.builder()\n .mainPythonFileUri(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .build())\n .build());\n\n ctx.export(\"sparkStatus\", spark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n ctx.export(\"pysparkStatus\", pyspark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n }\n}\n```\n```yaml\nresources:\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: dproc-cluster-unique-name\n region: us-central1\n # Submit an example spark job to a dataproc cluster\n spark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n sparkConfig:\n mainClass: org.apache.spark.examples.SparkPi\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n args:\n - '1000'\n properties:\n spark.logConf: 'true'\n loggingConfig:\n driverLogLevels:\n root: INFO\n # Submit an example pyspark job to a dataproc cluster\n pyspark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n pysparkConfig:\n mainPythonFileUri: gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\n properties:\n spark.logConf: 'true'\noutputs:\n # Check out current state of the jobs\n sparkStatus: ${spark.statuses[0].state}\n pysparkStatus: ${pyspark.statuses[0].state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Manages a job resource within a Dataproc cluster within GCE. For more information see\n[the official dataproc documentation](https://cloud.google.com/dataproc/).\n\n!\u003e **Note:** This resource does not support 'update' and changing any attributes will cause the resource to be recreated.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"dproc-cluster-unique-name\",\n region: \"us-central1\",\n});\n// Submit an example spark job to a dataproc cluster\nconst spark = new gcp.dataproc.Job(\"spark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n sparkConfig: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n args: [\"1000\"],\n properties: {\n \"spark.logConf\": \"true\",\n },\n loggingConfig: {\n driverLogLevels: {\n root: \"INFO\",\n },\n },\n },\n});\n// Submit an example pyspark job to a dataproc cluster\nconst pyspark = new gcp.dataproc.Job(\"pyspark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n pysparkConfig: {\n mainPythonFileUri: \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n properties: {\n \"spark.logConf\": \"true\",\n },\n },\n});\nexport const sparkStatus = spark.statuses.apply(statuses =\u003e statuses[0].state);\nexport const pysparkStatus = pyspark.statuses.apply(statuses =\u003e statuses[0].state);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"dproc-cluster-unique-name\",\n region=\"us-central1\")\n# Submit an example spark job to a dataproc cluster\nspark = gcp.dataproc.Job(\"spark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n spark_config={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"args\": [\"1000\"],\n \"properties\": {\n \"spark.logConf\": \"true\",\n },\n \"logging_config\": {\n \"driver_log_levels\": {\n \"root\": \"INFO\",\n },\n },\n })\n# Submit an example pyspark job to a dataproc cluster\npyspark = gcp.dataproc.Job(\"pyspark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n pyspark_config={\n \"main_python_file_uri\": \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n \"properties\": {\n \"spark.logConf\": \"true\",\n },\n })\npulumi.export(\"sparkStatus\", spark.statuses[0].state)\npulumi.export(\"pysparkStatus\", pyspark.statuses[0].state)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"dproc-cluster-unique-name\",\n Region = \"us-central1\",\n });\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Gcp.Dataproc.Job(\"spark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n SparkConfig = new Gcp.Dataproc.Inputs.JobSparkConfigArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n Args = new[]\n {\n \"1000\",\n },\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n LoggingConfig = new Gcp.Dataproc.Inputs.JobSparkConfigLoggingConfigArgs\n {\n DriverLogLevels = \n {\n { \"root\", \"INFO\" },\n },\n },\n },\n });\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Gcp.Dataproc.Job(\"pyspark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n PysparkConfig = new Gcp.Dataproc.Inputs.JobPysparkConfigArgs\n {\n MainPythonFileUri = \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sparkStatus\"] = spark.Statuses.Apply(statuses =\u003e statuses[0].State),\n [\"pysparkStatus\"] = pyspark.Statuses.Apply(statuses =\u003e statuses[0].State),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmycluster, err := dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dproc-cluster-unique-name\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Submit an example spark job to a dataproc cluster\n\t\tspark, err := dataproc.NewJob(ctx, \"spark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tSparkConfig: \u0026dataproc.JobSparkConfigArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tLoggingConfig: \u0026dataproc.JobSparkConfigLoggingConfigArgs{\n\t\t\t\t\tDriverLogLevels: pulumi.StringMap{\n\t\t\t\t\t\t\"root\": pulumi.String(\"INFO\"),\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// Submit an example pyspark job to a dataproc cluster\n\t\tpyspark, err := dataproc.NewJob(ctx, \"pyspark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tPysparkConfig: \u0026dataproc.JobPysparkConfigArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\"),\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\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\tctx.Export(\"sparkStatus\", spark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"pysparkStatus\", pyspark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\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.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.Job;\nimport com.pulumi.gcp.dataproc.JobArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPlacementArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigLoggingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPysparkConfigArgs;\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 mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"dproc-cluster-unique-name\")\n .region(\"us-central1\")\n .build());\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Job(\"spark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .sparkConfig(JobSparkConfigArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .args(\"1000\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .loggingConfig(JobSparkConfigLoggingConfigArgs.builder()\n .driverLogLevels(Map.of(\"root\", \"INFO\"))\n .build())\n .build())\n .build());\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Job(\"pyspark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .pysparkConfig(JobPysparkConfigArgs.builder()\n .mainPythonFileUri(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .build())\n .build());\n\n ctx.export(\"sparkStatus\", spark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n ctx.export(\"pysparkStatus\", pyspark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n }\n}\n```\n```yaml\nresources:\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: dproc-cluster-unique-name\n region: us-central1\n # Submit an example spark job to a dataproc cluster\n spark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n sparkConfig:\n mainClass: org.apache.spark.examples.SparkPi\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n args:\n - '1000'\n properties:\n spark.logConf: 'true'\n loggingConfig:\n driverLogLevels:\n root: INFO\n # Submit an example pyspark job to a dataproc cluster\n pyspark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n pysparkConfig:\n mainPythonFileUri: gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\n properties:\n spark.logConf: 'true'\noutputs:\n # Check out current state of the jobs\n sparkStatus: ${spark.statuses[0].state}\n pysparkStatus: ${pyspark.statuses[0].state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "driverControlsFilesUri": { "type": "string", @@ -194090,7 +194090,7 @@ } }, "gcp:diagflow/cxFlow:CxFlow": { - "description": "Flows represents the conversation flows when you build your chatbot agent.\n\n\nTo get more information about Flow, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Flow Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\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.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dialogflowcx Flow Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n {\n event: \"another-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transitionRoutes: [{\n condition: \"true\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetFlow: agent.startFlow,\n }],\n advancedSettings: {\n audioExportGcsDestination: {\n uri: pulumi.interpolate`${bucket.url}/prefix-`,\n },\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n {\n \"event\": \"another-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transition_routes=[{\n \"condition\": \"true\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_flow\": agent.start_flow,\n }],\n advanced_settings={\n \"audio_export_gcs_destination\": {\n \"uri\": bucket.url.apply(lambda url: f\"{url}/prefix-\"),\n },\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"another-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteArgs\n {\n Condition = \"true\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetFlow = agent.StartFlow,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsArgs\n {\n AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs\n {\n Uri = bucket.Url.Apply(url =\u003e $\"{url}/prefix-\"),\n },\n DtmfSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\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-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"dialogflowcx-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson5 := string(tmpJSON5)\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"another-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\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\tSetParameterActions: diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json2),\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\tTransitionRoutes: diagflow.CxFlowTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxFlowTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"true\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\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\tSetParameterActions: diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\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\tTargetFlow: agent.StartFlow,\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxFlowAdvancedSettingsArgs{\n\t\t\t\tAudioExportGcsDestination: \u0026diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs{\n\t\t\t\t\tUri: bucket.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/prefix-\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDtmfSettings: \u0026diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"another-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .transitionRoutes(CxFlowTransitionRouteArgs.builder()\n .condition(\"true\")\n .triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetFlow(agent.startFlow())\n .build())\n .advancedSettings(CxFlowAdvancedSettingsArgs.builder()\n .audioExportGcsDestination(CxFlowAdvancedSettingsAudioExportGcsDestinationArgs.builder()\n .uri(bucket.url().applyValue(url -\u003e String.format(\"%s/prefix-\", url)))\n .build())\n .dtmfSettings(CxFlowAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n - event: another-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n transitionRoutes:\n - condition: 'true'\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetFlow: ${agent.startFlow}\n advancedSettings:\n audioExportGcsDestination:\n uri: ${bucket.url}/prefix-\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlow can be imported using any of these accepted formats:\n\n* `{{parent}}/flows/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Flow can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/flows/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/{{name}}\n```\n\n", + "description": "Flows represents the conversation flows when you build your chatbot agent.\n\n\nTo get more information about Flow, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Flow Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\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.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dialogflowcx Flow Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n {\n event: \"another-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transitionRoutes: [{\n condition: \"true\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetFlow: agent.startFlow,\n }],\n advancedSettings: {\n audioExportGcsDestination: {\n uri: pulumi.interpolate`${bucket.url}/prefix-`,\n },\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n {\n \"event\": \"another-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transition_routes=[{\n \"condition\": \"true\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_flow\": agent.start_flow,\n }],\n advanced_settings={\n \"audio_export_gcs_destination\": {\n \"uri\": bucket.url.apply(lambda url: f\"{url}/prefix-\"),\n },\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"another-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteArgs\n {\n Condition = \"true\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetFlow = agent.StartFlow,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsArgs\n {\n AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs\n {\n Uri = bucket.Url.Apply(url =\u003e $\"{url}/prefix-\"),\n },\n DtmfSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\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-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"dialogflowcx-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson5 := string(tmpJSON5)\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"another-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\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\tSetParameterActions: diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json2),\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\tTransitionRoutes: diagflow.CxFlowTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxFlowTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"true\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\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\tSetParameterActions: diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\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\tTargetFlow: agent.StartFlow,\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxFlowAdvancedSettingsArgs{\n\t\t\t\tAudioExportGcsDestination: \u0026diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs{\n\t\t\t\t\tUri: bucket.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/prefix-\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDtmfSettings: \u0026diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"another-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .transitionRoutes(CxFlowTransitionRouteArgs.builder()\n .condition(\"true\")\n .triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetFlow(agent.startFlow())\n .build())\n .advancedSettings(CxFlowAdvancedSettingsArgs.builder()\n .audioExportGcsDestination(CxFlowAdvancedSettingsAudioExportGcsDestinationArgs.builder()\n .uri(bucket.url().applyValue(url -\u003e String.format(\"%s/prefix-\", url)))\n .build())\n .dtmfSettings(CxFlowAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n - event: another-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n transitionRoutes:\n - condition: 'true'\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetFlow: ${agent.startFlow}\n advancedSettings:\n audioExportGcsDestination:\n uri: ${bucket.url}/prefix-\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlow can be imported using any of these accepted formats:\n\n* `{{parent}}/flows/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Flow can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/flows/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/{{name}}\n```\n\n", "properties": { "advancedSettings": { "$ref": "#/types/gcp:diagflow/CxFlowAdvancedSettings:CxFlowAdvancedSettings", @@ -194501,7 +194501,7 @@ } }, "gcp:diagflow/cxPage:CxPage": { - "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages.\n\n\nTo get more information about Page, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows.pages)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Page Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst myPage2 = new gcp.diagflow.CxPage(\"my_page2\", {\n parent: agent.startFlow,\n displayName: \"MyPage2\",\n});\nconst myWebhook = new gcp.diagflow.CxWebhook(\"my_webhook\", {\n parent: agent.id,\n displayName: \"MyWebhook\",\n genericWebService: {\n uri: \"https://example.com\",\n },\n});\nconst basicPage = new gcp.diagflow.CxPage(\"basic_page\", {\n parent: agent.startFlow,\n displayName: \"MyPage\",\n entryFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Welcome to page\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n eventHandlers: [{\n event: \"some-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form: {\n parameters: [{\n displayName: \"param1\",\n entityType: \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n defaultValue: JSON.stringify(\"2000-01-01\"),\n fillBehavior: {\n initialPromptFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n repromptEventHandlers: [\n {\n event: \"sys.no-match-1\",\n triggerFulfillment: {\n returnPartialResponses: true,\n webhook: myWebhook.id,\n tag: \"some-tag\",\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n event: \"sys.no-match-2\",\n targetFlow: agent.startFlow,\n },\n {\n event: \"sys.no-match-3\",\n targetPage: myPage2.id,\n },\n ],\n },\n required: true,\n redact: true,\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n }],\n },\n transitionRoutes: [{\n condition: \"$page.params.status = 'FINAL'\",\n triggerFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"information completed, navigating to page 2\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetPage: myPage2.id,\n }],\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nmy_page2 = gcp.diagflow.CxPage(\"my_page2\",\n parent=agent.start_flow,\n display_name=\"MyPage2\")\nmy_webhook = gcp.diagflow.CxWebhook(\"my_webhook\",\n parent=agent.id,\n display_name=\"MyWebhook\",\n generic_web_service={\n \"uri\": \"https://example.com\",\n })\nbasic_page = gcp.diagflow.CxPage(\"basic_page\",\n parent=agent.start_flow,\n display_name=\"MyPage\",\n entry_fulfillment={\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Welcome to page\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n event_handlers=[{\n \"event\": \"some-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form={\n \"parameters\": [{\n \"display_name\": \"param1\",\n \"entity_type\": \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n \"default_value\": json.dumps(\"2000-01-01\"),\n \"fill_behavior\": {\n \"initial_prompt_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"reprompt_event_handlers\": [\n {\n \"event\": \"sys.no-match-1\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"webhook\": my_webhook.id,\n \"tag\": \"some-tag\",\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n \"event\": \"sys.no-match-2\",\n \"target_flow\": agent.start_flow,\n },\n {\n \"event\": \"sys.no-match-3\",\n \"target_page\": my_page2.id,\n },\n ],\n },\n \"required\": True,\n \"redact\": True,\n \"advanced_settings\": {\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n },\n }],\n },\n transition_routes=[{\n \"condition\": \"$page.params.status = 'FINAL'\",\n \"trigger_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"information completed, navigating to page 2\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_page\": my_page2.id,\n }],\n advanced_settings={\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var myPage2 = new Gcp.Diagflow.CxPage(\"my_page2\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage2\",\n });\n\n var myWebhook = new Gcp.Diagflow.CxWebhook(\"my_webhook\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyWebhook\",\n GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs\n {\n Uri = \"https://example.com\",\n },\n });\n\n var basicPage = new Gcp.Diagflow.CxPage(\"basic_page\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage\",\n EntryFulfillment = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Welcome to page\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs\n {\n Event = \"some-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n Form = new Gcp.Diagflow.Inputs.CxPageFormArgs\n {\n Parameters = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterArgs\n {\n DisplayName = \"param1\",\n EntityType = \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n DefaultValue = JsonSerializer.Serialize(\"2000-01-01\"),\n FillBehavior = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorArgs\n {\n InitialPromptFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n RepromptEventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-1\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Webhook = myWebhook.Id,\n Tag = \"some-tag\",\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-2\",\n TargetFlow = agent.StartFlow,\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-3\",\n TargetPage = myPage2.Id,\n },\n },\n },\n Required = true,\n Redact = true,\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs\n {\n Condition = \"$page.params.status = 'FINAL'\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"information completed, navigating to page 2\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetPage = myPage2.Id,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyPage2, err := diagflow.NewCxPage(ctx, \"my_page2\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyWebhook, err := diagflow.NewCxWebhook(ctx, \"my_webhook\", \u0026diagflow.CxWebhookArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyWebhook\"),\n\t\t\tGenericWebService: \u0026diagflow.CxWebhookGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson5 := string(tmpJSON5)\n\t\ttmpJSON6, err := json.Marshal(\"2000-01-01\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson6 := string(tmpJSON6)\n\t\ttmpJSON7, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson7 := string(tmpJSON7)\n\t\ttmpJSON8, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson8 := string(tmpJSON8)\n\t\ttmpJSON9, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson9 := string(tmpJSON9)\n\t\ttmpJSON10, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson10 := string(tmpJSON10)\n\t\ttmpJSON11, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson11 := string(tmpJSON11)\n\t\ttmpJSON12, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson12 := string(tmpJSON12)\n\t\ttmpJSON13, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson13 := string(tmpJSON13)\n\t\ttmpJSON14, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson14 := string(tmpJSON14)\n\t\ttmpJSON15, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson15 := string(tmpJSON15)\n\t\t_, err = diagflow.NewCxPage(ctx, \"basic_page\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage\"),\n\t\t\tEntryFulfillment: \u0026diagflow.CxPageEntryFulfillmentArgs{\n\t\t\t\tMessages: diagflow.CxPageEntryFulfillmentMessageArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\tText: \u0026diagflow.CxPageEntryFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"Welcome to page\"),\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\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEntryFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEntryFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSetParameterActions: diagflow.CxPageEntryFulfillmentSetParameterActionArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tConditionalCases: diagflow.CxPageEntryFulfillmentConditionalCaseArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\tCases: pulumi.String(json2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxPageEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxPageEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\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\tSetParameterActions: diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\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\tForm: \u0026diagflow.CxPageFormArgs{\n\t\t\t\tParameters: diagflow.CxPageFormParameterArray{\n\t\t\t\t\t\u0026diagflow.CxPageFormParameterArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"param1\"),\n\t\t\t\t\t\tEntityType: pulumi.String(\"projects/-/locations/-/agents/-/entityTypes/sys.date\"),\n\t\t\t\t\t\tDefaultValue: pulumi.String(json6),\n\t\t\t\t\t\tFillBehavior: \u0026diagflow.CxPageFormParameterFillBehaviorArgs{\n\t\t\t\t\t\t\tInitialPromptFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs{\n\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json7),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepromptEventHandlers: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArray{\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-1\"),\n\t\t\t\t\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tWebhook: myWebhook.ID(),\n\t\t\t\t\t\t\t\t\t\tTag: pulumi.String(\"some-tag\"),\n\t\t\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json10),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json11),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json12),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-2\"),\n\t\t\t\t\t\t\t\t\tTargetFlow: agent.StartFlow,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-3\"),\n\t\t\t\t\t\t\t\t\tTargetPage: myPage2.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\tRequired: pulumi.Bool(true),\n\t\t\t\t\t\tRedact: pulumi.Bool(true),\n\t\t\t\t\t\tAdvancedSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsArgs{\n\t\t\t\t\t\t\tDtmfSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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\tTransitionRoutes: diagflow.CxPageTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxPageTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"$page.params.status = 'FINAL'\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"information completed, navigating to page 2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\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\tSetParameterActions: diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json13),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json14),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json15),\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\tTargetPage: myPage2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxPageAdvancedSettingsArgs{\n\t\t\t\tDtmfSettings: \u0026diagflow.CxPageAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxPage;\nimport com.pulumi.gcp.diagflow.CxPageArgs;\nimport com.pulumi.gcp.diagflow.CxWebhook;\nimport com.pulumi.gcp.diagflow.CxWebhookArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEntryFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageFormArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var myPage2 = new CxPage(\"myPage2\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage2\")\n .build());\n\n var myWebhook = new CxWebhook(\"myWebhook\", CxWebhookArgs.builder()\n .parent(agent.id())\n .displayName(\"MyWebhook\")\n .genericWebService(CxWebhookGenericWebServiceArgs.builder()\n .uri(\"https://example.com\")\n .build())\n .build());\n\n var basicPage = new CxPage(\"basicPage\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage\")\n .entryFulfillment(CxPageEntryFulfillmentArgs.builder()\n .messages( \n CxPageEntryFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEntryFulfillmentMessageTextArgs.builder()\n .texts(\"Welcome to page\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEntryFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEntryFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .playAudio(CxPageEntryFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEntryFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEntryFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .eventHandlers(CxPageEventHandlerArgs.builder()\n .event(\"some-event\")\n .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .form(CxPageFormArgs.builder()\n .parameters(CxPageFormParameterArgs.builder()\n .displayName(\"param1\")\n .entityType(\"projects/-/locations/-/agents/-/entityTypes/sys.date\")\n .defaultValue(serializeJson(\n \"2000-01-01\"))\n .fillBehavior(CxPageFormParameterFillBehaviorArgs.builder()\n .initialPromptFulfillment(CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs.builder()\n .messages( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .repromptEventHandlers( \n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-1\")\n .triggerFulfillment(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .webhook(myWebhook.id())\n .tag(\"some-tag\")\n .messages( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-2\")\n .targetFlow(agent.startFlow())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-3\")\n .targetPage(myPage2.id())\n .build())\n .build())\n .required(\"true\")\n .redact(\"true\")\n .advancedSettings(CxPageFormParameterAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageFormParameterAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build())\n .build())\n .transitionRoutes(CxPageTransitionRouteArgs.builder()\n .condition(\"$page.params.status = 'FINAL'\")\n .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()\n .messages( \n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"information completed, navigating to page 2\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetPage(myPage2.id())\n .build())\n .advancedSettings(CxPageAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicPage:\n type: gcp:diagflow:CxPage\n name: basic_page\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage\n entryFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Welcome to page\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n eventHandlers:\n - event: some-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n form:\n parameters:\n - displayName: param1\n entityType: projects/-/locations/-/agents/-/entityTypes/sys.date\n defaultValue:\n fn::toJSON: 2000-01-01\n fillBehavior:\n initialPromptFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n repromptEventHandlers:\n - event: sys.no-match-1\n triggerFulfillment:\n returnPartialResponses: true\n webhook: ${myWebhook.id}\n tag: some-tag\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n - event: sys.no-match-2\n targetFlow: ${agent.startFlow}\n - event: sys.no-match-3\n targetPage: ${myPage2.id}\n required: 'true'\n redact: 'true'\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n transitionRoutes:\n - condition: $page.params.status = 'FINAL'\n triggerFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - information completed, navigating to page 2\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetPage: ${myPage2.id}\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n myPage2:\n type: gcp:diagflow:CxPage\n name: my_page2\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage2\n myWebhook:\n type: gcp:diagflow:CxWebhook\n name: my_webhook\n properties:\n parent: ${agent.id}\n displayName: MyWebhook\n genericWebService:\n uri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPage can be imported using any of these accepted formats:\n\n* `{{parent}}/pages/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Page can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/pages/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/{{name}}\n```\n\n", + "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages.\n\n\nTo get more information about Page, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows.pages)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Page Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst myPage2 = new gcp.diagflow.CxPage(\"my_page2\", {\n parent: agent.startFlow,\n displayName: \"MyPage2\",\n});\nconst myWebhook = new gcp.diagflow.CxWebhook(\"my_webhook\", {\n parent: agent.id,\n displayName: \"MyWebhook\",\n genericWebService: {\n uri: \"https://example.com\",\n },\n});\nconst basicPage = new gcp.diagflow.CxPage(\"basic_page\", {\n parent: agent.startFlow,\n displayName: \"MyPage\",\n entryFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Welcome to page\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n eventHandlers: [{\n event: \"some-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form: {\n parameters: [{\n displayName: \"param1\",\n entityType: \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n defaultValue: JSON.stringify(\"2000-01-01\"),\n fillBehavior: {\n initialPromptFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n repromptEventHandlers: [\n {\n event: \"sys.no-match-1\",\n triggerFulfillment: {\n returnPartialResponses: true,\n webhook: myWebhook.id,\n tag: \"some-tag\",\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n event: \"sys.no-match-2\",\n targetFlow: agent.startFlow,\n },\n {\n event: \"sys.no-match-3\",\n targetPage: myPage2.id,\n },\n ],\n },\n required: true,\n redact: true,\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n }],\n },\n transitionRoutes: [{\n condition: \"$page.params.status = 'FINAL'\",\n triggerFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"information completed, navigating to page 2\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetPage: myPage2.id,\n }],\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nmy_page2 = gcp.diagflow.CxPage(\"my_page2\",\n parent=agent.start_flow,\n display_name=\"MyPage2\")\nmy_webhook = gcp.diagflow.CxWebhook(\"my_webhook\",\n parent=agent.id,\n display_name=\"MyWebhook\",\n generic_web_service={\n \"uri\": \"https://example.com\",\n })\nbasic_page = gcp.diagflow.CxPage(\"basic_page\",\n parent=agent.start_flow,\n display_name=\"MyPage\",\n entry_fulfillment={\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Welcome to page\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n event_handlers=[{\n \"event\": \"some-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form={\n \"parameters\": [{\n \"display_name\": \"param1\",\n \"entity_type\": \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n \"default_value\": json.dumps(\"2000-01-01\"),\n \"fill_behavior\": {\n \"initial_prompt_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"reprompt_event_handlers\": [\n {\n \"event\": \"sys.no-match-1\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"webhook\": my_webhook.id,\n \"tag\": \"some-tag\",\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n \"event\": \"sys.no-match-2\",\n \"target_flow\": agent.start_flow,\n },\n {\n \"event\": \"sys.no-match-3\",\n \"target_page\": my_page2.id,\n },\n ],\n },\n \"required\": True,\n \"redact\": True,\n \"advanced_settings\": {\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n },\n }],\n },\n transition_routes=[{\n \"condition\": \"$page.params.status = 'FINAL'\",\n \"trigger_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"information completed, navigating to page 2\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_page\": my_page2.id,\n }],\n advanced_settings={\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var myPage2 = new Gcp.Diagflow.CxPage(\"my_page2\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage2\",\n });\n\n var myWebhook = new Gcp.Diagflow.CxWebhook(\"my_webhook\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyWebhook\",\n GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs\n {\n Uri = \"https://example.com\",\n },\n });\n\n var basicPage = new Gcp.Diagflow.CxPage(\"basic_page\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage\",\n EntryFulfillment = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Welcome to page\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs\n {\n Event = \"some-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n Form = new Gcp.Diagflow.Inputs.CxPageFormArgs\n {\n Parameters = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterArgs\n {\n DisplayName = \"param1\",\n EntityType = \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n DefaultValue = JsonSerializer.Serialize(\"2000-01-01\"),\n FillBehavior = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorArgs\n {\n InitialPromptFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n RepromptEventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-1\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Webhook = myWebhook.Id,\n Tag = \"some-tag\",\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-2\",\n TargetFlow = agent.StartFlow,\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-3\",\n TargetPage = myPage2.Id,\n },\n },\n },\n Required = true,\n Redact = true,\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs\n {\n Condition = \"$page.params.status = 'FINAL'\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"information completed, navigating to page 2\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetPage = myPage2.Id,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyPage2, err := diagflow.NewCxPage(ctx, \"my_page2\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyWebhook, err := diagflow.NewCxWebhook(ctx, \"my_webhook\", \u0026diagflow.CxWebhookArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyWebhook\"),\n\t\t\tGenericWebService: \u0026diagflow.CxWebhookGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson5 := string(tmpJSON5)\n\t\ttmpJSON6, err := json.Marshal(\"2000-01-01\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson6 := string(tmpJSON6)\n\t\ttmpJSON7, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson7 := string(tmpJSON7)\n\t\ttmpJSON8, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson8 := string(tmpJSON8)\n\t\ttmpJSON9, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson9 := string(tmpJSON9)\n\t\ttmpJSON10, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson10 := string(tmpJSON10)\n\t\ttmpJSON11, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson11 := string(tmpJSON11)\n\t\ttmpJSON12, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson12 := string(tmpJSON12)\n\t\ttmpJSON13, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson13 := string(tmpJSON13)\n\t\ttmpJSON14, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson14 := string(tmpJSON14)\n\t\ttmpJSON15, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\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\tjson15 := string(tmpJSON15)\n\t\t_, err = diagflow.NewCxPage(ctx, \"basic_page\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage\"),\n\t\t\tEntryFulfillment: \u0026diagflow.CxPageEntryFulfillmentArgs{\n\t\t\t\tMessages: diagflow.CxPageEntryFulfillmentMessageArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\tText: \u0026diagflow.CxPageEntryFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"Welcome to page\"),\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\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEntryFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEntryFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSetParameterActions: diagflow.CxPageEntryFulfillmentSetParameterActionArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tConditionalCases: diagflow.CxPageEntryFulfillmentConditionalCaseArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\tCases: pulumi.String(json2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxPageEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxPageEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\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\tSetParameterActions: diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\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\tForm: \u0026diagflow.CxPageFormArgs{\n\t\t\t\tParameters: diagflow.CxPageFormParameterArray{\n\t\t\t\t\t\u0026diagflow.CxPageFormParameterArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"param1\"),\n\t\t\t\t\t\tEntityType: pulumi.String(\"projects/-/locations/-/agents/-/entityTypes/sys.date\"),\n\t\t\t\t\t\tDefaultValue: pulumi.String(json6),\n\t\t\t\t\t\tFillBehavior: \u0026diagflow.CxPageFormParameterFillBehaviorArgs{\n\t\t\t\t\t\t\tInitialPromptFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs{\n\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json7),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepromptEventHandlers: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArray{\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-1\"),\n\t\t\t\t\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tWebhook: myWebhook.ID(),\n\t\t\t\t\t\t\t\t\t\tTag: pulumi.String(\"some-tag\"),\n\t\t\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json10),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json11),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json12),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-2\"),\n\t\t\t\t\t\t\t\t\tTargetFlow: agent.StartFlow,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-3\"),\n\t\t\t\t\t\t\t\t\tTargetPage: myPage2.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\tRequired: pulumi.Bool(true),\n\t\t\t\t\t\tRedact: pulumi.Bool(true),\n\t\t\t\t\t\tAdvancedSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsArgs{\n\t\t\t\t\t\t\tDtmfSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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\tTransitionRoutes: diagflow.CxPageTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxPageTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"$page.params.status = 'FINAL'\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"information completed, navigating to page 2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\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\tSetParameterActions: diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json13),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json14),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json15),\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\tTargetPage: myPage2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxPageAdvancedSettingsArgs{\n\t\t\t\tDtmfSettings: \u0026diagflow.CxPageAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxPage;\nimport com.pulumi.gcp.diagflow.CxPageArgs;\nimport com.pulumi.gcp.diagflow.CxWebhook;\nimport com.pulumi.gcp.diagflow.CxWebhookArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEntryFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageFormArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var myPage2 = new CxPage(\"myPage2\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage2\")\n .build());\n\n var myWebhook = new CxWebhook(\"myWebhook\", CxWebhookArgs.builder()\n .parent(agent.id())\n .displayName(\"MyWebhook\")\n .genericWebService(CxWebhookGenericWebServiceArgs.builder()\n .uri(\"https://example.com\")\n .build())\n .build());\n\n var basicPage = new CxPage(\"basicPage\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage\")\n .entryFulfillment(CxPageEntryFulfillmentArgs.builder()\n .messages( \n CxPageEntryFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEntryFulfillmentMessageTextArgs.builder()\n .texts(\"Welcome to page\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEntryFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEntryFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .playAudio(CxPageEntryFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEntryFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEntryFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .eventHandlers(CxPageEventHandlerArgs.builder()\n .event(\"some-event\")\n .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .form(CxPageFormArgs.builder()\n .parameters(CxPageFormParameterArgs.builder()\n .displayName(\"param1\")\n .entityType(\"projects/-/locations/-/agents/-/entityTypes/sys.date\")\n .defaultValue(serializeJson(\n \"2000-01-01\"))\n .fillBehavior(CxPageFormParameterFillBehaviorArgs.builder()\n .initialPromptFulfillment(CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs.builder()\n .messages( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .repromptEventHandlers( \n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-1\")\n .triggerFulfillment(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .webhook(myWebhook.id())\n .tag(\"some-tag\")\n .messages( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-2\")\n .targetFlow(agent.startFlow())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-3\")\n .targetPage(myPage2.id())\n .build())\n .build())\n .required(\"true\")\n .redact(\"true\")\n .advancedSettings(CxPageFormParameterAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageFormParameterAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build())\n .build())\n .transitionRoutes(CxPageTransitionRouteArgs.builder()\n .condition(\"$page.params.status = 'FINAL'\")\n .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()\n .messages( \n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"information completed, navigating to page 2\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetPage(myPage2.id())\n .build())\n .advancedSettings(CxPageAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicPage:\n type: gcp:diagflow:CxPage\n name: basic_page\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage\n entryFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Welcome to page\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n eventHandlers:\n - event: some-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n form:\n parameters:\n - displayName: param1\n entityType: projects/-/locations/-/agents/-/entityTypes/sys.date\n defaultValue:\n fn::toJSON: 2000-01-01\n fillBehavior:\n initialPromptFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n repromptEventHandlers:\n - event: sys.no-match-1\n triggerFulfillment:\n returnPartialResponses: true\n webhook: ${myWebhook.id}\n tag: some-tag\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n - event: sys.no-match-2\n targetFlow: ${agent.startFlow}\n - event: sys.no-match-3\n targetPage: ${myPage2.id}\n required: 'true'\n redact: 'true'\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n transitionRoutes:\n - condition: $page.params.status = 'FINAL'\n triggerFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - information completed, navigating to page 2\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetPage: ${myPage2.id}\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n myPage2:\n type: gcp:diagflow:CxPage\n name: my_page2\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage2\n myWebhook:\n type: gcp:diagflow:CxWebhook\n name: my_webhook\n properties:\n parent: ${agent.id}\n displayName: MyWebhook\n genericWebService:\n uri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPage can be imported using any of these accepted formats:\n\n* `{{parent}}/pages/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Page can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/pages/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/{{name}}\n```\n\n", "properties": { "advancedSettings": { "$ref": "#/types/gcp:diagflow/CxPageAdvancedSettings:CxPageAdvancedSettings", @@ -202060,7 +202060,7 @@ } }, "gcp:firebase/extensionsInstance:ExtensionsInstance": { - "description": "## Example Usage\n\n### Firebase Extentions Instance Resize Image\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst images = new gcp.storage.Bucket(\"images\", {\n project: \"my-project-name\",\n name: \"bucket-id\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n forceDestroy: true,\n});\nconst resizeImage = new gcp.firebase.ExtensionsInstance(\"resize_image\", {\n project: \"my-project-name\",\n instanceId: \"storage-resize-images\",\n config: {\n extensionRef: \"firebase/storage-resize-images\",\n extensionVersion: \"0.2.2\",\n params: {\n DELETE_ORIGINAL_FILE: \"false\",\n MAKE_PUBLIC: \"false\",\n IMAGE_TYPE: \"false\",\n IS_ANIMATED: \"true\",\n FUNCTION_MEMORY: \"1024\",\n DO_BACKFILL: \"false\",\n IMG_SIZES: \"200x200\",\n IMG_BUCKET: images.name,\n },\n systemParams: {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n allowedEventTypes: [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n eventarcChannel: \"projects/my-project-name/locations//channels/firebase\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimages = gcp.storage.Bucket(\"images\",\n project=\"my-project-name\",\n name=\"bucket-id\",\n location=\"US\",\n uniform_bucket_level_access=True,\n force_destroy=True)\nresize_image = gcp.firebase.ExtensionsInstance(\"resize_image\",\n project=\"my-project-name\",\n instance_id=\"storage-resize-images\",\n config={\n \"extension_ref\": \"firebase/storage-resize-images\",\n \"extension_version\": \"0.2.2\",\n \"params\": {\n \"delet_e__origina_l__file\": \"false\",\n \"mak_e__public\": \"false\",\n \"imag_e__type\": \"false\",\n \"i_s__animated\": \"true\",\n \"functio_n__memory\": \"1024\",\n \"d_o__backfill\": \"false\",\n \"im_g__sizes\": \"200x200\",\n \"im_g__bucket\": images.name,\n },\n \"system_params\": {\n \"firebaseextensions_v1beta_function_location\": \"\",\n \"firebaseextensions_v1beta_function_max_instances\": \"3000\",\n \"firebaseextensions_v1beta_function_min_instances\": \"0\",\n \"firebaseextensions_v1beta_function_vpc_connector_egress_settings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n \"allowed_event_types\": [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n \"eventarc_channel\": \"projects/my-project-name/locations//channels/firebase\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var images = new Gcp.Storage.Bucket(\"images\", new()\n {\n Project = \"my-project-name\",\n Name = \"bucket-id\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n ForceDestroy = true,\n });\n\n var resizeImage = new Gcp.Firebase.ExtensionsInstance(\"resize_image\", new()\n {\n Project = \"my-project-name\",\n InstanceId = \"storage-resize-images\",\n Config = new Gcp.Firebase.Inputs.ExtensionsInstanceConfigArgs\n {\n ExtensionRef = \"firebase/storage-resize-images\",\n ExtensionVersion = \"0.2.2\",\n Params = \n {\n { \"DELETE_ORIGINAL_FILE\", \"false\" },\n { \"MAKE_PUBLIC\", \"false\" },\n { \"IMAGE_TYPE\", \"false\" },\n { \"IS_ANIMATED\", \"true\" },\n { \"FUNCTION_MEMORY\", \"1024\" },\n { \"DO_BACKFILL\", \"false\" },\n { \"IMG_SIZES\", \"200x200\" },\n { \"IMG_BUCKET\", images.Name },\n },\n SystemParams = \n {\n { \"firebaseextensions.v1beta.function/location\", \"\" },\n { \"firebaseextensions.v1beta.function/maxInstances\", \"3000\" },\n { \"firebaseextensions.v1beta.function/minInstances\", \"0\" },\n { \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\" },\n },\n AllowedEventTypes = new[]\n {\n \"firebase.extensions.storage-resize-images.v1.onCompletion\",\n },\n EventarcChannel = \"projects/my-project-name/locations//channels/firebase\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\timages, err := storage.NewBucket(ctx, \"images\", \u0026storage.BucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"bucket-id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\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\t_, err = firebase.NewExtensionsInstance(ctx, \"resize_image\", \u0026firebase.ExtensionsInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tInstanceId: pulumi.String(\"storage-resize-images\"),\n\t\t\tConfig: \u0026firebase.ExtensionsInstanceConfigArgs{\n\t\t\t\tExtensionRef: pulumi.String(\"firebase/storage-resize-images\"),\n\t\t\t\tExtensionVersion: pulumi.String(\"0.2.2\"),\n\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\"DELETE_ORIGINAL_FILE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"MAKE_PUBLIC\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMAGE_TYPE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IS_ANIMATED\": pulumi.String(\"true\"),\n\t\t\t\t\t\"FUNCTION_MEMORY\": pulumi.String(\"1024\"),\n\t\t\t\t\t\"DO_BACKFILL\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMG_SIZES\": pulumi.String(\"200x200\"),\n\t\t\t\t\t\"IMG_BUCKET\": images.Name,\n\t\t\t\t},\n\t\t\t\tSystemParams: pulumi.StringMap{\n\t\t\t\t\t\"firebaseextensions.v1beta.function/location\": pulumi.String(\"\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/maxInstances\": pulumi.String(\"3000\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/minInstances\": pulumi.String(\"0\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": pulumi.String(\"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\"),\n\t\t\t\t},\n\t\t\t\tAllowedEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"firebase.extensions.storage-resize-images.v1.onCompletion\"),\n\t\t\t\t},\n\t\t\t\tEventarcChannel: pulumi.String(\"projects/my-project-name/locations//channels/firebase\"),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.firebase.ExtensionsInstance;\nimport com.pulumi.gcp.firebase.ExtensionsInstanceArgs;\nimport com.pulumi.gcp.firebase.inputs.ExtensionsInstanceConfigArgs;\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 images = new Bucket(\"images\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"bucket-id\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .forceDestroy(true)\n .build());\n\n var resizeImage = new ExtensionsInstance(\"resizeImage\", ExtensionsInstanceArgs.builder()\n .project(\"my-project-name\")\n .instanceId(\"storage-resize-images\")\n .config(ExtensionsInstanceConfigArgs.builder()\n .extensionRef(\"firebase/storage-resize-images\")\n .extensionVersion(\"0.2.2\")\n .params(Map.ofEntries(\n Map.entry(\"DELETE_ORIGINAL_FILE\", false),\n Map.entry(\"MAKE_PUBLIC\", false),\n Map.entry(\"IMAGE_TYPE\", false),\n Map.entry(\"IS_ANIMATED\", true),\n Map.entry(\"FUNCTION_MEMORY\", 1024),\n Map.entry(\"DO_BACKFILL\", false),\n Map.entry(\"IMG_SIZES\", \"200x200\"),\n Map.entry(\"IMG_BUCKET\", images.name())\n ))\n .systemParams(Map.ofEntries(\n Map.entry(\"firebaseextensions.v1beta.function/location\", \"\"),\n Map.entry(\"firebaseextensions.v1beta.function/maxInstances\", 3000),\n Map.entry(\"firebaseextensions.v1beta.function/minInstances\", 0),\n Map.entry(\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\")\n ))\n .allowedEventTypes(\"firebase.extensions.storage-resize-images.v1.onCompletion\")\n .eventarcChannel(\"projects/my-project-name/locations//channels/firebase\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n images:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: bucket-id\n location: US\n uniformBucketLevelAccess: true # Delete all objects when the bucket is deleted\n forceDestroy: true\n resizeImage:\n type: gcp:firebase:ExtensionsInstance\n name: resize_image\n properties:\n project: my-project-name\n instanceId: storage-resize-images\n config:\n extensionRef: firebase/storage-resize-images\n extensionVersion: 0.2.2\n params:\n DELETE_ORIGINAL_FILE: false\n MAKE_PUBLIC: false\n IMAGE_TYPE: false\n IS_ANIMATED: true\n FUNCTION_MEMORY: 1024\n DO_BACKFILL: false\n IMG_SIZES: 200x200\n IMG_BUCKET: ${images.name}\n systemParams:\n firebaseextensions.v1beta.function/location:\n firebaseextensions.v1beta.function/maxInstances: 3000\n firebaseextensions.v1beta.function/minInstances: 0\n firebaseextensions.v1beta.function/vpcConnectorEgressSettings: VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\n allowedEventTypes:\n - firebase.extensions.storage-resize-images.v1.onCompletion\n eventarcChannel: projects/my-project-name/locations//channels/firebase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_id}}`\n\n* `{{project}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default projects/{{project}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{project}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{instance_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebase Extentions Instance Resize Image\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst images = new gcp.storage.Bucket(\"images\", {\n project: \"my-project-name\",\n name: \"bucket-id\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n forceDestroy: true,\n});\nconst resizeImage = new gcp.firebase.ExtensionsInstance(\"resize_image\", {\n project: \"my-project-name\",\n instanceId: \"storage-resize-images\",\n config: {\n extensionRef: \"firebase/storage-resize-images\",\n extensionVersion: \"0.2.2\",\n params: {\n DELETE_ORIGINAL_FILE: \"false\",\n MAKE_PUBLIC: \"false\",\n IMAGE_TYPE: \"false\",\n IS_ANIMATED: \"true\",\n FUNCTION_MEMORY: \"1024\",\n DO_BACKFILL: \"false\",\n IMG_SIZES: \"200x200\",\n IMG_BUCKET: images.name,\n },\n systemParams: {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n allowedEventTypes: [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n eventarcChannel: \"projects/my-project-name/locations//channels/firebase\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimages = gcp.storage.Bucket(\"images\",\n project=\"my-project-name\",\n name=\"bucket-id\",\n location=\"US\",\n uniform_bucket_level_access=True,\n force_destroy=True)\nresize_image = gcp.firebase.ExtensionsInstance(\"resize_image\",\n project=\"my-project-name\",\n instance_id=\"storage-resize-images\",\n config={\n \"extension_ref\": \"firebase/storage-resize-images\",\n \"extension_version\": \"0.2.2\",\n \"params\": {\n \"DELETE_ORIGINAL_FILE\": \"false\",\n \"MAKE_PUBLIC\": \"false\",\n \"IMAGE_TYPE\": \"false\",\n \"IS_ANIMATED\": \"true\",\n \"FUNCTION_MEMORY\": \"1024\",\n \"DO_BACKFILL\": \"false\",\n \"IMG_SIZES\": \"200x200\",\n \"IMG_BUCKET\": images.name,\n },\n \"system_params\": {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n \"allowed_event_types\": [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n \"eventarc_channel\": \"projects/my-project-name/locations//channels/firebase\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var images = new Gcp.Storage.Bucket(\"images\", new()\n {\n Project = \"my-project-name\",\n Name = \"bucket-id\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n ForceDestroy = true,\n });\n\n var resizeImage = new Gcp.Firebase.ExtensionsInstance(\"resize_image\", new()\n {\n Project = \"my-project-name\",\n InstanceId = \"storage-resize-images\",\n Config = new Gcp.Firebase.Inputs.ExtensionsInstanceConfigArgs\n {\n ExtensionRef = \"firebase/storage-resize-images\",\n ExtensionVersion = \"0.2.2\",\n Params = \n {\n { \"DELETE_ORIGINAL_FILE\", \"false\" },\n { \"MAKE_PUBLIC\", \"false\" },\n { \"IMAGE_TYPE\", \"false\" },\n { \"IS_ANIMATED\", \"true\" },\n { \"FUNCTION_MEMORY\", \"1024\" },\n { \"DO_BACKFILL\", \"false\" },\n { \"IMG_SIZES\", \"200x200\" },\n { \"IMG_BUCKET\", images.Name },\n },\n SystemParams = \n {\n { \"firebaseextensions.v1beta.function/location\", \"\" },\n { \"firebaseextensions.v1beta.function/maxInstances\", \"3000\" },\n { \"firebaseextensions.v1beta.function/minInstances\", \"0\" },\n { \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\" },\n },\n AllowedEventTypes = new[]\n {\n \"firebase.extensions.storage-resize-images.v1.onCompletion\",\n },\n EventarcChannel = \"projects/my-project-name/locations//channels/firebase\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\timages, err := storage.NewBucket(ctx, \"images\", \u0026storage.BucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"bucket-id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\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\t_, err = firebase.NewExtensionsInstance(ctx, \"resize_image\", \u0026firebase.ExtensionsInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tInstanceId: pulumi.String(\"storage-resize-images\"),\n\t\t\tConfig: \u0026firebase.ExtensionsInstanceConfigArgs{\n\t\t\t\tExtensionRef: pulumi.String(\"firebase/storage-resize-images\"),\n\t\t\t\tExtensionVersion: pulumi.String(\"0.2.2\"),\n\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\"DELETE_ORIGINAL_FILE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"MAKE_PUBLIC\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMAGE_TYPE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IS_ANIMATED\": pulumi.String(\"true\"),\n\t\t\t\t\t\"FUNCTION_MEMORY\": pulumi.String(\"1024\"),\n\t\t\t\t\t\"DO_BACKFILL\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMG_SIZES\": pulumi.String(\"200x200\"),\n\t\t\t\t\t\"IMG_BUCKET\": images.Name,\n\t\t\t\t},\n\t\t\t\tSystemParams: pulumi.StringMap{\n\t\t\t\t\t\"firebaseextensions.v1beta.function/location\": pulumi.String(\"\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/maxInstances\": pulumi.String(\"3000\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/minInstances\": pulumi.String(\"0\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": pulumi.String(\"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\"),\n\t\t\t\t},\n\t\t\t\tAllowedEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"firebase.extensions.storage-resize-images.v1.onCompletion\"),\n\t\t\t\t},\n\t\t\t\tEventarcChannel: pulumi.String(\"projects/my-project-name/locations//channels/firebase\"),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.firebase.ExtensionsInstance;\nimport com.pulumi.gcp.firebase.ExtensionsInstanceArgs;\nimport com.pulumi.gcp.firebase.inputs.ExtensionsInstanceConfigArgs;\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 images = new Bucket(\"images\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"bucket-id\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .forceDestroy(true)\n .build());\n\n var resizeImage = new ExtensionsInstance(\"resizeImage\", ExtensionsInstanceArgs.builder()\n .project(\"my-project-name\")\n .instanceId(\"storage-resize-images\")\n .config(ExtensionsInstanceConfigArgs.builder()\n .extensionRef(\"firebase/storage-resize-images\")\n .extensionVersion(\"0.2.2\")\n .params(Map.ofEntries(\n Map.entry(\"DELETE_ORIGINAL_FILE\", false),\n Map.entry(\"MAKE_PUBLIC\", false),\n Map.entry(\"IMAGE_TYPE\", false),\n Map.entry(\"IS_ANIMATED\", true),\n Map.entry(\"FUNCTION_MEMORY\", 1024),\n Map.entry(\"DO_BACKFILL\", false),\n Map.entry(\"IMG_SIZES\", \"200x200\"),\n Map.entry(\"IMG_BUCKET\", images.name())\n ))\n .systemParams(Map.ofEntries(\n Map.entry(\"firebaseextensions.v1beta.function/location\", \"\"),\n Map.entry(\"firebaseextensions.v1beta.function/maxInstances\", 3000),\n Map.entry(\"firebaseextensions.v1beta.function/minInstances\", 0),\n Map.entry(\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\")\n ))\n .allowedEventTypes(\"firebase.extensions.storage-resize-images.v1.onCompletion\")\n .eventarcChannel(\"projects/my-project-name/locations//channels/firebase\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n images:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: bucket-id\n location: US\n uniformBucketLevelAccess: true # Delete all objects when the bucket is deleted\n forceDestroy: true\n resizeImage:\n type: gcp:firebase:ExtensionsInstance\n name: resize_image\n properties:\n project: my-project-name\n instanceId: storage-resize-images\n config:\n extensionRef: firebase/storage-resize-images\n extensionVersion: 0.2.2\n params:\n DELETE_ORIGINAL_FILE: false\n MAKE_PUBLIC: false\n IMAGE_TYPE: false\n IS_ANIMATED: true\n FUNCTION_MEMORY: 1024\n DO_BACKFILL: false\n IMG_SIZES: 200x200\n IMG_BUCKET: ${images.name}\n systemParams:\n firebaseextensions.v1beta.function/location:\n firebaseextensions.v1beta.function/maxInstances: 3000\n firebaseextensions.v1beta.function/minInstances: 0\n firebaseextensions.v1beta.function/vpcConnectorEgressSettings: VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\n allowedEventTypes:\n - firebase.extensions.storage-resize-images.v1.onCompletion\n eventarcChannel: projects/my-project-name/locations//channels/firebase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_id}}`\n\n* `{{project}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default projects/{{project}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{project}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{instance_id}}\n```\n\n", "properties": { "config": { "$ref": "#/types/gcp:firebase/ExtensionsInstanceConfig:ExtensionsInstanceConfig", @@ -216070,7 +216070,7 @@ } }, "gcp:identityplatform/config:Config": { - "description": "Identity Platform configuration for a Cloud project. Identity Platform is an\nend-to-end authentication system for third-party users to access apps\nand services.\n\nThis entity is created only once during intialization and cannot be deleted,\nindividual Identity Providers may be disabled instead. This resource may only\nbe created in billing-enabled projects.\n\n\nTo get more information about Config, see:\n\n* [API documentation](https://cloud.google.com/identity-platform/docs/reference/rest/v2/Config)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/identity-platform/docs)\n\n\n\n## Example Usage\n\n### Identity Platform Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst identitytoolkit = new gcp.projects.Service(\"identitytoolkit\", {\n project: _default.projectId,\n service: \"identitytoolkit.googleapis.com\",\n});\nconst defaultConfig = new gcp.identityplatform.Config(\"default\", {\n project: _default.projectId,\n autodeleteAnonymousUsers: true,\n signIn: {\n allowDuplicateEmails: true,\n anonymous: {\n enabled: true,\n },\n email: {\n enabled: true,\n passwordRequired: false,\n },\n phoneNumber: {\n enabled: true,\n testPhoneNumbers: {\n \"+11231231234\": \"000000\",\n },\n },\n },\n smsRegionConfig: {\n allowlistOnly: {\n allowedRegions: [\n \"US\",\n \"CA\",\n ],\n },\n },\n blockingFunctions: {\n triggers: [{\n eventType: \"beforeSignIn\",\n functionUri: \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n forwardInboundCredentials: {\n refreshToken: true,\n accessToken: true,\n idToken: true,\n },\n },\n quota: {\n signUpQuotaConfig: {\n quota: 1000,\n startTime: \"\",\n quotaDuration: \"7200s\",\n },\n },\n authorizedDomains: [\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\",\n labels={\n \"firebase\": \"enabled\",\n })\nidentitytoolkit = gcp.projects.Service(\"identitytoolkit\",\n project=default.project_id,\n service=\"identitytoolkit.googleapis.com\")\ndefault_config = gcp.identityplatform.Config(\"default\",\n project=default.project_id,\n autodelete_anonymous_users=True,\n sign_in={\n \"allow_duplicate_emails\": True,\n \"anonymous\": {\n \"enabled\": True,\n },\n \"email\": {\n \"enabled\": True,\n \"password_required\": False,\n },\n \"phone_number\": {\n \"enabled\": True,\n \"test_phone_numbers\": {\n \"_11231231234\": \"000000\",\n },\n },\n },\n sms_region_config={\n \"allowlist_only\": {\n \"allowed_regions\": [\n \"US\",\n \"CA\",\n ],\n },\n },\n blocking_functions={\n \"triggers\": [{\n \"event_type\": \"beforeSignIn\",\n \"function_uri\": \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n \"forward_inbound_credentials\": {\n \"refresh_token\": True,\n \"access_token\": True,\n \"id_token\": True,\n },\n },\n quota={\n \"sign_up_quota_config\": {\n \"quota\": 1000,\n \"start_time\": \"\",\n \"quota_duration\": \"7200s\",\n },\n },\n authorized_domains=[\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var identitytoolkit = new Gcp.Projects.Service(\"identitytoolkit\", new()\n {\n Project = @default.ProjectId,\n ServiceName = \"identitytoolkit.googleapis.com\",\n });\n\n var defaultConfig = new Gcp.IdentityPlatform.Config(\"default\", new()\n {\n Project = @default.ProjectId,\n AutodeleteAnonymousUsers = true,\n SignIn = new Gcp.IdentityPlatform.Inputs.ConfigSignInArgs\n {\n AllowDuplicateEmails = true,\n Anonymous = new Gcp.IdentityPlatform.Inputs.ConfigSignInAnonymousArgs\n {\n Enabled = true,\n },\n Email = new Gcp.IdentityPlatform.Inputs.ConfigSignInEmailArgs\n {\n Enabled = true,\n PasswordRequired = false,\n },\n PhoneNumber = new Gcp.IdentityPlatform.Inputs.ConfigSignInPhoneNumberArgs\n {\n Enabled = true,\n TestPhoneNumbers = \n {\n { \"+11231231234\", \"000000\" },\n },\n },\n },\n SmsRegionConfig = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigArgs\n {\n AllowlistOnly = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigAllowlistOnlyArgs\n {\n AllowedRegions = new[]\n {\n \"US\",\n \"CA\",\n },\n },\n },\n BlockingFunctions = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsArgs\n {\n Triggers = new[]\n {\n new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsTriggerArgs\n {\n EventType = \"beforeSignIn\",\n FunctionUri = \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n },\n },\n ForwardInboundCredentials = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs\n {\n RefreshToken = true,\n AccessToken = true,\n IdToken = true,\n },\n },\n Quota = new Gcp.IdentityPlatform.Inputs.ConfigQuotaArgs\n {\n SignUpQuotaConfig = new Gcp.IdentityPlatform.Inputs.ConfigQuotaSignUpQuotaConfigArgs\n {\n Quota = 1000,\n StartTime = \"\",\n QuotaDuration = \"7200s\",\n },\n },\n AuthorizedDomains = new[]\n {\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/identityplatform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"firebase\": pulumi.String(\"enabled\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"identitytoolkit\", \u0026projects.ServiceArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tService: pulumi.String(\"identitytoolkit.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewConfig(ctx, \"default\", \u0026identityplatform.ConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tAutodeleteAnonymousUsers: pulumi.Bool(true),\n\t\t\tSignIn: \u0026identityplatform.ConfigSignInArgs{\n\t\t\t\tAllowDuplicateEmails: pulumi.Bool(true),\n\t\t\t\tAnonymous: \u0026identityplatform.ConfigSignInAnonymousArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tEmail: \u0026identityplatform.ConfigSignInEmailArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tPasswordRequired: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tPhoneNumber: \u0026identityplatform.ConfigSignInPhoneNumberArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTestPhoneNumbers: pulumi.StringMap{\n\t\t\t\t\t\t\"+11231231234\": pulumi.String(\"000000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSmsRegionConfig: \u0026identityplatform.ConfigSmsRegionConfigArgs{\n\t\t\t\tAllowlistOnly: \u0026identityplatform.ConfigSmsRegionConfigAllowlistOnlyArgs{\n\t\t\t\t\tAllowedRegions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBlockingFunctions: \u0026identityplatform.ConfigBlockingFunctionsArgs{\n\t\t\t\tTriggers: identityplatform.ConfigBlockingFunctionsTriggerArray{\n\t\t\t\t\t\u0026identityplatform.ConfigBlockingFunctionsTriggerArgs{\n\t\t\t\t\t\tEventType: pulumi.String(\"beforeSignIn\"),\n\t\t\t\t\t\tFunctionUri: pulumi.String(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tForwardInboundCredentials: \u0026identityplatform.ConfigBlockingFunctionsForwardInboundCredentialsArgs{\n\t\t\t\t\tRefreshToken: pulumi.Bool(true),\n\t\t\t\t\tAccessToken: pulumi.Bool(true),\n\t\t\t\t\tIdToken: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuota: \u0026identityplatform.ConfigQuotaArgs{\n\t\t\t\tSignUpQuotaConfig: \u0026identityplatform.ConfigQuotaSignUpQuotaConfigArgs{\n\t\t\t\t\tQuota: pulumi.Int(1000),\n\t\t\t\t\tStartTime: pulumi.String(\"\"),\n\t\t\t\t\tQuotaDuration: pulumi.String(\"7200s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizedDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"localhost\"),\n\t\t\t\tpulumi.String(\"my-project.firebaseapp.com\"),\n\t\t\t\tpulumi.String(\"my-project.web.app\"),\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.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.identityplatform.Config;\nimport com.pulumi.gcp.identityplatform.ConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInAnonymousArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInEmailArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInPhoneNumberArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigAllowlistOnlyArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaSignUpQuotaConfigArgs;\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 default_ = new Project(\"default\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var identitytoolkit = new Service(\"identitytoolkit\", ServiceArgs.builder()\n .project(default_.projectId())\n .service(\"identitytoolkit.googleapis.com\")\n .build());\n\n var defaultConfig = new Config(\"defaultConfig\", ConfigArgs.builder()\n .project(default_.projectId())\n .autodeleteAnonymousUsers(true)\n .signIn(ConfigSignInArgs.builder()\n .allowDuplicateEmails(true)\n .anonymous(ConfigSignInAnonymousArgs.builder()\n .enabled(true)\n .build())\n .email(ConfigSignInEmailArgs.builder()\n .enabled(true)\n .passwordRequired(false)\n .build())\n .phoneNumber(ConfigSignInPhoneNumberArgs.builder()\n .enabled(true)\n .testPhoneNumbers(Map.of(\"+11231231234\", \"000000\"))\n .build())\n .build())\n .smsRegionConfig(ConfigSmsRegionConfigArgs.builder()\n .allowlistOnly(ConfigSmsRegionConfigAllowlistOnlyArgs.builder()\n .allowedRegions( \n \"US\",\n \"CA\")\n .build())\n .build())\n .blockingFunctions(ConfigBlockingFunctionsArgs.builder()\n .triggers(ConfigBlockingFunctionsTriggerArgs.builder()\n .eventType(\"beforeSignIn\")\n .functionUri(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\")\n .build())\n .forwardInboundCredentials(ConfigBlockingFunctionsForwardInboundCredentialsArgs.builder()\n .refreshToken(true)\n .accessToken(true)\n .idToken(true)\n .build())\n .build())\n .quota(ConfigQuotaArgs.builder()\n .signUpQuotaConfig(ConfigQuotaSignUpQuotaConfigArgs.builder()\n .quota(1000)\n .startTime(\"\")\n .quotaDuration(\"7200s\")\n .build())\n .build())\n .authorizedDomains( \n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n labels:\n firebase: enabled\n identitytoolkit:\n type: gcp:projects:Service\n properties:\n project: ${default.projectId}\n service: identitytoolkit.googleapis.com\n defaultConfig:\n type: gcp:identityplatform:Config\n name: default\n properties:\n project: ${default.projectId}\n autodeleteAnonymousUsers: true\n signIn:\n allowDuplicateEmails: true\n anonymous:\n enabled: true\n email:\n enabled: true\n passwordRequired: false\n phoneNumber:\n enabled: true\n testPhoneNumbers:\n '+11231231234': '000000'\n smsRegionConfig:\n allowlistOnly:\n allowedRegions:\n - US\n - CA\n blockingFunctions:\n triggers:\n - eventType: beforeSignIn\n functionUri: https://us-east1-my-project.cloudfunctions.net/before-sign-in\n forwardInboundCredentials:\n refreshToken: true\n accessToken: true\n idToken: true\n quota:\n signUpQuotaConfig:\n quota: 1000\n startTime:\n quotaDuration: 7200s\n authorizedDomains:\n - localhost\n - my-project.firebaseapp.com\n - my-project.web.app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/config`\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}/config\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default {{project}}\n```\n\n", + "description": "Identity Platform configuration for a Cloud project. Identity Platform is an\nend-to-end authentication system for third-party users to access apps\nand services.\n\nThis entity is created only once during intialization and cannot be deleted,\nindividual Identity Providers may be disabled instead. This resource may only\nbe created in billing-enabled projects.\n\n\nTo get more information about Config, see:\n\n* [API documentation](https://cloud.google.com/identity-platform/docs/reference/rest/v2/Config)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/identity-platform/docs)\n\n\n\n## Example Usage\n\n### Identity Platform Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst identitytoolkit = new gcp.projects.Service(\"identitytoolkit\", {\n project: _default.projectId,\n service: \"identitytoolkit.googleapis.com\",\n});\nconst defaultConfig = new gcp.identityplatform.Config(\"default\", {\n project: _default.projectId,\n autodeleteAnonymousUsers: true,\n signIn: {\n allowDuplicateEmails: true,\n anonymous: {\n enabled: true,\n },\n email: {\n enabled: true,\n passwordRequired: false,\n },\n phoneNumber: {\n enabled: true,\n testPhoneNumbers: {\n \"+11231231234\": \"000000\",\n },\n },\n },\n smsRegionConfig: {\n allowlistOnly: {\n allowedRegions: [\n \"US\",\n \"CA\",\n ],\n },\n },\n blockingFunctions: {\n triggers: [{\n eventType: \"beforeSignIn\",\n functionUri: \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n forwardInboundCredentials: {\n refreshToken: true,\n accessToken: true,\n idToken: true,\n },\n },\n quota: {\n signUpQuotaConfig: {\n quota: 1000,\n startTime: \"\",\n quotaDuration: \"7200s\",\n },\n },\n authorizedDomains: [\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\",\n labels={\n \"firebase\": \"enabled\",\n })\nidentitytoolkit = gcp.projects.Service(\"identitytoolkit\",\n project=default.project_id,\n service=\"identitytoolkit.googleapis.com\")\ndefault_config = gcp.identityplatform.Config(\"default\",\n project=default.project_id,\n autodelete_anonymous_users=True,\n sign_in={\n \"allow_duplicate_emails\": True,\n \"anonymous\": {\n \"enabled\": True,\n },\n \"email\": {\n \"enabled\": True,\n \"password_required\": False,\n },\n \"phone_number\": {\n \"enabled\": True,\n \"test_phone_numbers\": {\n \"+11231231234\": \"000000\",\n },\n },\n },\n sms_region_config={\n \"allowlist_only\": {\n \"allowed_regions\": [\n \"US\",\n \"CA\",\n ],\n },\n },\n blocking_functions={\n \"triggers\": [{\n \"event_type\": \"beforeSignIn\",\n \"function_uri\": \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n \"forward_inbound_credentials\": {\n \"refresh_token\": True,\n \"access_token\": True,\n \"id_token\": True,\n },\n },\n quota={\n \"sign_up_quota_config\": {\n \"quota\": 1000,\n \"start_time\": \"\",\n \"quota_duration\": \"7200s\",\n },\n },\n authorized_domains=[\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var identitytoolkit = new Gcp.Projects.Service(\"identitytoolkit\", new()\n {\n Project = @default.ProjectId,\n ServiceName = \"identitytoolkit.googleapis.com\",\n });\n\n var defaultConfig = new Gcp.IdentityPlatform.Config(\"default\", new()\n {\n Project = @default.ProjectId,\n AutodeleteAnonymousUsers = true,\n SignIn = new Gcp.IdentityPlatform.Inputs.ConfigSignInArgs\n {\n AllowDuplicateEmails = true,\n Anonymous = new Gcp.IdentityPlatform.Inputs.ConfigSignInAnonymousArgs\n {\n Enabled = true,\n },\n Email = new Gcp.IdentityPlatform.Inputs.ConfigSignInEmailArgs\n {\n Enabled = true,\n PasswordRequired = false,\n },\n PhoneNumber = new Gcp.IdentityPlatform.Inputs.ConfigSignInPhoneNumberArgs\n {\n Enabled = true,\n TestPhoneNumbers = \n {\n { \"+11231231234\", \"000000\" },\n },\n },\n },\n SmsRegionConfig = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigArgs\n {\n AllowlistOnly = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigAllowlistOnlyArgs\n {\n AllowedRegions = new[]\n {\n \"US\",\n \"CA\",\n },\n },\n },\n BlockingFunctions = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsArgs\n {\n Triggers = new[]\n {\n new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsTriggerArgs\n {\n EventType = \"beforeSignIn\",\n FunctionUri = \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n },\n },\n ForwardInboundCredentials = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs\n {\n RefreshToken = true,\n AccessToken = true,\n IdToken = true,\n },\n },\n Quota = new Gcp.IdentityPlatform.Inputs.ConfigQuotaArgs\n {\n SignUpQuotaConfig = new Gcp.IdentityPlatform.Inputs.ConfigQuotaSignUpQuotaConfigArgs\n {\n Quota = 1000,\n StartTime = \"\",\n QuotaDuration = \"7200s\",\n },\n },\n AuthorizedDomains = new[]\n {\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/identityplatform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"firebase\": pulumi.String(\"enabled\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"identitytoolkit\", \u0026projects.ServiceArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tService: pulumi.String(\"identitytoolkit.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewConfig(ctx, \"default\", \u0026identityplatform.ConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tAutodeleteAnonymousUsers: pulumi.Bool(true),\n\t\t\tSignIn: \u0026identityplatform.ConfigSignInArgs{\n\t\t\t\tAllowDuplicateEmails: pulumi.Bool(true),\n\t\t\t\tAnonymous: \u0026identityplatform.ConfigSignInAnonymousArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tEmail: \u0026identityplatform.ConfigSignInEmailArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tPasswordRequired: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tPhoneNumber: \u0026identityplatform.ConfigSignInPhoneNumberArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTestPhoneNumbers: pulumi.StringMap{\n\t\t\t\t\t\t\"+11231231234\": pulumi.String(\"000000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSmsRegionConfig: \u0026identityplatform.ConfigSmsRegionConfigArgs{\n\t\t\t\tAllowlistOnly: \u0026identityplatform.ConfigSmsRegionConfigAllowlistOnlyArgs{\n\t\t\t\t\tAllowedRegions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBlockingFunctions: \u0026identityplatform.ConfigBlockingFunctionsArgs{\n\t\t\t\tTriggers: identityplatform.ConfigBlockingFunctionsTriggerArray{\n\t\t\t\t\t\u0026identityplatform.ConfigBlockingFunctionsTriggerArgs{\n\t\t\t\t\t\tEventType: pulumi.String(\"beforeSignIn\"),\n\t\t\t\t\t\tFunctionUri: pulumi.String(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tForwardInboundCredentials: \u0026identityplatform.ConfigBlockingFunctionsForwardInboundCredentialsArgs{\n\t\t\t\t\tRefreshToken: pulumi.Bool(true),\n\t\t\t\t\tAccessToken: pulumi.Bool(true),\n\t\t\t\t\tIdToken: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuota: \u0026identityplatform.ConfigQuotaArgs{\n\t\t\t\tSignUpQuotaConfig: \u0026identityplatform.ConfigQuotaSignUpQuotaConfigArgs{\n\t\t\t\t\tQuota: pulumi.Int(1000),\n\t\t\t\t\tStartTime: pulumi.String(\"\"),\n\t\t\t\t\tQuotaDuration: pulumi.String(\"7200s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizedDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"localhost\"),\n\t\t\t\tpulumi.String(\"my-project.firebaseapp.com\"),\n\t\t\t\tpulumi.String(\"my-project.web.app\"),\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.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.identityplatform.Config;\nimport com.pulumi.gcp.identityplatform.ConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInAnonymousArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInEmailArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInPhoneNumberArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigAllowlistOnlyArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaSignUpQuotaConfigArgs;\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 default_ = new Project(\"default\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var identitytoolkit = new Service(\"identitytoolkit\", ServiceArgs.builder()\n .project(default_.projectId())\n .service(\"identitytoolkit.googleapis.com\")\n .build());\n\n var defaultConfig = new Config(\"defaultConfig\", ConfigArgs.builder()\n .project(default_.projectId())\n .autodeleteAnonymousUsers(true)\n .signIn(ConfigSignInArgs.builder()\n .allowDuplicateEmails(true)\n .anonymous(ConfigSignInAnonymousArgs.builder()\n .enabled(true)\n .build())\n .email(ConfigSignInEmailArgs.builder()\n .enabled(true)\n .passwordRequired(false)\n .build())\n .phoneNumber(ConfigSignInPhoneNumberArgs.builder()\n .enabled(true)\n .testPhoneNumbers(Map.of(\"+11231231234\", \"000000\"))\n .build())\n .build())\n .smsRegionConfig(ConfigSmsRegionConfigArgs.builder()\n .allowlistOnly(ConfigSmsRegionConfigAllowlistOnlyArgs.builder()\n .allowedRegions( \n \"US\",\n \"CA\")\n .build())\n .build())\n .blockingFunctions(ConfigBlockingFunctionsArgs.builder()\n .triggers(ConfigBlockingFunctionsTriggerArgs.builder()\n .eventType(\"beforeSignIn\")\n .functionUri(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\")\n .build())\n .forwardInboundCredentials(ConfigBlockingFunctionsForwardInboundCredentialsArgs.builder()\n .refreshToken(true)\n .accessToken(true)\n .idToken(true)\n .build())\n .build())\n .quota(ConfigQuotaArgs.builder()\n .signUpQuotaConfig(ConfigQuotaSignUpQuotaConfigArgs.builder()\n .quota(1000)\n .startTime(\"\")\n .quotaDuration(\"7200s\")\n .build())\n .build())\n .authorizedDomains( \n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n labels:\n firebase: enabled\n identitytoolkit:\n type: gcp:projects:Service\n properties:\n project: ${default.projectId}\n service: identitytoolkit.googleapis.com\n defaultConfig:\n type: gcp:identityplatform:Config\n name: default\n properties:\n project: ${default.projectId}\n autodeleteAnonymousUsers: true\n signIn:\n allowDuplicateEmails: true\n anonymous:\n enabled: true\n email:\n enabled: true\n passwordRequired: false\n phoneNumber:\n enabled: true\n testPhoneNumbers:\n '+11231231234': '000000'\n smsRegionConfig:\n allowlistOnly:\n allowedRegions:\n - US\n - CA\n blockingFunctions:\n triggers:\n - eventType: beforeSignIn\n functionUri: https://us-east1-my-project.cloudfunctions.net/before-sign-in\n forwardInboundCredentials:\n refreshToken: true\n accessToken: true\n idToken: true\n quota:\n signUpQuotaConfig:\n quota: 1000\n startTime:\n quotaDuration: 7200s\n authorizedDomains:\n - localhost\n - my-project.firebaseapp.com\n - my-project.web.app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/config`\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}/config\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default {{project}}\n```\n\n", "properties": { "authorizedDomains": { "type": "array", @@ -232086,7 +232086,7 @@ } }, "gcp:networkservices/edgeCacheService:EdgeCacheService": { - "description": "EdgeCacheService defines the IP addresses, protocols, security policies, cache policies and routing configuration.\n\n\n\n\u003e **Warning:** These resources require allow-listing to use, and are not openly available to all Cloud customers. Engage with your Cloud account team to discuss how to onboard.\n\n## Example Usage\n\n### Network Services Edge Cache Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\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\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\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 dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst google = new gcp.networkservices.EdgeCacheOrigin(\"google\", {\n name: \"origin-google\",\n originAddress: \"google.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n disableQuic: true,\n disableHttp2: true,\n labels: {\n a: \"b\",\n },\n routing: {\n hostRules: [\n {\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule2\",\n hosts: [\"sslcert.tf-test2.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule3\",\n hosts: [\"sslcert.tf-test3.club\"],\n pathMatcher: \"routesAdvanced\",\n },\n ],\n pathMatchers: [\n {\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n name: \"routesAdvanced\",\n description: \"an advanced ruleset\",\n routeRules: [\n {\n description: \"an advanced route rule to match against\",\n priority: \"1\",\n matchRules: [\n {\n prefixMatch: \"/potato/\",\n queryParameterMatches: [\n {\n name: \"debug\",\n presentMatch: true,\n },\n {\n name: \"state\",\n exactMatch: \"debug\",\n },\n ],\n },\n {\n fullPathMatch: \"/apple\",\n },\n ],\n headerAction: {\n requestHeaderToAdds: [\n {\n headerName: \"debug\",\n headerValue: \"true\",\n replace: true,\n },\n {\n headerName: \"potato\",\n headerValue: \"plant\",\n },\n ],\n responseHeaderToAdds: [{\n headerName: \"potato\",\n headerValue: \"plant\",\n replace: true,\n }],\n requestHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n responseHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n },\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3800s\",\n clientTtl: \"3600s\",\n maxTtl: \"9000s\",\n cacheKeyPolicy: {\n includeProtocol: true,\n excludeHost: true,\n includedQueryParameters: [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n includedHeaderNames: [\"banana\"],\n includedCookieNames: [\"orange\"],\n },\n negativeCaching: true,\n signedRequestMode: \"DISABLED\",\n negativeCachingPolicy: {\n \"500\": \"3000s\",\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"/dev\",\n hostRewrite: \"dev.club\",\n },\n corsPolicy: {\n maxAge: \"2500s\",\n allowCredentials: true,\n allowOrigins: [\"*\"],\n allowMethods: [\"GET\"],\n allowHeaders: [\"dev\"],\n exposeHeaders: [\"prod\"],\n },\n },\n },\n {\n description: \"a second route rule to match against\",\n priority: \"2\",\n matchRules: [{\n fullPathMatch: \"/yay\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n cacheKeyPolicy: {\n excludedQueryParameters: [\"dev\"],\n },\n },\n corsPolicy: {\n maxAge: \"3000s\",\n allowHeaders: [\"dev\"],\n disabled: true,\n },\n },\n },\n ],\n },\n ],\n },\n logConfig: {\n enable: true,\n sampleRate: 0.01,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ngoogle = gcp.networkservices.EdgeCacheOrigin(\"google\",\n name=\"origin-google\",\n origin_address=\"google.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n disable_quic=True,\n disable_http2=True,\n labels={\n \"a\": \"b\",\n },\n routing={\n \"host_rules\": [\n {\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule2\",\n \"hosts\": [\"sslcert.tf-test2.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule3\",\n \"hosts\": [\"sslcert.tf-test3.club\"],\n \"path_matcher\": \"routesAdvanced\",\n },\n ],\n \"path_matchers\": [\n {\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n \"name\": \"routesAdvanced\",\n \"description\": \"an advanced ruleset\",\n \"route_rules\": [\n {\n \"description\": \"an advanced route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [\n {\n \"prefix_match\": \"/potato/\",\n \"query_parameter_matches\": [\n {\n \"name\": \"debug\",\n \"present_match\": True,\n },\n {\n \"name\": \"state\",\n \"exact_match\": \"debug\",\n },\n ],\n },\n {\n \"full_path_match\": \"/apple\",\n },\n ],\n \"header_action\": {\n \"request_header_to_adds\": [\n {\n \"header_name\": \"debug\",\n \"header_value\": \"true\",\n \"replace\": True,\n },\n {\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n },\n ],\n \"response_header_to_adds\": [{\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n \"replace\": True,\n }],\n \"request_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n \"response_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n },\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3800s\",\n \"client_ttl\": \"3600s\",\n \"max_ttl\": \"9000s\",\n \"cache_key_policy\": {\n \"include_protocol\": True,\n \"exclude_host\": True,\n \"included_query_parameters\": [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n \"included_header_names\": [\"banana\"],\n \"included_cookie_names\": [\"orange\"],\n },\n \"negative_caching\": True,\n \"signed_request_mode\": \"DISABLED\",\n \"negative_caching_policy\": {\n \"_500\": \"3000s\",\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"/dev\",\n \"host_rewrite\": \"dev.club\",\n },\n \"cors_policy\": {\n \"max_age\": \"2500s\",\n \"allow_credentials\": True,\n \"allow_origins\": [\"*\"],\n \"allow_methods\": [\"GET\"],\n \"allow_headers\": [\"dev\"],\n \"expose_headers\": [\"prod\"],\n },\n },\n },\n {\n \"description\": \"a second route rule to match against\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"full_path_match\": \"/yay\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n \"cache_key_policy\": {\n \"excluded_query_parameters\": [\"dev\"],\n },\n },\n \"cors_policy\": {\n \"max_age\": \"3000s\",\n \"allow_headers\": [\"dev\"],\n \"disabled\": True,\n },\n },\n },\n ],\n },\n ],\n },\n log_config={\n \"enable\": True,\n \"sample_rate\": 0.01,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var google = new Gcp.NetworkServices.EdgeCacheOrigin(\"google\", new()\n {\n Name = \"origin-google\",\n OriginAddress = \"google.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n DisableQuic = true,\n DisableHttp2 = true,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule2\",\n Hosts = new[]\n {\n \"sslcert.tf-test2.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule3\",\n Hosts = new[]\n {\n \"sslcert.tf-test3.club\",\n },\n PathMatcher = \"routesAdvanced\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routesAdvanced\",\n Description = \"an advanced ruleset\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"an advanced route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/potato/\",\n QueryParameterMatches = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"debug\",\n PresentMatch = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"state\",\n ExactMatch = \"debug\",\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/apple\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"debug\",\n HeaderValue = \"true\",\n Replace = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n },\n },\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n Replace = true,\n },\n },\n RequestHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n ResponseHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3800s\",\n ClientTtl = \"3600s\",\n MaxTtl = \"9000s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n IncludeProtocol = true,\n ExcludeHost = true,\n IncludedQueryParameters = new[]\n {\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n },\n IncludedHeaderNames = new[]\n {\n \"banana\",\n },\n IncludedCookieNames = new[]\n {\n \"orange\",\n },\n },\n NegativeCaching = true,\n SignedRequestMode = \"DISABLED\",\n NegativeCachingPolicy = \n {\n { \"500\", \"3000s\" },\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"/dev\",\n HostRewrite = \"dev.club\",\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"2500s\",\n AllowCredentials = true,\n AllowOrigins = new[]\n {\n \"*\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowHeaders = new[]\n {\n \"dev\",\n },\n ExposeHeaders = new[]\n {\n \"prod\",\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a second route rule to match against\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/yay\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n ExcludedQueryParameters = new[]\n {\n \"dev\",\n },\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"3000s\",\n AllowHeaders = new[]\n {\n \"dev\",\n },\n Disabled = true,\n },\n },\n },\n },\n },\n },\n },\n LogConfig = new Gcp.NetworkServices.Inputs.EdgeCacheServiceLogConfigArgs\n {\n Enable = true,\n SampleRate = 0.01,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\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\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"google\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"origin-google\"),\n\t\t\tOriginAddress: pulumi.String(\"google.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tDisableQuic: pulumi.Bool(true),\n\t\t\tDisableHttp2: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule2\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test2.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule3\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test3.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"an advanced ruleset\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"an advanced route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/potato/\"),\n\t\t\t\t\t\t\t\t\t\tQueryParameterMatches: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"state\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/apple\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tRequestHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"true\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequestHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3800s\"),\n\t\t\t\t\t\t\t\t\t\tClientTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tMaxTtl: pulumi.String(\"9000s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tExcludeHost: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tIncludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"apple\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"santa\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"claus\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedHeaderNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"banana\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedCookieNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"orange\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"DISABLED\"),\n\t\t\t\t\t\t\t\t\t\tNegativeCachingPolicy: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\t\t\"500\": pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/dev\"),\n\t\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.club\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"2500s\"),\n\t\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a second route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/yay\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tExcludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\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\tLogConfig: \u0026networkservices.EdgeCacheServiceLogConfigArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\tSampleRate: pulumi.Float64(0.01),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceLogConfigArgs;\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 dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var google = new EdgeCacheOrigin(\"google\", EdgeCacheOriginArgs.builder()\n .name(\"origin-google\")\n .originAddress(\"google.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .disableQuic(true)\n .disableHttp2(true)\n .labels(Map.of(\"a\", \"b\"))\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules( \n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule2\")\n .hosts(\"sslcert.tf-test2.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule3\")\n .hosts(\"sslcert.tf-test3.club\")\n .pathMatcher(\"routesAdvanced\")\n .build())\n .pathMatchers( \n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routesAdvanced\")\n .description(\"an advanced ruleset\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"an advanced route rule to match against\")\n .priority(1)\n .matchRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/potato/\")\n .queryParameterMatches( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"debug\")\n .presentMatch(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"state\")\n .exactMatch(\"debug\")\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/apple\")\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeaderToAdds( \n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"debug\")\n .headerValue(\"true\")\n .replace(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .build())\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .replace(true)\n .build())\n .requestHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .responseHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3800s\")\n .clientTtl(\"3600s\")\n .maxTtl(\"9000s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .includeProtocol(true)\n .excludeHost(true)\n .includedQueryParameters( \n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\")\n .includedHeaderNames(\"banana\")\n .includedCookieNames(\"orange\")\n .build())\n .negativeCaching(true)\n .signedRequestMode(\"DISABLED\")\n .negativeCachingPolicy(Map.of(\"500\", \"3000s\"))\n .build())\n .urlRewrite(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"/dev\")\n .hostRewrite(\"dev.club\")\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"2500s\")\n .allowCredentials(true)\n .allowOrigins(\"*\")\n .allowMethods(\"GET\")\n .allowHeaders(\"dev\")\n .exposeHeaders(\"prod\")\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a second route rule to match against\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/yay\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .excludedQueryParameters(\"dev\")\n .build())\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"3000s\")\n .allowHeaders(\"dev\")\n .disabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .logConfig(EdgeCacheServiceLogConfigArgs.builder()\n .enable(true)\n .sampleRate(0.01)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n google:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: origin-google\n originAddress: google.com\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n disableQuic: true\n disableHttp2: true\n labels:\n a: b\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n - description: host rule2\n hosts:\n - sslcert.tf-test2.club\n pathMatcher: routes\n - description: host rule3\n hosts:\n - sslcert.tf-test3.club\n pathMatcher: routesAdvanced\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n - name: routesAdvanced\n description: an advanced ruleset\n routeRules:\n - description: an advanced route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /potato/\n queryParameterMatches:\n - name: debug\n presentMatch: true\n - name: state\n exactMatch: debug\n - fullPathMatch: /apple\n headerAction:\n requestHeaderToAdds:\n - headerName: debug\n headerValue: 'true'\n replace: true\n - headerName: potato\n headerValue: plant\n responseHeaderToAdds:\n - headerName: potato\n headerValue: plant\n replace: true\n requestHeaderToRemoves:\n - headerName: prod\n responseHeaderToRemoves:\n - headerName: prod\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3800s\n clientTtl: 3600s\n maxTtl: 9000s\n cacheKeyPolicy:\n includeProtocol: true\n excludeHost: true\n includedQueryParameters:\n - apple\n - dev\n - santa\n - claus\n includedHeaderNames:\n - banana\n includedCookieNames:\n - orange\n negativeCaching: true\n signedRequestMode: DISABLED\n negativeCachingPolicy:\n '500': 3000s\n urlRewrite:\n pathPrefixRewrite: /dev\n hostRewrite: dev.club\n corsPolicy:\n maxAge: 2500s\n allowCredentials: true\n allowOrigins:\n - '*'\n allowMethods:\n - GET\n allowHeaders:\n - dev\n exposeHeaders:\n - prod\n - description: a second route rule to match against\n priority: 2\n matchRules:\n - fullPathMatch: /yay\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n cacheKeyPolicy:\n excludedQueryParameters:\n - dev\n corsPolicy:\n maxAge: 3000s\n allowHeaders:\n - dev\n disabled: true\n logConfig:\n enable: true\n sampleRate: 0.01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst keyset = new gcp.networkservices.EdgeCacheKeyset(\"keyset\", {\n name: \"keyset-name\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [\n {\n description: \"a route rule to match against master playlist\",\n priority: \"1\",\n matchRules: [{\n pathTemplateMatch: \"/master.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"edge-cache-token\",\n },\n signedRequestMaximumExpirationTtl: \"600s\",\n addSignatures: {\n actions: \"GENERATE_COOKIE\",\n keyset: keyset.id,\n copiedParameters: [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n description: \"a route rule to match against all playlists\",\n priority: \"2\",\n matchRules: [{\n pathTemplateMatch: \"/*.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdnts\",\n allowedSignatureAlgorithms: [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n addSignatures: {\n actions: \"GENERATE_TOKEN_HLS_COOKIELESS\",\n keyset: keyset.id,\n tokenTtl: \"1200s\",\n tokenQueryParameter: \"hdntl\",\n copiedParameters: [\"URLPrefix\"],\n },\n },\n },\n },\n {\n description: \"a route rule to match against\",\n priority: \"3\",\n matchRules: [{\n pathTemplateMatch: \"/**.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdntl\",\n },\n addSignatures: {\n actions: \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n tokenQueryParameter: \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\nkeyset = gcp.networkservices.EdgeCacheKeyset(\"keyset\",\n name=\"keyset-name\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secret_version\": secret_version_basic.id,\n }])\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [\n {\n \"description\": \"a route rule to match against master playlist\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"path_template_match\": \"/master.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"edge-cache-token\",\n },\n \"signed_request_maximum_expiration_ttl\": \"600s\",\n \"add_signatures\": {\n \"actions\": \"GENERATE_COOKIE\",\n \"keyset\": keyset.id,\n \"copied_parameters\": [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against all playlists\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"path_template_match\": \"/*.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdnts\",\n \"allowed_signature_algorithms\": [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n \"add_signatures\": {\n \"actions\": \"GENERATE_TOKEN_HLS_COOKIELESS\",\n \"keyset\": keyset.id,\n \"token_ttl\": \"1200s\",\n \"token_query_parameter\": \"hdntl\",\n \"copied_parameters\": [\"URLPrefix\"],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against\",\n \"priority\": \"3\",\n \"match_rules\": [{\n \"path_template_match\": \"/**.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdntl\",\n },\n \"add_signatures\": {\n \"actions\": \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n \"token_query_parameter\": \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var keyset = new Gcp.NetworkServices.EdgeCacheKeyset(\"keyset\", new()\n {\n Name = \"keyset-name\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against master playlist\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/master.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"edge-cache-token\",\n },\n SignedRequestMaximumExpirationTtl = \"600s\",\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_COOKIE\",\n Keyset = keyset.Id,\n CopiedParameters = new[]\n {\n \"PathGlobs\",\n \"SessionID\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against all playlists\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/*.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdnts\",\n AllowedSignatureAlgorithms = new[]\n {\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n },\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_TOKEN_HLS_COOKIELESS\",\n Keyset = keyset.Id,\n TokenTtl = \"1200s\",\n TokenQueryParameter = \"hdntl\",\n CopiedParameters = new[]\n {\n \"URLPrefix\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"3\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/**.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdntl\",\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n TokenQueryParameter = \"hdntl\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\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 := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyset, err := networkservices.NewEdgeCacheKeyset(ctx, \"keyset\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"keyset-name\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.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\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against master playlist\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/master.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"edge-cache-token\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSignedRequestMaximumExpirationTtl: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_COOKIE\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"PathGlobs\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"SessionID\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against all playlists\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/*.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdnts\"),\n\t\t\t\t\t\t\t\t\t\t\tAllowedSignatureAlgorithms: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"ED25519\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA_256\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tTokenTtl: pulumi.String(\"1200s\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"URLPrefix\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"3\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/**.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"PROPAGATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var keyset = new EdgeCacheKeyset(\"keyset\", EdgeCacheKeysetArgs.builder()\n .name(\"keyset-name\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against master playlist\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/master.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"edge-cache-token\")\n .build())\n .signedRequestMaximumExpirationTtl(\"600s\")\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_COOKIE\")\n .keyset(keyset.id())\n .copiedParameters( \n \"PathGlobs\",\n \"SessionID\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against all playlists\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/*.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdnts\")\n .allowedSignatureAlgorithms( \n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_TOKEN_HLS_COOKIELESS\")\n .keyset(keyset.id())\n .tokenTtl(\"1200s\")\n .tokenQueryParameter(\"hdntl\")\n .copiedParameters(\"URLPrefix\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(3)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/**.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdntl\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"PROPAGATE_TOKEN_HLS_COOKIELESS\")\n .tokenQueryParameter(\"hdntl\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n keyset:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: keyset-name\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against master playlist\n priority: 1\n matchRules:\n - pathTemplateMatch: /master.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: edge-cache-token\n signedRequestMaximumExpirationTtl: 600s\n addSignatures:\n actions: GENERATE_COOKIE\n keyset: ${keyset.id}\n copiedParameters:\n - PathGlobs\n - SessionID\n - description: a route rule to match against all playlists\n priority: 2\n matchRules:\n - pathTemplateMatch: /*.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdnts\n allowedSignatureAlgorithms:\n - ED25519\n - HMAC_SHA_256\n - HMAC_SHA1\n addSignatures:\n actions: GENERATE_TOKEN_HLS_COOKIELESS\n keyset: ${keyset.id}\n tokenTtl: 1200s\n tokenQueryParameter: hdntl\n copiedParameters:\n - URLPrefix\n - description: a route rule to match against\n priority: 3\n matchRules:\n - pathTemplateMatch: /**.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdntl\n addSignatures:\n actions: PROPAGATE_TOKEN_HLS_COOKIELESS\n tokenQueryParameter: hdntl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheServices/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default projects/{{project}}/locations/global/edgeCacheServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{name}}\n```\n\n", + "description": "EdgeCacheService defines the IP addresses, protocols, security policies, cache policies and routing configuration.\n\n\n\n\u003e **Warning:** These resources require allow-listing to use, and are not openly available to all Cloud customers. Engage with your Cloud account team to discuss how to onboard.\n\n## Example Usage\n\n### Network Services Edge Cache Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\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\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\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 dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst google = new gcp.networkservices.EdgeCacheOrigin(\"google\", {\n name: \"origin-google\",\n originAddress: \"google.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n disableQuic: true,\n disableHttp2: true,\n labels: {\n a: \"b\",\n },\n routing: {\n hostRules: [\n {\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule2\",\n hosts: [\"sslcert.tf-test2.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule3\",\n hosts: [\"sslcert.tf-test3.club\"],\n pathMatcher: \"routesAdvanced\",\n },\n ],\n pathMatchers: [\n {\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n name: \"routesAdvanced\",\n description: \"an advanced ruleset\",\n routeRules: [\n {\n description: \"an advanced route rule to match against\",\n priority: \"1\",\n matchRules: [\n {\n prefixMatch: \"/potato/\",\n queryParameterMatches: [\n {\n name: \"debug\",\n presentMatch: true,\n },\n {\n name: \"state\",\n exactMatch: \"debug\",\n },\n ],\n },\n {\n fullPathMatch: \"/apple\",\n },\n ],\n headerAction: {\n requestHeaderToAdds: [\n {\n headerName: \"debug\",\n headerValue: \"true\",\n replace: true,\n },\n {\n headerName: \"potato\",\n headerValue: \"plant\",\n },\n ],\n responseHeaderToAdds: [{\n headerName: \"potato\",\n headerValue: \"plant\",\n replace: true,\n }],\n requestHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n responseHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n },\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3800s\",\n clientTtl: \"3600s\",\n maxTtl: \"9000s\",\n cacheKeyPolicy: {\n includeProtocol: true,\n excludeHost: true,\n includedQueryParameters: [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n includedHeaderNames: [\"banana\"],\n includedCookieNames: [\"orange\"],\n },\n negativeCaching: true,\n signedRequestMode: \"DISABLED\",\n negativeCachingPolicy: {\n \"500\": \"3000s\",\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"/dev\",\n hostRewrite: \"dev.club\",\n },\n corsPolicy: {\n maxAge: \"2500s\",\n allowCredentials: true,\n allowOrigins: [\"*\"],\n allowMethods: [\"GET\"],\n allowHeaders: [\"dev\"],\n exposeHeaders: [\"prod\"],\n },\n },\n },\n {\n description: \"a second route rule to match against\",\n priority: \"2\",\n matchRules: [{\n fullPathMatch: \"/yay\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n cacheKeyPolicy: {\n excludedQueryParameters: [\"dev\"],\n },\n },\n corsPolicy: {\n maxAge: \"3000s\",\n allowHeaders: [\"dev\"],\n disabled: true,\n },\n },\n },\n ],\n },\n ],\n },\n logConfig: {\n enable: true,\n sampleRate: 0.01,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ngoogle = gcp.networkservices.EdgeCacheOrigin(\"google\",\n name=\"origin-google\",\n origin_address=\"google.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n disable_quic=True,\n disable_http2=True,\n labels={\n \"a\": \"b\",\n },\n routing={\n \"host_rules\": [\n {\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule2\",\n \"hosts\": [\"sslcert.tf-test2.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule3\",\n \"hosts\": [\"sslcert.tf-test3.club\"],\n \"path_matcher\": \"routesAdvanced\",\n },\n ],\n \"path_matchers\": [\n {\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n \"name\": \"routesAdvanced\",\n \"description\": \"an advanced ruleset\",\n \"route_rules\": [\n {\n \"description\": \"an advanced route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [\n {\n \"prefix_match\": \"/potato/\",\n \"query_parameter_matches\": [\n {\n \"name\": \"debug\",\n \"present_match\": True,\n },\n {\n \"name\": \"state\",\n \"exact_match\": \"debug\",\n },\n ],\n },\n {\n \"full_path_match\": \"/apple\",\n },\n ],\n \"header_action\": {\n \"request_header_to_adds\": [\n {\n \"header_name\": \"debug\",\n \"header_value\": \"true\",\n \"replace\": True,\n },\n {\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n },\n ],\n \"response_header_to_adds\": [{\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n \"replace\": True,\n }],\n \"request_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n \"response_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n },\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3800s\",\n \"client_ttl\": \"3600s\",\n \"max_ttl\": \"9000s\",\n \"cache_key_policy\": {\n \"include_protocol\": True,\n \"exclude_host\": True,\n \"included_query_parameters\": [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n \"included_header_names\": [\"banana\"],\n \"included_cookie_names\": [\"orange\"],\n },\n \"negative_caching\": True,\n \"signed_request_mode\": \"DISABLED\",\n \"negative_caching_policy\": {\n \"500\": \"3000s\",\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"/dev\",\n \"host_rewrite\": \"dev.club\",\n },\n \"cors_policy\": {\n \"max_age\": \"2500s\",\n \"allow_credentials\": True,\n \"allow_origins\": [\"*\"],\n \"allow_methods\": [\"GET\"],\n \"allow_headers\": [\"dev\"],\n \"expose_headers\": [\"prod\"],\n },\n },\n },\n {\n \"description\": \"a second route rule to match against\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"full_path_match\": \"/yay\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n \"cache_key_policy\": {\n \"excluded_query_parameters\": [\"dev\"],\n },\n },\n \"cors_policy\": {\n \"max_age\": \"3000s\",\n \"allow_headers\": [\"dev\"],\n \"disabled\": True,\n },\n },\n },\n ],\n },\n ],\n },\n log_config={\n \"enable\": True,\n \"sample_rate\": 0.01,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var google = new Gcp.NetworkServices.EdgeCacheOrigin(\"google\", new()\n {\n Name = \"origin-google\",\n OriginAddress = \"google.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n DisableQuic = true,\n DisableHttp2 = true,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule2\",\n Hosts = new[]\n {\n \"sslcert.tf-test2.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule3\",\n Hosts = new[]\n {\n \"sslcert.tf-test3.club\",\n },\n PathMatcher = \"routesAdvanced\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routesAdvanced\",\n Description = \"an advanced ruleset\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"an advanced route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/potato/\",\n QueryParameterMatches = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"debug\",\n PresentMatch = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"state\",\n ExactMatch = \"debug\",\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/apple\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"debug\",\n HeaderValue = \"true\",\n Replace = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n },\n },\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n Replace = true,\n },\n },\n RequestHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n ResponseHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3800s\",\n ClientTtl = \"3600s\",\n MaxTtl = \"9000s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n IncludeProtocol = true,\n ExcludeHost = true,\n IncludedQueryParameters = new[]\n {\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n },\n IncludedHeaderNames = new[]\n {\n \"banana\",\n },\n IncludedCookieNames = new[]\n {\n \"orange\",\n },\n },\n NegativeCaching = true,\n SignedRequestMode = \"DISABLED\",\n NegativeCachingPolicy = \n {\n { \"500\", \"3000s\" },\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"/dev\",\n HostRewrite = \"dev.club\",\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"2500s\",\n AllowCredentials = true,\n AllowOrigins = new[]\n {\n \"*\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowHeaders = new[]\n {\n \"dev\",\n },\n ExposeHeaders = new[]\n {\n \"prod\",\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a second route rule to match against\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/yay\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n ExcludedQueryParameters = new[]\n {\n \"dev\",\n },\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"3000s\",\n AllowHeaders = new[]\n {\n \"dev\",\n },\n Disabled = true,\n },\n },\n },\n },\n },\n },\n },\n LogConfig = new Gcp.NetworkServices.Inputs.EdgeCacheServiceLogConfigArgs\n {\n Enable = true,\n SampleRate = 0.01,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\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\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"google\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"origin-google\"),\n\t\t\tOriginAddress: pulumi.String(\"google.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tDisableQuic: pulumi.Bool(true),\n\t\t\tDisableHttp2: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule2\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test2.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule3\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test3.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"an advanced ruleset\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"an advanced route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/potato/\"),\n\t\t\t\t\t\t\t\t\t\tQueryParameterMatches: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"state\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/apple\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tRequestHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"true\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequestHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3800s\"),\n\t\t\t\t\t\t\t\t\t\tClientTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tMaxTtl: pulumi.String(\"9000s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tExcludeHost: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tIncludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"apple\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"santa\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"claus\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedHeaderNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"banana\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedCookieNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"orange\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"DISABLED\"),\n\t\t\t\t\t\t\t\t\t\tNegativeCachingPolicy: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\t\t\"500\": pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/dev\"),\n\t\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.club\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"2500s\"),\n\t\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a second route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/yay\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tExcludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\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\tLogConfig: \u0026networkservices.EdgeCacheServiceLogConfigArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\tSampleRate: pulumi.Float64(0.01),\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceLogConfigArgs;\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 dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var google = new EdgeCacheOrigin(\"google\", EdgeCacheOriginArgs.builder()\n .name(\"origin-google\")\n .originAddress(\"google.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .disableQuic(true)\n .disableHttp2(true)\n .labels(Map.of(\"a\", \"b\"))\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules( \n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule2\")\n .hosts(\"sslcert.tf-test2.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule3\")\n .hosts(\"sslcert.tf-test3.club\")\n .pathMatcher(\"routesAdvanced\")\n .build())\n .pathMatchers( \n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routesAdvanced\")\n .description(\"an advanced ruleset\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"an advanced route rule to match against\")\n .priority(1)\n .matchRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/potato/\")\n .queryParameterMatches( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"debug\")\n .presentMatch(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"state\")\n .exactMatch(\"debug\")\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/apple\")\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeaderToAdds( \n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"debug\")\n .headerValue(\"true\")\n .replace(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .build())\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .replace(true)\n .build())\n .requestHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .responseHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3800s\")\n .clientTtl(\"3600s\")\n .maxTtl(\"9000s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .includeProtocol(true)\n .excludeHost(true)\n .includedQueryParameters( \n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\")\n .includedHeaderNames(\"banana\")\n .includedCookieNames(\"orange\")\n .build())\n .negativeCaching(true)\n .signedRequestMode(\"DISABLED\")\n .negativeCachingPolicy(Map.of(\"500\", \"3000s\"))\n .build())\n .urlRewrite(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"/dev\")\n .hostRewrite(\"dev.club\")\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"2500s\")\n .allowCredentials(true)\n .allowOrigins(\"*\")\n .allowMethods(\"GET\")\n .allowHeaders(\"dev\")\n .exposeHeaders(\"prod\")\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a second route rule to match against\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/yay\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .excludedQueryParameters(\"dev\")\n .build())\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"3000s\")\n .allowHeaders(\"dev\")\n .disabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .logConfig(EdgeCacheServiceLogConfigArgs.builder()\n .enable(true)\n .sampleRate(0.01)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n google:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: origin-google\n originAddress: google.com\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n disableQuic: true\n disableHttp2: true\n labels:\n a: b\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n - description: host rule2\n hosts:\n - sslcert.tf-test2.club\n pathMatcher: routes\n - description: host rule3\n hosts:\n - sslcert.tf-test3.club\n pathMatcher: routesAdvanced\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n - name: routesAdvanced\n description: an advanced ruleset\n routeRules:\n - description: an advanced route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /potato/\n queryParameterMatches:\n - name: debug\n presentMatch: true\n - name: state\n exactMatch: debug\n - fullPathMatch: /apple\n headerAction:\n requestHeaderToAdds:\n - headerName: debug\n headerValue: 'true'\n replace: true\n - headerName: potato\n headerValue: plant\n responseHeaderToAdds:\n - headerName: potato\n headerValue: plant\n replace: true\n requestHeaderToRemoves:\n - headerName: prod\n responseHeaderToRemoves:\n - headerName: prod\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3800s\n clientTtl: 3600s\n maxTtl: 9000s\n cacheKeyPolicy:\n includeProtocol: true\n excludeHost: true\n includedQueryParameters:\n - apple\n - dev\n - santa\n - claus\n includedHeaderNames:\n - banana\n includedCookieNames:\n - orange\n negativeCaching: true\n signedRequestMode: DISABLED\n negativeCachingPolicy:\n '500': 3000s\n urlRewrite:\n pathPrefixRewrite: /dev\n hostRewrite: dev.club\n corsPolicy:\n maxAge: 2500s\n allowCredentials: true\n allowOrigins:\n - '*'\n allowMethods:\n - GET\n allowHeaders:\n - dev\n exposeHeaders:\n - prod\n - description: a second route rule to match against\n priority: 2\n matchRules:\n - fullPathMatch: /yay\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n cacheKeyPolicy:\n excludedQueryParameters:\n - dev\n corsPolicy:\n maxAge: 3000s\n allowHeaders:\n - dev\n disabled: true\n logConfig:\n enable: true\n sampleRate: 0.01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst keyset = new gcp.networkservices.EdgeCacheKeyset(\"keyset\", {\n name: \"keyset-name\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [\n {\n description: \"a route rule to match against master playlist\",\n priority: \"1\",\n matchRules: [{\n pathTemplateMatch: \"/master.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"edge-cache-token\",\n },\n signedRequestMaximumExpirationTtl: \"600s\",\n addSignatures: {\n actions: \"GENERATE_COOKIE\",\n keyset: keyset.id,\n copiedParameters: [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n description: \"a route rule to match against all playlists\",\n priority: \"2\",\n matchRules: [{\n pathTemplateMatch: \"/*.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdnts\",\n allowedSignatureAlgorithms: [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n addSignatures: {\n actions: \"GENERATE_TOKEN_HLS_COOKIELESS\",\n keyset: keyset.id,\n tokenTtl: \"1200s\",\n tokenQueryParameter: \"hdntl\",\n copiedParameters: [\"URLPrefix\"],\n },\n },\n },\n },\n {\n description: \"a route rule to match against\",\n priority: \"3\",\n matchRules: [{\n pathTemplateMatch: \"/**.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdntl\",\n },\n addSignatures: {\n actions: \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n tokenQueryParameter: \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\nkeyset = gcp.networkservices.EdgeCacheKeyset(\"keyset\",\n name=\"keyset-name\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secret_version\": secret_version_basic.id,\n }])\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [\n {\n \"description\": \"a route rule to match against master playlist\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"path_template_match\": \"/master.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"edge-cache-token\",\n },\n \"signed_request_maximum_expiration_ttl\": \"600s\",\n \"add_signatures\": {\n \"actions\": \"GENERATE_COOKIE\",\n \"keyset\": keyset.id,\n \"copied_parameters\": [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against all playlists\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"path_template_match\": \"/*.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdnts\",\n \"allowed_signature_algorithms\": [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n \"add_signatures\": {\n \"actions\": \"GENERATE_TOKEN_HLS_COOKIELESS\",\n \"keyset\": keyset.id,\n \"token_ttl\": \"1200s\",\n \"token_query_parameter\": \"hdntl\",\n \"copied_parameters\": [\"URLPrefix\"],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against\",\n \"priority\": \"3\",\n \"match_rules\": [{\n \"path_template_match\": \"/**.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdntl\",\n },\n \"add_signatures\": {\n \"actions\": \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n \"token_query_parameter\": \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var keyset = new Gcp.NetworkServices.EdgeCacheKeyset(\"keyset\", new()\n {\n Name = \"keyset-name\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against master playlist\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/master.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"edge-cache-token\",\n },\n SignedRequestMaximumExpirationTtl = \"600s\",\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_COOKIE\",\n Keyset = keyset.Id,\n CopiedParameters = new[]\n {\n \"PathGlobs\",\n \"SessionID\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against all playlists\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/*.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdnts\",\n AllowedSignatureAlgorithms = new[]\n {\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n },\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_TOKEN_HLS_COOKIELESS\",\n Keyset = keyset.Id,\n TokenTtl = \"1200s\",\n TokenQueryParameter = \"hdntl\",\n CopiedParameters = new[]\n {\n \"URLPrefix\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"3\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/**.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdntl\",\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n TokenQueryParameter = \"hdntl\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\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 := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyset, err := networkservices.NewEdgeCacheKeyset(ctx, \"keyset\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"keyset-name\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.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\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against master playlist\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/master.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"edge-cache-token\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSignedRequestMaximumExpirationTtl: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_COOKIE\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"PathGlobs\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"SessionID\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against all playlists\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/*.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdnts\"),\n\t\t\t\t\t\t\t\t\t\t\tAllowedSignatureAlgorithms: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"ED25519\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA_256\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tTokenTtl: pulumi.String(\"1200s\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"URLPrefix\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"3\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/**.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"PROPAGATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\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.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var keyset = new EdgeCacheKeyset(\"keyset\", EdgeCacheKeysetArgs.builder()\n .name(\"keyset-name\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against master playlist\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/master.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"edge-cache-token\")\n .build())\n .signedRequestMaximumExpirationTtl(\"600s\")\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_COOKIE\")\n .keyset(keyset.id())\n .copiedParameters( \n \"PathGlobs\",\n \"SessionID\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against all playlists\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/*.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdnts\")\n .allowedSignatureAlgorithms( \n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_TOKEN_HLS_COOKIELESS\")\n .keyset(keyset.id())\n .tokenTtl(\"1200s\")\n .tokenQueryParameter(\"hdntl\")\n .copiedParameters(\"URLPrefix\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(3)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/**.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdntl\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"PROPAGATE_TOKEN_HLS_COOKIELESS\")\n .tokenQueryParameter(\"hdntl\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n keyset:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: keyset-name\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against master playlist\n priority: 1\n matchRules:\n - pathTemplateMatch: /master.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: edge-cache-token\n signedRequestMaximumExpirationTtl: 600s\n addSignatures:\n actions: GENERATE_COOKIE\n keyset: ${keyset.id}\n copiedParameters:\n - PathGlobs\n - SessionID\n - description: a route rule to match against all playlists\n priority: 2\n matchRules:\n - pathTemplateMatch: /*.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdnts\n allowedSignatureAlgorithms:\n - ED25519\n - HMAC_SHA_256\n - HMAC_SHA1\n addSignatures:\n actions: GENERATE_TOKEN_HLS_COOKIELESS\n keyset: ${keyset.id}\n tokenTtl: 1200s\n tokenQueryParameter: hdntl\n copiedParameters:\n - URLPrefix\n - description: a route rule to match against\n priority: 3\n matchRules:\n - pathTemplateMatch: /**.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdntl\n addSignatures:\n actions: PROPAGATE_TOKEN_HLS_COOKIELESS\n tokenQueryParameter: hdntl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheServices/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default projects/{{project}}/locations/global/edgeCacheServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -233082,7 +233082,7 @@ } }, "gcp:networkservices/httpRoute:HttpRoute": { - "description": "## Example Usage\n\n### Network Services Http Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\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 := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\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.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\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 default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Matches And Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n regexMatch: \"header-value\",\n }],\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n prefixMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n regexMatch: \"value\",\n }],\n regexMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n presentMatch: true,\n }],\n fullPathMatch: \"example\",\n ignoreCase: false,\n },\n ],\n action: {\n redirect: {\n hostRedirect: \"new-host\",\n pathRedirect: \"new-path\",\n prefixRewrite: \"new-prefix\",\n httpsRedirect: true,\n stripQuery: true,\n portRedirect: 8081,\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"regex_match\": \"header-value\",\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"prefix_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"regex_match\": \"value\",\n }],\n \"regex_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"present_match\": True,\n }],\n \"full_path_match\": \"example\",\n \"ignore_case\": False,\n },\n ],\n \"action\": {\n \"redirect\": {\n \"host_redirect\": \"new-host\",\n \"path_redirect\": \"new-path\",\n \"prefix_rewrite\": \"new-prefix\",\n \"https_redirect\": True,\n \"strip_query\": True,\n \"port_redirect\": 8081,\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n RegexMatch = \"header-value\",\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n PrefixMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n RegexMatch = \"value\",\n },\n },\n RegexMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n PresentMatch = true,\n },\n },\n FullPathMatch = \"example\",\n IgnoreCase = false,\n },\n },\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n Redirect = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRedirectArgs\n {\n HostRedirect = \"new-host\",\n PathRedirect = \"new-path\",\n PrefixRewrite = \"new-prefix\",\n HttpsRedirect = true,\n StripQuery = true,\n PortRedirect = 8081,\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\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 := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"header-value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tRedirect: \u0026networkservices.HttpRouteRuleActionRedirectArgs{\n\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"new-path\"),\n\t\t\t\t\t\t\tPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\tPortRedirect: pulumi.Int(8081),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\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.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRedirectArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\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 default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches( \n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .regexMatch(\"header-value\")\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .prefixMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .regexMatch(\"value\")\n .build())\n .regexMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .presentMatch(true)\n .build())\n .fullPathMatch(\"example\")\n .ignoreCase(false)\n .build())\n .action(HttpRouteRuleActionArgs.builder()\n .redirect(HttpRouteRuleActionRedirectArgs.builder()\n .hostRedirect(\"new-host\")\n .pathRedirect(\"new-path\")\n .prefixRewrite(\"new-prefix\")\n .httpsRedirect(true)\n .stripQuery(true)\n .portRedirect(8081)\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - header: header\n invertMatch: false\n regexMatch: header-value\n queryParameters:\n - queryParameter: key\n exactMatch: value\n prefixMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n regexMatch: value\n regexMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n presentMatch: true\n fullPathMatch: example\n ignoreCase: false\n action:\n redirect:\n hostRedirect: new-host\n pathRedirect: new-path\n prefixRewrite: new-prefix\n httpsRedirect: true\n stripQuery: true\n portRedirect: 8081\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n requestHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"arg\"],\n },\n responseHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"removearg\"],\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"action\": {\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 1,\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n \"request_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor_version\": \"1\",\n },\n \"removes\": [\"arg\"],\n },\n \"response_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor_version\": \"1\",\n },\n \"removes\": [\"removearg\"],\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n RequestHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"arg\",\n },\n },\n ResponseHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionResponseHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"removearg\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\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 := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestHeaderModifier: \u0026networkservices.HttpRouteRuleActionRequestHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"arg\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResponseHeaderModifier: \u0026networkservices.HttpRouteRuleActionResponseHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"removearg\"),\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.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestHeaderModifierArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionResponseHeaderModifierArgs;\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 default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .action(HttpRouteRuleActionArgs.builder()\n .faultInjectionPolicy(HttpRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(HttpRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(HttpRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .requestHeaderModifier(HttpRouteRuleActionRequestHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"arg\")\n .build())\n .responseHeaderModifier(HttpRouteRuleActionResponseHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"removearg\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n requestHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - arg\n responseHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - removearg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultHttpRoute = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n meshes: [_default.id],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Mesh(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_http_route = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n meshes=[default.id],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultHttpRoute = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Meshes = new[]\n {\n @default.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\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 := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\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.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\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 default_ = new Mesh(\"default\", MeshArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultHttpRoute = new HttpRoute(\"defaultHttpRoute\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .meshes(default_.id())\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Mesh\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n defaultHttpRoute:\n type: gcp:networkservices:HttpRoute\n name: default\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n meshes:\n - ${default.id}\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHttpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/httpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HttpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default projects/{{project}}/locations/global/httpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Http Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\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 := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\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.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\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 default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Matches And Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n regexMatch: \"header-value\",\n }],\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n prefixMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n regexMatch: \"value\",\n }],\n regexMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n presentMatch: true,\n }],\n fullPathMatch: \"example\",\n ignoreCase: false,\n },\n ],\n action: {\n redirect: {\n hostRedirect: \"new-host\",\n pathRedirect: \"new-path\",\n prefixRewrite: \"new-prefix\",\n httpsRedirect: true,\n stripQuery: true,\n portRedirect: 8081,\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"regex_match\": \"header-value\",\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"prefix_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"regex_match\": \"value\",\n }],\n \"regex_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"present_match\": True,\n }],\n \"full_path_match\": \"example\",\n \"ignore_case\": False,\n },\n ],\n \"action\": {\n \"redirect\": {\n \"host_redirect\": \"new-host\",\n \"path_redirect\": \"new-path\",\n \"prefix_rewrite\": \"new-prefix\",\n \"https_redirect\": True,\n \"strip_query\": True,\n \"port_redirect\": 8081,\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n RegexMatch = \"header-value\",\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n PrefixMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n RegexMatch = \"value\",\n },\n },\n RegexMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n PresentMatch = true,\n },\n },\n FullPathMatch = \"example\",\n IgnoreCase = false,\n },\n },\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n Redirect = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRedirectArgs\n {\n HostRedirect = \"new-host\",\n PathRedirect = \"new-path\",\n PrefixRewrite = \"new-prefix\",\n HttpsRedirect = true,\n StripQuery = true,\n PortRedirect = 8081,\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\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 := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"header-value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tRedirect: \u0026networkservices.HttpRouteRuleActionRedirectArgs{\n\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"new-path\"),\n\t\t\t\t\t\t\tPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\tPortRedirect: pulumi.Int(8081),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\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.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRedirectArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\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 default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches( \n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .regexMatch(\"header-value\")\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .prefixMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .regexMatch(\"value\")\n .build())\n .regexMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .presentMatch(true)\n .build())\n .fullPathMatch(\"example\")\n .ignoreCase(false)\n .build())\n .action(HttpRouteRuleActionArgs.builder()\n .redirect(HttpRouteRuleActionRedirectArgs.builder()\n .hostRedirect(\"new-host\")\n .pathRedirect(\"new-path\")\n .prefixRewrite(\"new-prefix\")\n .httpsRedirect(true)\n .stripQuery(true)\n .portRedirect(8081)\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - header: header\n invertMatch: false\n regexMatch: header-value\n queryParameters:\n - queryParameter: key\n exactMatch: value\n prefixMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n regexMatch: value\n regexMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n presentMatch: true\n fullPathMatch: example\n ignoreCase: false\n action:\n redirect:\n hostRedirect: new-host\n pathRedirect: new-path\n prefixRewrite: new-prefix\n httpsRedirect: true\n stripQuery: true\n portRedirect: 8081\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n requestHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"arg\"],\n },\n responseHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"removearg\"],\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"action\": {\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 1,\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n \"request_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor-version\": \"1\",\n },\n \"removes\": [\"arg\"],\n },\n \"response_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor-version\": \"1\",\n },\n \"removes\": [\"removearg\"],\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n RequestHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"arg\",\n },\n },\n ResponseHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionResponseHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"removearg\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\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 := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestHeaderModifier: \u0026networkservices.HttpRouteRuleActionRequestHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"arg\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResponseHeaderModifier: \u0026networkservices.HttpRouteRuleActionResponseHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"removearg\"),\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.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestHeaderModifierArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionResponseHeaderModifierArgs;\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 default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .action(HttpRouteRuleActionArgs.builder()\n .faultInjectionPolicy(HttpRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(HttpRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(HttpRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .requestHeaderModifier(HttpRouteRuleActionRequestHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"arg\")\n .build())\n .responseHeaderModifier(HttpRouteRuleActionResponseHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"removearg\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n requestHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - arg\n responseHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - removearg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultHttpRoute = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n meshes: [_default.id],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Mesh(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_http_route = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n meshes=[default.id],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultHttpRoute = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Meshes = new[]\n {\n @default.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\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 := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\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.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\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 default_ = new Mesh(\"default\", MeshArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultHttpRoute = new HttpRoute(\"defaultHttpRoute\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .meshes(default_.id())\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Mesh\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n defaultHttpRoute:\n type: gcp:networkservices:HttpRoute\n name: default\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n meshes:\n - ${default.id}\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHttpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/httpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HttpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default projects/{{project}}/locations/global/httpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -237507,7 +237507,7 @@ } }, "gcp:osconfig/osPolicyAssignment:OsPolicyAssignment": { - "description": "OS policy assignment is an API resource that is used to apply a set of OS\npolicies to a dynamically targeted group of Compute Engine VM instances. An OS\npolicy is used to define the desired state configuration for a Compute Engine VM\ninstance through a set of configuration resources that provide capabilities such\nas installing or removing software packages, or executing a script. For more\ninformation about the OS policy resource definitions and examples, see\n[OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).\n\nTo get more information about OSPolicyAssignment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest/v1/projects.locations.osPolicyAssignments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-configuration-management/create-os-policy-assignment)\n\n## Example Usage\n\n### Os Config Os Policy Assignment Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.osconfig.OsPolicyAssignment(\"primary\", {\n instanceFilter: {\n all: false,\n exclusionLabels: [{\n labels: {\n \"label-two\": \"value-two\",\n },\n }],\n inclusionLabels: [{\n labels: {\n \"label-one\": \"value-one\",\n },\n }],\n inventories: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n },\n location: \"us-central1-a\",\n name: \"policy-assignment\",\n osPolicies: [{\n id: \"policy\",\n mode: \"VALIDATION\",\n resourceGroups: [{\n resources: [\n {\n id: \"apt-to-yum\",\n repository: {\n apt: {\n archiveType: \"DEB\",\n components: [\"doc\"],\n distribution: \"debian\",\n uri: \"https://atl.mirrors.clouvider.net/debian\",\n gpgKey: \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n id: \"exec1\",\n exec: {\n validate: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n localPath: \"$HOME/script.sh\",\n },\n outputFilePath: \"$HOME/out\",\n },\n enforce: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n allowInsecure: true,\n remote: {\n uri: \"https://www.example.com/script.sh\",\n sha256Checksum: \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n outputFilePath: \"$HOME/out\",\n },\n },\n },\n ],\n inventoryFilters: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n }],\n allowNoResourceGroupMatch: false,\n description: \"A test os policy\",\n }],\n rollout: {\n disruptionBudget: {\n percent: 100,\n },\n minWaitDuration: \"3s\",\n },\n description: \"A test os policy assignment\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.osconfig.OsPolicyAssignment(\"primary\",\n instance_filter={\n \"all\": False,\n \"exclusion_labels\": [{\n \"labels\": {\n \"label_two\": \"value-two\",\n },\n }],\n \"inclusion_labels\": [{\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n }],\n \"inventories\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n },\n location=\"us-central1-a\",\n name=\"policy-assignment\",\n os_policies=[{\n \"id\": \"policy\",\n \"mode\": \"VALIDATION\",\n \"resource_groups\": [{\n \"resources\": [\n {\n \"id\": \"apt-to-yum\",\n \"repository\": {\n \"apt\": {\n \"archive_type\": \"DEB\",\n \"components\": [\"doc\"],\n \"distribution\": \"debian\",\n \"uri\": \"https://atl.mirrors.clouvider.net/debian\",\n \"gpg_key\": \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n \"id\": \"exec1\",\n \"exec_\": {\n \"validate\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"local_path\": \"$HOME/script.sh\",\n },\n \"output_file_path\": \"$HOME/out\",\n },\n \"enforce\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"allow_insecure\": True,\n \"remote\": {\n \"uri\": \"https://www.example.com/script.sh\",\n \"sha256_checksum\": \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n \"output_file_path\": \"$HOME/out\",\n },\n },\n },\n ],\n \"inventory_filters\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n }],\n \"allow_no_resource_group_match\": False,\n \"description\": \"A test os policy\",\n }],\n rollout={\n \"disruption_budget\": {\n \"percent\": 100,\n },\n \"min_wait_duration\": \"3s\",\n },\n description=\"A test os policy assignment\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.OsConfig.OsPolicyAssignment(\"primary\", new()\n {\n InstanceFilter = new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterArgs\n {\n All = false,\n ExclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterExclusionLabelArgs\n {\n Labels = \n {\n { \"label-two\", \"value-two\" },\n },\n },\n },\n InclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInclusionLabelArgs\n {\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n },\n },\n Inventories = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInventoryArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n Location = \"us-central1-a\",\n Name = \"policy-assignment\",\n OsPolicies = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyArgs\n {\n Id = \"policy\",\n Mode = \"VALIDATION\",\n ResourceGroups = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupArgs\n {\n Resources = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"apt-to-yum\",\n Repository = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs\n {\n Apt = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs\n {\n ArchiveType = \"DEB\",\n Components = new[]\n {\n \"doc\",\n },\n Distribution = \"debian\",\n Uri = \"https://atl.mirrors.clouvider.net/debian\",\n GpgKey = \".gnupg/pubring.kbx\",\n },\n },\n },\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"exec1\",\n Exec = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs\n {\n Validate = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs\n {\n LocalPath = \"$HOME/script.sh\",\n },\n OutputFilePath = \"$HOME/out\",\n },\n Enforce = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs\n {\n AllowInsecure = true,\n Remote = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs\n {\n Uri = \"https://www.example.com/script.sh\",\n Sha256Checksum = \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n OutputFilePath = \"$HOME/out\",\n },\n },\n },\n },\n InventoryFilters = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n },\n AllowNoResourceGroupMatch = false,\n Description = \"A test os policy\",\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutArgs\n {\n DisruptionBudget = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs\n {\n Percent = 100,\n },\n MinWaitDuration = \"3s\",\n },\n Description = \"A test os policy assignment\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\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 := osconfig.NewOsPolicyAssignment(ctx, \"primary\", \u0026osconfig.OsPolicyAssignmentArgs{\n\t\t\tInstanceFilter: \u0026osconfig.OsPolicyAssignmentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(false),\n\t\t\t\tExclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-two\": pulumi.String(\"value-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInventories: osconfig.OsPolicyAssignmentInstanceFilterInventoryArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInventoryArgs{\n\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"policy-assignment\"),\n\t\t\tOsPolicies: osconfig.OsPolicyAssignmentOsPolicyArray{\n\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"policy\"),\n\t\t\t\t\tMode: pulumi.String(\"VALIDATION\"),\n\t\t\t\t\tResourceGroups: osconfig.OsPolicyAssignmentOsPolicyResourceGroupArray{\n\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupArgs{\n\t\t\t\t\t\t\tResources: osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"apt-to-yum\"),\n\t\t\t\t\t\t\t\t\tRepository: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs{\n\t\t\t\t\t\t\t\t\t\tApt: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs{\n\t\t\t\t\t\t\t\t\t\t\tArchiveType: pulumi.String(\"DEB\"),\n\t\t\t\t\t\t\t\t\t\t\tComponents: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"doc\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tDistribution: pulumi.String(\"debian\"),\n\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://atl.mirrors.clouvider.net/debian\"),\n\t\t\t\t\t\t\t\t\t\t\tGpgKey: pulumi.String(\".gnupg/pubring.kbx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"exec1\"),\n\t\t\t\t\t\t\t\t\tExec: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs{\n\t\t\t\t\t\t\t\t\t\tValidate: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLocalPath: pulumi.String(\"$HOME/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tEnforce: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tAllowInsecure: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\tRemote: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://www.example.com/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tSha256Checksum: pulumi.String(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tInventoryFilters: osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs{\n\t\t\t\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\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\tAllowNoResourceGroupMatch: pulumi.Bool(false),\n\t\t\t\t\tDescription: pulumi.String(\"A test os policy\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.OsPolicyAssignmentRolloutArgs{\n\t\t\t\tDisruptionBudget: \u0026osconfig.OsPolicyAssignmentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t\tMinWaitDuration: pulumi.String(\"3s\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A test os policy assignment\"),\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.gcp.osconfig.OsPolicyAssignment;\nimport com.pulumi.gcp.osconfig.OsPolicyAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentOsPolicyArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs;\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 OsPolicyAssignment(\"primary\", OsPolicyAssignmentArgs.builder()\n .instanceFilter(OsPolicyAssignmentInstanceFilterArgs.builder()\n .all(false)\n .exclusionLabels(OsPolicyAssignmentInstanceFilterExclusionLabelArgs.builder()\n .labels(Map.of(\"label-two\", \"value-two\"))\n .build())\n .inclusionLabels(OsPolicyAssignmentInstanceFilterInclusionLabelArgs.builder()\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build())\n .inventories(OsPolicyAssignmentInstanceFilterInventoryArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .location(\"us-central1-a\")\n .name(\"policy-assignment\")\n .osPolicies(OsPolicyAssignmentOsPolicyArgs.builder()\n .id(\"policy\")\n .mode(\"VALIDATION\")\n .resourceGroups(OsPolicyAssignmentOsPolicyResourceGroupArgs.builder()\n .resources( \n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"apt-to-yum\")\n .repository(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs.builder()\n .apt(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs.builder()\n .archiveType(\"DEB\")\n .components(\"doc\")\n .distribution(\"debian\")\n .uri(\"https://atl.mirrors.clouvider.net/debian\")\n .gpgKey(\".gnupg/pubring.kbx\")\n .build())\n .build())\n .build(),\n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"exec1\")\n .exec(OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs.builder()\n .validate(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs.builder()\n .localPath(\"$HOME/script.sh\")\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .enforce(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs.builder()\n .allowInsecure(true)\n .remote(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs.builder()\n .uri(\"https://www.example.com/script.sh\")\n .sha256Checksum(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\")\n .build())\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .build())\n .build())\n .inventoryFilters(OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .allowNoResourceGroupMatch(false)\n .description(\"A test os policy\")\n .build())\n .rollout(OsPolicyAssignmentRolloutArgs.builder()\n .disruptionBudget(OsPolicyAssignmentRolloutDisruptionBudgetArgs.builder()\n .percent(100)\n .build())\n .minWaitDuration(\"3s\")\n .build())\n .description(\"A test os policy assignment\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:osconfig:OsPolicyAssignment\n properties:\n instanceFilter:\n all: false\n exclusionLabels:\n - labels:\n label-two: value-two\n inclusionLabels:\n - labels:\n label-one: value-one\n inventories:\n - osShortName: centos\n osVersion: 8.*\n location: us-central1-a\n name: policy-assignment\n osPolicies:\n - id: policy\n mode: VALIDATION\n resourceGroups:\n - resources:\n - id: apt-to-yum\n repository:\n apt:\n archiveType: DEB\n components:\n - doc\n distribution: debian\n uri: https://atl.mirrors.clouvider.net/debian\n gpgKey: .gnupg/pubring.kbx\n - id: exec1\n exec:\n validate:\n interpreter: SHELL\n args:\n - arg1\n file:\n localPath: $HOME/script.sh\n outputFilePath: $HOME/out\n enforce:\n interpreter: SHELL\n args:\n - arg1\n file:\n allowInsecure: true\n remote:\n uri: https://www.example.com/script.sh\n sha256Checksum: c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\n outputFilePath: $HOME/out\n inventoryFilters:\n - osShortName: centos\n osVersion: 8.*\n allowNoResourceGroupMatch: false\n description: A test os policy\n rollout:\n disruptionBudget:\n percent: 100\n minWaitDuration: 3s\n description: A test os policy assignment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOSPolicyAssignment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, OSPolicyAssignment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{location}}/{{name}}\n```\n\n", + "description": "OS policy assignment is an API resource that is used to apply a set of OS\npolicies to a dynamically targeted group of Compute Engine VM instances. An OS\npolicy is used to define the desired state configuration for a Compute Engine VM\ninstance through a set of configuration resources that provide capabilities such\nas installing or removing software packages, or executing a script. For more\ninformation about the OS policy resource definitions and examples, see\n[OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).\n\nTo get more information about OSPolicyAssignment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest/v1/projects.locations.osPolicyAssignments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-configuration-management/create-os-policy-assignment)\n\n## Example Usage\n\n### Os Config Os Policy Assignment Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.osconfig.OsPolicyAssignment(\"primary\", {\n instanceFilter: {\n all: false,\n exclusionLabels: [{\n labels: {\n \"label-two\": \"value-two\",\n },\n }],\n inclusionLabels: [{\n labels: {\n \"label-one\": \"value-one\",\n },\n }],\n inventories: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n },\n location: \"us-central1-a\",\n name: \"policy-assignment\",\n osPolicies: [{\n id: \"policy\",\n mode: \"VALIDATION\",\n resourceGroups: [{\n resources: [\n {\n id: \"apt-to-yum\",\n repository: {\n apt: {\n archiveType: \"DEB\",\n components: [\"doc\"],\n distribution: \"debian\",\n uri: \"https://atl.mirrors.clouvider.net/debian\",\n gpgKey: \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n id: \"exec1\",\n exec: {\n validate: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n localPath: \"$HOME/script.sh\",\n },\n outputFilePath: \"$HOME/out\",\n },\n enforce: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n allowInsecure: true,\n remote: {\n uri: \"https://www.example.com/script.sh\",\n sha256Checksum: \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n outputFilePath: \"$HOME/out\",\n },\n },\n },\n ],\n inventoryFilters: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n }],\n allowNoResourceGroupMatch: false,\n description: \"A test os policy\",\n }],\n rollout: {\n disruptionBudget: {\n percent: 100,\n },\n minWaitDuration: \"3s\",\n },\n description: \"A test os policy assignment\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.osconfig.OsPolicyAssignment(\"primary\",\n instance_filter={\n \"all\": False,\n \"exclusion_labels\": [{\n \"labels\": {\n \"label-two\": \"value-two\",\n },\n }],\n \"inclusion_labels\": [{\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n }],\n \"inventories\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n },\n location=\"us-central1-a\",\n name=\"policy-assignment\",\n os_policies=[{\n \"id\": \"policy\",\n \"mode\": \"VALIDATION\",\n \"resource_groups\": [{\n \"resources\": [\n {\n \"id\": \"apt-to-yum\",\n \"repository\": {\n \"apt\": {\n \"archive_type\": \"DEB\",\n \"components\": [\"doc\"],\n \"distribution\": \"debian\",\n \"uri\": \"https://atl.mirrors.clouvider.net/debian\",\n \"gpg_key\": \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n \"id\": \"exec1\",\n \"exec_\": {\n \"validate\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"local_path\": \"$HOME/script.sh\",\n },\n \"output_file_path\": \"$HOME/out\",\n },\n \"enforce\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"allow_insecure\": True,\n \"remote\": {\n \"uri\": \"https://www.example.com/script.sh\",\n \"sha256_checksum\": \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n \"output_file_path\": \"$HOME/out\",\n },\n },\n },\n ],\n \"inventory_filters\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n }],\n \"allow_no_resource_group_match\": False,\n \"description\": \"A test os policy\",\n }],\n rollout={\n \"disruption_budget\": {\n \"percent\": 100,\n },\n \"min_wait_duration\": \"3s\",\n },\n description=\"A test os policy assignment\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.OsConfig.OsPolicyAssignment(\"primary\", new()\n {\n InstanceFilter = new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterArgs\n {\n All = false,\n ExclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterExclusionLabelArgs\n {\n Labels = \n {\n { \"label-two\", \"value-two\" },\n },\n },\n },\n InclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInclusionLabelArgs\n {\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n },\n },\n Inventories = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInventoryArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n Location = \"us-central1-a\",\n Name = \"policy-assignment\",\n OsPolicies = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyArgs\n {\n Id = \"policy\",\n Mode = \"VALIDATION\",\n ResourceGroups = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupArgs\n {\n Resources = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"apt-to-yum\",\n Repository = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs\n {\n Apt = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs\n {\n ArchiveType = \"DEB\",\n Components = new[]\n {\n \"doc\",\n },\n Distribution = \"debian\",\n Uri = \"https://atl.mirrors.clouvider.net/debian\",\n GpgKey = \".gnupg/pubring.kbx\",\n },\n },\n },\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"exec1\",\n Exec = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs\n {\n Validate = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs\n {\n LocalPath = \"$HOME/script.sh\",\n },\n OutputFilePath = \"$HOME/out\",\n },\n Enforce = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs\n {\n AllowInsecure = true,\n Remote = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs\n {\n Uri = \"https://www.example.com/script.sh\",\n Sha256Checksum = \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n OutputFilePath = \"$HOME/out\",\n },\n },\n },\n },\n InventoryFilters = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n },\n AllowNoResourceGroupMatch = false,\n Description = \"A test os policy\",\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutArgs\n {\n DisruptionBudget = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs\n {\n Percent = 100,\n },\n MinWaitDuration = \"3s\",\n },\n Description = \"A test os policy assignment\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\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 := osconfig.NewOsPolicyAssignment(ctx, \"primary\", \u0026osconfig.OsPolicyAssignmentArgs{\n\t\t\tInstanceFilter: \u0026osconfig.OsPolicyAssignmentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(false),\n\t\t\t\tExclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-two\": pulumi.String(\"value-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInventories: osconfig.OsPolicyAssignmentInstanceFilterInventoryArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInventoryArgs{\n\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"policy-assignment\"),\n\t\t\tOsPolicies: osconfig.OsPolicyAssignmentOsPolicyArray{\n\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"policy\"),\n\t\t\t\t\tMode: pulumi.String(\"VALIDATION\"),\n\t\t\t\t\tResourceGroups: osconfig.OsPolicyAssignmentOsPolicyResourceGroupArray{\n\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupArgs{\n\t\t\t\t\t\t\tResources: osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"apt-to-yum\"),\n\t\t\t\t\t\t\t\t\tRepository: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs{\n\t\t\t\t\t\t\t\t\t\tApt: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs{\n\t\t\t\t\t\t\t\t\t\t\tArchiveType: pulumi.String(\"DEB\"),\n\t\t\t\t\t\t\t\t\t\t\tComponents: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"doc\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tDistribution: pulumi.String(\"debian\"),\n\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://atl.mirrors.clouvider.net/debian\"),\n\t\t\t\t\t\t\t\t\t\t\tGpgKey: pulumi.String(\".gnupg/pubring.kbx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"exec1\"),\n\t\t\t\t\t\t\t\t\tExec: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs{\n\t\t\t\t\t\t\t\t\t\tValidate: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLocalPath: pulumi.String(\"$HOME/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tEnforce: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tAllowInsecure: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\tRemote: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://www.example.com/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tSha256Checksum: pulumi.String(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tInventoryFilters: osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs{\n\t\t\t\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\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\tAllowNoResourceGroupMatch: pulumi.Bool(false),\n\t\t\t\t\tDescription: pulumi.String(\"A test os policy\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.OsPolicyAssignmentRolloutArgs{\n\t\t\t\tDisruptionBudget: \u0026osconfig.OsPolicyAssignmentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t\tMinWaitDuration: pulumi.String(\"3s\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A test os policy assignment\"),\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.gcp.osconfig.OsPolicyAssignment;\nimport com.pulumi.gcp.osconfig.OsPolicyAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentOsPolicyArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs;\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 OsPolicyAssignment(\"primary\", OsPolicyAssignmentArgs.builder()\n .instanceFilter(OsPolicyAssignmentInstanceFilterArgs.builder()\n .all(false)\n .exclusionLabels(OsPolicyAssignmentInstanceFilterExclusionLabelArgs.builder()\n .labels(Map.of(\"label-two\", \"value-two\"))\n .build())\n .inclusionLabels(OsPolicyAssignmentInstanceFilterInclusionLabelArgs.builder()\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build())\n .inventories(OsPolicyAssignmentInstanceFilterInventoryArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .location(\"us-central1-a\")\n .name(\"policy-assignment\")\n .osPolicies(OsPolicyAssignmentOsPolicyArgs.builder()\n .id(\"policy\")\n .mode(\"VALIDATION\")\n .resourceGroups(OsPolicyAssignmentOsPolicyResourceGroupArgs.builder()\n .resources( \n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"apt-to-yum\")\n .repository(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs.builder()\n .apt(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs.builder()\n .archiveType(\"DEB\")\n .components(\"doc\")\n .distribution(\"debian\")\n .uri(\"https://atl.mirrors.clouvider.net/debian\")\n .gpgKey(\".gnupg/pubring.kbx\")\n .build())\n .build())\n .build(),\n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"exec1\")\n .exec(OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs.builder()\n .validate(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs.builder()\n .localPath(\"$HOME/script.sh\")\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .enforce(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs.builder()\n .allowInsecure(true)\n .remote(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs.builder()\n .uri(\"https://www.example.com/script.sh\")\n .sha256Checksum(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\")\n .build())\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .build())\n .build())\n .inventoryFilters(OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .allowNoResourceGroupMatch(false)\n .description(\"A test os policy\")\n .build())\n .rollout(OsPolicyAssignmentRolloutArgs.builder()\n .disruptionBudget(OsPolicyAssignmentRolloutDisruptionBudgetArgs.builder()\n .percent(100)\n .build())\n .minWaitDuration(\"3s\")\n .build())\n .description(\"A test os policy assignment\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:osconfig:OsPolicyAssignment\n properties:\n instanceFilter:\n all: false\n exclusionLabels:\n - labels:\n label-two: value-two\n inclusionLabels:\n - labels:\n label-one: value-one\n inventories:\n - osShortName: centos\n osVersion: 8.*\n location: us-central1-a\n name: policy-assignment\n osPolicies:\n - id: policy\n mode: VALIDATION\n resourceGroups:\n - resources:\n - id: apt-to-yum\n repository:\n apt:\n archiveType: DEB\n components:\n - doc\n distribution: debian\n uri: https://atl.mirrors.clouvider.net/debian\n gpgKey: .gnupg/pubring.kbx\n - id: exec1\n exec:\n validate:\n interpreter: SHELL\n args:\n - arg1\n file:\n localPath: $HOME/script.sh\n outputFilePath: $HOME/out\n enforce:\n interpreter: SHELL\n args:\n - arg1\n file:\n allowInsecure: true\n remote:\n uri: https://www.example.com/script.sh\n sha256Checksum: c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\n outputFilePath: $HOME/out\n inventoryFilters:\n - osShortName: centos\n osVersion: 8.*\n allowNoResourceGroupMatch: false\n description: A test os policy\n rollout:\n disruptionBudget:\n percent: 100\n minWaitDuration: 3s\n description: A test os policy assignment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOSPolicyAssignment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, OSPolicyAssignment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{location}}/{{name}}\n```\n\n", "properties": { "baseline": { "type": "boolean", @@ -240231,7 +240231,7 @@ } }, "gcp:pubsub/subscription:Subscription": { - "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/docs/admin#managing_subscriptions)\n\n\u003e **Note:** You can retrieve the email of the Google Managed Pub/Sub Service Account used for forwarding\nby using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Pubsub Subscription Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n ackDeadlineSeconds: 20,\n labels: {\n foo: \"bar\",\n },\n pushConfig: {\n pushEndpoint: \"https://example.com/push\",\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n ack_deadline_seconds=20,\n labels={\n \"foo\": \"bar\",\n },\n push_config={\n \"push_endpoint\": \"https://example.com/push\",\n \"attributes\": {\n \"x_goog_version\": \"v1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n AckDeadlineSeconds = 20,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = \"https://example.com/push\",\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: pulumi.String(\"https://example.com/push\"),\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .ackDeadlineSeconds(20)\n .labels(Map.of(\"foo\", \"bar\"))\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(\"https://example.com/push\")\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n ackDeadlineSeconds: 20\n labels:\n foo: bar\n pushConfig:\n pushEndpoint: https://example.com/push\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n messageRetentionDuration: \"1200s\",\n retainAckedMessages: true,\n ackDeadlineSeconds: 20,\n expirationPolicy: {\n ttl: \"300000.5s\",\n },\n retryPolicy: {\n minimumBackoff: \"10s\",\n },\n enableMessageOrdering: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n message_retention_duration=\"1200s\",\n retain_acked_messages=True,\n ack_deadline_seconds=20,\n expiration_policy={\n \"ttl\": \"300000.5s\",\n },\n retry_policy={\n \"minimum_backoff\": \"10s\",\n },\n enable_message_ordering=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n MessageRetentionDuration = \"1200s\",\n RetainAckedMessages = true,\n AckDeadlineSeconds = 20,\n ExpirationPolicy = new Gcp.PubSub.Inputs.SubscriptionExpirationPolicyArgs\n {\n Ttl = \"300000.5s\",\n },\n RetryPolicy = new Gcp.PubSub.Inputs.SubscriptionRetryPolicyArgs\n {\n MinimumBackoff = \"10s\",\n },\n EnableMessageOrdering = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMessageRetentionDuration: pulumi.String(\"1200s\"),\n\t\t\tRetainAckedMessages: pulumi.Bool(true),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tExpirationPolicy: \u0026pubsub.SubscriptionExpirationPolicyArgs{\n\t\t\t\tTtl: pulumi.String(\"300000.5s\"),\n\t\t\t},\n\t\t\tRetryPolicy: \u0026pubsub.SubscriptionRetryPolicyArgs{\n\t\t\t\tMinimumBackoff: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t\tEnableMessageOrdering: pulumi.Bool(false),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionExpirationPolicyArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionRetryPolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .messageRetentionDuration(\"1200s\")\n .retainAckedMessages(true)\n .ackDeadlineSeconds(20)\n .expirationPolicy(SubscriptionExpirationPolicyArgs.builder()\n .ttl(\"300000.5s\")\n .build())\n .retryPolicy(SubscriptionRetryPolicyArgs.builder()\n .minimumBackoff(\"10s\")\n .build())\n .enableMessageOrdering(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n messageRetentionDuration: 1200s\n retainAckedMessages: true\n ackDeadlineSeconds: 20\n expirationPolicy:\n ttl: 300000.5s\n retryPolicy:\n minimumBackoff: 10s\n enableMessageOrdering: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n filter: ` attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n`,\n ackDeadlineSeconds: 20,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n filter=\"\"\" attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n\"\"\",\n ack_deadline_seconds=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Filter = @\" attributes.foo = \"\"foo\"\"\n AND attributes.bar = \"\"bar\"\"\n\",\n AckDeadlineSeconds = 20,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\" attributes.foo = \\\"foo\\\"\\n AND attributes.bar = \\\"bar\\\"\\n\"),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .filter(\"\"\"\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n \"\"\")\n .ackDeadlineSeconds(20)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n filter: |2\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n ackDeadlineSeconds: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Dead Letter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleDeadLetter = new gcp.pubsub.Topic(\"example_dead_letter\", {name: \"example-topic-dead-letter\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n deadLetterPolicy: {\n deadLetterTopic: exampleDeadLetter.id,\n maxDeliveryAttempts: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_dead_letter = gcp.pubsub.Topic(\"example_dead_letter\", name=\"example-topic-dead-letter\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n dead_letter_policy={\n \"dead_letter_topic\": example_dead_letter.id,\n \"max_delivery_attempts\": 10,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleDeadLetter = new Gcp.PubSub.Topic(\"example_dead_letter\", new()\n {\n Name = \"example-topic-dead-letter\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n DeadLetterPolicy = new Gcp.PubSub.Inputs.SubscriptionDeadLetterPolicyArgs\n {\n DeadLetterTopic = exampleDeadLetter.Id,\n MaxDeliveryAttempts = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDeadLetter, err := pubsub.NewTopic(ctx, \"example_dead_letter\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic-dead-letter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tDeadLetterPolicy: \u0026pubsub.SubscriptionDeadLetterPolicyArgs{\n\t\t\t\tDeadLetterTopic: exampleDeadLetter.ID(),\n\t\t\t\tMaxDeliveryAttempts: pulumi.Int(10),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionDeadLetterPolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleDeadLetter = new Topic(\"exampleDeadLetter\", TopicArgs.builder()\n .name(\"example-topic-dead-letter\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .deadLetterPolicy(SubscriptionDeadLetterPolicyArgs.builder()\n .deadLetterTopic(exampleDeadLetter.id())\n .maxDeliveryAttempts(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleDeadLetter:\n type: gcp:pubsub:Topic\n name: example_dead_letter\n properties:\n name: example-topic-dead-letter\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n deadLetterPolicy:\n deadLetterTopic: ${exampleDeadLetter.id}\n maxDeliveryAttempts: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Table Schema\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n useTableSchema: true,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"use_table_schema\": True,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n UseTableSchema = true,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUseTableSchema: pulumi.Bool(true),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .useTableSchema(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n useTableSchema: true\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst bqWriteServiceAccount = new gcp.serviceaccount.Account(\"bq_write_service_account\", {\n accountId: \"example-bqw\",\n displayName: \"BQ Write Service Account\",\n});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n serviceAccountEmail: bqWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n bqWriteServiceAccount,\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nbq_write_service_account = gcp.serviceaccount.Account(\"bq_write_service_account\",\n account_id=\"example-bqw\",\n display_name=\"BQ Write Service Account\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"service_account_email\": bq_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n bq_write_service_account,\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var bqWriteServiceAccount = new Gcp.ServiceAccount.Account(\"bq_write_service_account\", new()\n {\n AccountId = \"example-bqw\",\n DisplayName = \"BQ Write Service Account\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n ServiceAccountEmail = bqWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bqWriteServiceAccount,\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"bq_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-bqw\"),\n\t\t\tDisplayName: pulumi.String(\"BQ Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: bqWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: bqWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tServiceAccountEmail: bqWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbqWriteServiceAccount,\n\t\t\tviewer,\n\t\t\teditor,\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var bqWriteServiceAccount = new Account(\"bqWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-bqw\")\n .displayName(\"BQ Write Service Account\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .serviceAccountEmail(bqWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n bqWriteServiceAccount,\n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n serviceAccountEmail: ${bqWriteServiceAccount.email}\n options:\n dependson:\n - ${bqWriteServiceAccount}\n - ${viewer}\n - ${editor}\n bqWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: bq_write_service_account\n properties:\n accountId: example-bqw\n displayName: BQ Write Service Account\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:${bqWriteServiceAccount.email}\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:${bqWriteServiceAccount.email}\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_40289\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_40289\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_40289\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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 := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_40289\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tMaxMessages: pulumi.Int(1000),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\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 example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_40289\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_40289\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Avro\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_33395\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n avroConfig: {\n writeMetadata: true,\n useTopicSchema: true,\n },\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_33395\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n \"avro_config\": {\n \"write_metadata\": True,\n \"use_topic_schema\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_33395\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n AvroConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigAvroConfigArgs\n {\n WriteMetadata = true,\n UseTopicSchema = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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 := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_33395\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tMaxMessages: pulumi.Int(1000),\n\t\t\t\tAvroConfig: \u0026pubsub.SubscriptionCloudStorageConfigAvroConfigArgs{\n\t\t\t\t\tWriteMetadata: pulumi.Bool(true),\n\t\t\t\t\tUseTopicSchema: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigAvroConfigArgs;\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 example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_33395\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .avroConfig(SubscriptionCloudStorageConfigAvroConfigArgs.builder()\n .writeMetadata(true)\n .useTopicSchema(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_33395\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n avroConfig:\n writeMetadata: true\n useTopicSchema: true\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst storageWriteServiceAccount = new gcp.serviceaccount.Account(\"storage_write_service_account\", {\n accountId: \"example-stw\",\n displayName: \"Storage Write Service Account\",\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: pulumi.interpolate`serviceAccount:${storageWriteServiceAccount.email}`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_76044\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n serviceAccountEmail: storageWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n storageWriteServiceAccount,\n example,\n admin,\n ],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nstorage_write_service_account = gcp.serviceaccount.Account(\"storage_write_service_account\",\n account_id=\"example-stw\",\n display_name=\"Storage Write Service Account\")\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=storage_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_76044\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"service_account_email\": storage_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n storage_write_service_account,\n example,\n admin,\n ]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var storageWriteServiceAccount = new Gcp.ServiceAccount.Account(\"storage_write_service_account\", new()\n {\n AccountId = \"example-stw\",\n DisplayName = \"Storage Write Service Account\",\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = storageWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_76044\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n ServiceAccountEmail = storageWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n storageWriteServiceAccount,\n example,\n admin,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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 := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstorageWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"storage_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-stw\"),\n\t\t\tDisplayName: pulumi.String(\"Storage Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: storageWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_76044\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tServiceAccountEmail: storageWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstorageWriteServiceAccount,\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, 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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var storageWriteServiceAccount = new Account(\"storageWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-stw\")\n .displayName(\"Storage Write Service Account\")\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(storageWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_76044\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .serviceAccountEmail(storageWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n storageWriteServiceAccount,\n example,\n admin)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_76044\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n serviceAccountEmail: ${storageWriteServiceAccount.email}\n options:\n dependson:\n - ${storageWriteServiceAccount}\n - ${example}\n - ${admin}\n storageWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: storage_write_service_account\n properties:\n accountId: example-stw\n displayName: Storage Write Service Account\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:${storageWriteServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/subscriptions/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default projects/{{project}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{name}}\n```\n\n", + "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/docs/admin#managing_subscriptions)\n\n\u003e **Note:** You can retrieve the email of the Google Managed Pub/Sub Service Account used for forwarding\nby using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Pubsub Subscription Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n ackDeadlineSeconds: 20,\n labels: {\n foo: \"bar\",\n },\n pushConfig: {\n pushEndpoint: \"https://example.com/push\",\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n ack_deadline_seconds=20,\n labels={\n \"foo\": \"bar\",\n },\n push_config={\n \"push_endpoint\": \"https://example.com/push\",\n \"attributes\": {\n \"x-goog-version\": \"v1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n AckDeadlineSeconds = 20,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = \"https://example.com/push\",\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: pulumi.String(\"https://example.com/push\"),\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .ackDeadlineSeconds(20)\n .labels(Map.of(\"foo\", \"bar\"))\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(\"https://example.com/push\")\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n ackDeadlineSeconds: 20\n labels:\n foo: bar\n pushConfig:\n pushEndpoint: https://example.com/push\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n messageRetentionDuration: \"1200s\",\n retainAckedMessages: true,\n ackDeadlineSeconds: 20,\n expirationPolicy: {\n ttl: \"300000.5s\",\n },\n retryPolicy: {\n minimumBackoff: \"10s\",\n },\n enableMessageOrdering: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n message_retention_duration=\"1200s\",\n retain_acked_messages=True,\n ack_deadline_seconds=20,\n expiration_policy={\n \"ttl\": \"300000.5s\",\n },\n retry_policy={\n \"minimum_backoff\": \"10s\",\n },\n enable_message_ordering=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n MessageRetentionDuration = \"1200s\",\n RetainAckedMessages = true,\n AckDeadlineSeconds = 20,\n ExpirationPolicy = new Gcp.PubSub.Inputs.SubscriptionExpirationPolicyArgs\n {\n Ttl = \"300000.5s\",\n },\n RetryPolicy = new Gcp.PubSub.Inputs.SubscriptionRetryPolicyArgs\n {\n MinimumBackoff = \"10s\",\n },\n EnableMessageOrdering = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMessageRetentionDuration: pulumi.String(\"1200s\"),\n\t\t\tRetainAckedMessages: pulumi.Bool(true),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tExpirationPolicy: \u0026pubsub.SubscriptionExpirationPolicyArgs{\n\t\t\t\tTtl: pulumi.String(\"300000.5s\"),\n\t\t\t},\n\t\t\tRetryPolicy: \u0026pubsub.SubscriptionRetryPolicyArgs{\n\t\t\t\tMinimumBackoff: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t\tEnableMessageOrdering: pulumi.Bool(false),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionExpirationPolicyArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionRetryPolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .messageRetentionDuration(\"1200s\")\n .retainAckedMessages(true)\n .ackDeadlineSeconds(20)\n .expirationPolicy(SubscriptionExpirationPolicyArgs.builder()\n .ttl(\"300000.5s\")\n .build())\n .retryPolicy(SubscriptionRetryPolicyArgs.builder()\n .minimumBackoff(\"10s\")\n .build())\n .enableMessageOrdering(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n messageRetentionDuration: 1200s\n retainAckedMessages: true\n ackDeadlineSeconds: 20\n expirationPolicy:\n ttl: 300000.5s\n retryPolicy:\n minimumBackoff: 10s\n enableMessageOrdering: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n filter: ` attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n`,\n ackDeadlineSeconds: 20,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n filter=\"\"\" attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n\"\"\",\n ack_deadline_seconds=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Filter = @\" attributes.foo = \"\"foo\"\"\n AND attributes.bar = \"\"bar\"\"\n\",\n AckDeadlineSeconds = 20,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\" attributes.foo = \\\"foo\\\"\\n AND attributes.bar = \\\"bar\\\"\\n\"),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .filter(\"\"\"\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n \"\"\")\n .ackDeadlineSeconds(20)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n filter: |2\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n ackDeadlineSeconds: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Dead Letter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleDeadLetter = new gcp.pubsub.Topic(\"example_dead_letter\", {name: \"example-topic-dead-letter\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n deadLetterPolicy: {\n deadLetterTopic: exampleDeadLetter.id,\n maxDeliveryAttempts: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_dead_letter = gcp.pubsub.Topic(\"example_dead_letter\", name=\"example-topic-dead-letter\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n dead_letter_policy={\n \"dead_letter_topic\": example_dead_letter.id,\n \"max_delivery_attempts\": 10,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleDeadLetter = new Gcp.PubSub.Topic(\"example_dead_letter\", new()\n {\n Name = \"example-topic-dead-letter\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n DeadLetterPolicy = new Gcp.PubSub.Inputs.SubscriptionDeadLetterPolicyArgs\n {\n DeadLetterTopic = exampleDeadLetter.Id,\n MaxDeliveryAttempts = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDeadLetter, err := pubsub.NewTopic(ctx, \"example_dead_letter\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic-dead-letter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tDeadLetterPolicy: \u0026pubsub.SubscriptionDeadLetterPolicyArgs{\n\t\t\t\tDeadLetterTopic: exampleDeadLetter.ID(),\n\t\t\t\tMaxDeliveryAttempts: pulumi.Int(10),\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionDeadLetterPolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleDeadLetter = new Topic(\"exampleDeadLetter\", TopicArgs.builder()\n .name(\"example-topic-dead-letter\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .deadLetterPolicy(SubscriptionDeadLetterPolicyArgs.builder()\n .deadLetterTopic(exampleDeadLetter.id())\n .maxDeliveryAttempts(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleDeadLetter:\n type: gcp:pubsub:Topic\n name: example_dead_letter\n properties:\n name: example-topic-dead-letter\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n deadLetterPolicy:\n deadLetterTopic: ${exampleDeadLetter.id}\n maxDeliveryAttempts: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Table Schema\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n useTableSchema: true,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"use_table_schema\": True,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n UseTableSchema = true,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUseTableSchema: pulumi.Bool(true),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .useTableSchema(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n useTableSchema: true\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst bqWriteServiceAccount = new gcp.serviceaccount.Account(\"bq_write_service_account\", {\n accountId: \"example-bqw\",\n displayName: \"BQ Write Service Account\",\n});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n serviceAccountEmail: bqWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n bqWriteServiceAccount,\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nbq_write_service_account = gcp.serviceaccount.Account(\"bq_write_service_account\",\n account_id=\"example-bqw\",\n display_name=\"BQ Write Service Account\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"service_account_email\": bq_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n bq_write_service_account,\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var bqWriteServiceAccount = new Gcp.ServiceAccount.Account(\"bq_write_service_account\", new()\n {\n AccountId = \"example-bqw\",\n DisplayName = \"BQ Write Service Account\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n ServiceAccountEmail = bqWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bqWriteServiceAccount,\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"bq_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-bqw\"),\n\t\t\tDisplayName: pulumi.String(\"BQ Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: bqWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: bqWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tServiceAccountEmail: bqWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbqWriteServiceAccount,\n\t\t\tviewer,\n\t\t\teditor,\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.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var bqWriteServiceAccount = new Account(\"bqWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-bqw\")\n .displayName(\"BQ Write Service Account\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .serviceAccountEmail(bqWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n bqWriteServiceAccount,\n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n serviceAccountEmail: ${bqWriteServiceAccount.email}\n options:\n dependson:\n - ${bqWriteServiceAccount}\n - ${viewer}\n - ${editor}\n bqWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: bq_write_service_account\n properties:\n accountId: example-bqw\n displayName: BQ Write Service Account\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:${bqWriteServiceAccount.email}\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:${bqWriteServiceAccount.email}\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_40289\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_40289\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_40289\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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 := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_40289\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tMaxMessages: pulumi.Int(1000),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\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 example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_40289\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_40289\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Avro\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_33395\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n avroConfig: {\n writeMetadata: true,\n useTopicSchema: true,\n },\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_33395\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n \"avro_config\": {\n \"write_metadata\": True,\n \"use_topic_schema\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_33395\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n AvroConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigAvroConfigArgs\n {\n WriteMetadata = true,\n UseTopicSchema = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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 := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_33395\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tMaxMessages: pulumi.Int(1000),\n\t\t\t\tAvroConfig: \u0026pubsub.SubscriptionCloudStorageConfigAvroConfigArgs{\n\t\t\t\t\tWriteMetadata: pulumi.Bool(true),\n\t\t\t\t\tUseTopicSchema: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigAvroConfigArgs;\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 example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_33395\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .avroConfig(SubscriptionCloudStorageConfigAvroConfigArgs.builder()\n .writeMetadata(true)\n .useTopicSchema(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_33395\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n avroConfig:\n writeMetadata: true\n useTopicSchema: true\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst storageWriteServiceAccount = new gcp.serviceaccount.Account(\"storage_write_service_account\", {\n accountId: \"example-stw\",\n displayName: \"Storage Write Service Account\",\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: pulumi.interpolate`serviceAccount:${storageWriteServiceAccount.email}`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_76044\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n serviceAccountEmail: storageWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n storageWriteServiceAccount,\n example,\n admin,\n ],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nstorage_write_service_account = gcp.serviceaccount.Account(\"storage_write_service_account\",\n account_id=\"example-stw\",\n display_name=\"Storage Write Service Account\")\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=storage_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_76044\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"service_account_email\": storage_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n storage_write_service_account,\n example,\n admin,\n ]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var storageWriteServiceAccount = new Gcp.ServiceAccount.Account(\"storage_write_service_account\", new()\n {\n AccountId = \"example-stw\",\n DisplayName = \"Storage Write Service Account\",\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = storageWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_76044\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n ServiceAccountEmail = storageWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n storageWriteServiceAccount,\n example,\n admin,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\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 := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstorageWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"storage_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-stw\"),\n\t\t\tDisplayName: pulumi.String(\"Storage Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: storageWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), 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 = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_76044\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tServiceAccountEmail: storageWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstorageWriteServiceAccount,\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, 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.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var storageWriteServiceAccount = new Account(\"storageWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-stw\")\n .displayName(\"Storage Write Service Account\")\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(storageWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_76044\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .serviceAccountEmail(storageWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n storageWriteServiceAccount,\n example,\n admin)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_76044\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n serviceAccountEmail: ${storageWriteServiceAccount.email}\n options:\n dependson:\n - ${storageWriteServiceAccount}\n - ${example}\n - ${admin}\n storageWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: storage_write_service_account\n properties:\n accountId: example-stw\n displayName: Storage Write Service Account\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:${storageWriteServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/subscriptions/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default projects/{{project}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{name}}\n```\n\n", "properties": { "ackDeadlineSeconds": { "type": "integer", @@ -264362,7 +264362,7 @@ } }, "gcp:workstations/workstationConfig:WorkstationConfig": { - "description": "## Example Usage\n\n### Workstation Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tagKey1 = new gcp.tags.TagKey(\"tag_key1\", {\n parent: \"organizations/123456789\",\n shortName: \"keyname\",\n});\nconst tagValue1 = new gcp.tags.TagValue(\"tag_value1\", {\n parent: pulumi.interpolate`tagKeys/${tagKey1.name}`,\n shortName: \"valuename\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n idleTimeout: \"600s\",\n runningTimeout: \"21600s\",\n replicaZones: [\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations: {\n \"label-one\": \"value-one\",\n },\n labels: {\n label: \"key\",\n },\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n disableSsh: false,\n vmTags: pulumi.all([tagKey1.name, tagValue1.name]).apply(([tagKey1Name, tagValue1Name]) =\u003e {\n [`tagKeys/${tagKey1Name}`]: `tagValues/${tagValue1Name}`,\n }),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntag_key1 = gcp.tags.TagKey(\"tag_key1\",\n parent=\"organizations/123456789\",\n short_name=\"keyname\")\ntag_value1 = gcp.tags.TagValue(\"tag_value1\",\n parent=tag_key1.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"valuename\")\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n idle_timeout=\"600s\",\n running_timeout=\"21600s\",\n replica_zones=[\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations={\n \"label-one\": \"value-one\",\n },\n labels={\n \"label\": \"key\",\n },\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"disable_ssh\": False,\n \"vm_tags\": pulumi.Output.all(\n tagKey1Name=tag_key1.name,\n tagValue1Name=tag_value1.name\n).apply(lambda resolved_outputs: {\n \"\": f\"tagValues/{resolved_outputs['tagValue1Name']}\",\n })\n,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var tagKey1 = new Gcp.Tags.TagKey(\"tag_key1\", new()\n {\n Parent = \"organizations/123456789\",\n ShortName = \"keyname\",\n });\n\n var tagValue1 = new Gcp.Tags.TagValue(\"tag_value1\", new()\n {\n Parent = tagKey1.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"valuename\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n IdleTimeout = \"600s\",\n RunningTimeout = \"21600s\",\n ReplicaZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-b\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n DisableSsh = false,\n VmTags = Output.Tuple(tagKey1.Name, tagValue1.Name).Apply(values =\u003e\n {\n var tagKey1Name = values.Item1;\n var tagValue1Name = values.Item2;\n return \n {\n { $\"tagKeys/{tagKey1Name}\", $\"tagValues/{tagValue1Name}\" },\n };\n }),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ntagKey1, err := tags.NewTagKey(ctx, \"tag_key1\", \u0026tags.TagKeyArgs{\nParent: pulumi.String(\"organizations/123456789\"),\nShortName: pulumi.String(\"keyname\"),\n})\nif err != nil {\nreturn err\n}\ntagValue1, err := tags.NewTagValue(ctx, \"tag_value1\", \u0026tags.TagValueArgs{\nParent: tagKey1.Name.ApplyT(func(name string) (string, error) {\nreturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n}).(pulumi.StringOutput),\nShortName: pulumi.String(\"valuename\"),\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\ndefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\nRegion: pulumi.String(\"us-central1\"),\nNetwork: _default.Name,\n})\nif err != nil {\nreturn err\n}\ndefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\nWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\nNetwork: _default.ID(),\nSubnetwork: defaultSubnetwork.ID(),\nLocation: pulumi.String(\"us-central1\"),\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\nWorkstationConfigId: pulumi.String(\"workstation-config\"),\nWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\nLocation: pulumi.String(\"us-central1\"),\nIdleTimeout: pulumi.String(\"600s\"),\nRunningTimeout: pulumi.String(\"21600s\"),\nReplicaZones: pulumi.StringArray{\npulumi.String(\"us-central1-a\"),\npulumi.String(\"us-central1-b\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nHost: \u0026workstations.WorkstationConfigHostArgs{\nGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\nMachineType: pulumi.String(\"e2-standard-4\"),\nBootDiskSizeGb: pulumi.Int(35),\nDisablePublicIpAddresses: pulumi.Bool(true),\nDisableSsh: pulumi.Bool(false),\nVmTags: pulumi.All(tagKey1.Name,tagValue1.Name).ApplyT(func(_args []interface{}) (map[string]string, error) {\ntagKey1Name := _args[0].(string)\ntagValue1Name := _args[1].(string)\nreturn map[string]string{\nfmt.Sprintf(\"tagKeys/%v\", tagKey1Name): fmt.Sprintf(\"tagValues/%v\", tagValue1Name),\n}, nil\n}).(pulumi.Map[string]stringOutput),\n},\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 tagKey1 = new TagKey(\"tagKey1\", TagKeyArgs.builder()\n .parent(\"organizations/123456789\")\n .shortName(\"keyname\")\n .build());\n\n var tagValue1 = new TagValue(\"tagValue1\", TagValueArgs.builder()\n .parent(tagKey1.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"valuename\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .idleTimeout(\"600s\")\n .runningTimeout(\"21600s\")\n .replicaZones( \n \"us-central1-a\",\n \"us-central1-b\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .labels(Map.of(\"label\", \"key\"))\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .disableSsh(false)\n .vmTags(Output.tuple(tagKey1.name(), tagValue1.name()).applyValue(values -\u003e {\n var tagKey1Name = values.t1;\n var tagValue1Name = values.t2;\n return Map.of(String.format(\"tagKeys/%s\", tagKey1Name), String.format(\"tagValues/%s\", tagValue1Name));\n }))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tagKey1:\n type: gcp:tags:TagKey\n name: tag_key1\n properties:\n parent: organizations/123456789\n shortName: keyname\n tagValue1:\n type: gcp:tags:TagValue\n name: tag_value1\n properties:\n parent: tagKeys/${tagKey1.name}\n shortName: valuename\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n idleTimeout: 600s\n runningTimeout: 21600s\n replicaZones:\n - us-central1-a\n - us-central1-b\n annotations:\n label-one: value-one\n labels:\n label: key\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n disableSsh: false\n vmTags:\n tagKeys/${tagKey1.name}: tagValues/${tagValue1.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n enableNestedVirtualization: true,\n },\n },\n container: {\n image: \"intellij\",\n env: {\n NAME: \"FOO\",\n BABE: \"bar\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"enable_nested_virtualization\": True,\n },\n },\n container={\n \"image\": \"intellij\",\n \"env\": {\n \"name\": \"FOO\",\n \"babe\": \"bar\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n EnableNestedVirtualization = true,\n },\n },\n Container = new Gcp.Workstations.Inputs.WorkstationConfigContainerArgs\n {\n Image = \"intellij\",\n Env = \n {\n { \"NAME\", \"FOO\" },\n { \"BABE\", \"bar\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContainer: \u0026workstations.WorkstationConfigContainerArgs{\n\t\t\t\tImage: pulumi.String(\"intellij\"),\n\t\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\t\"NAME\": pulumi.String(\"FOO\"),\n\t\t\t\t\t\"BABE\": pulumi.String(\"bar\"),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigContainerArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .container(WorkstationConfigContainerArgs.builder()\n .image(\"intellij\")\n .env(Map.ofEntries(\n Map.entry(\"NAME\", \"FOO\"),\n Map.entry(\"BABE\", \"bar\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n enableNestedVirtualization: true\n container:\n image: intellij\n env:\n NAME: FOO\n BABE: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Persistent Directories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sizeGb: 200,\n fsType: \"ext4\",\n diskType: \"pd-standard\",\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"size_gb\": 200,\n \"fs_type\": \"ext4\",\n \"disk_type\": \"pd-standard\",\n \"reclaim_policy\": \"DELETE\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SizeGb = 200,\n FsType = \"ext4\",\n DiskType = \"pd-standard\",\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSizeGb: pulumi.Int(200),\n\t\t\t\t\t\tFsType: pulumi.String(\"ext4\"),\n\t\t\t\t\t\tDiskType: pulumi.String(\"pd-standard\"),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sizeGb(200)\n .fsType(\"ext4\")\n .diskType(\"pd-standard\")\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sizeGb: 200\n fsType: ext4\n diskType: pd-standard\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Source Snapshot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst mySourceDisk = new gcp.compute.Disk(\"my_source_disk\", {\n name: \"workstation-config\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst mySourceSnapshot = new gcp.compute.Snapshot(\"my_source_snapshot\", {\n name: \"workstation-config\",\n sourceDisk: mySourceDisk.name,\n zone: \"us-central1-a\",\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: defaultWorkstationCluster.location,\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sourceSnapshot: mySourceSnapshot.id,\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\nmy_source_disk = gcp.compute.Disk(\"my_source_disk\",\n name=\"workstation-config\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\nmy_source_snapshot = gcp.compute.Snapshot(\"my_source_snapshot\",\n name=\"workstation-config\",\n source_disk=my_source_disk.name,\n zone=\"us-central1-a\")\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=default_workstation_cluster.location,\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"source_snapshot\": my_source_snapshot.id,\n \"reclaim_policy\": \"DELETE\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var mySourceDisk = new Gcp.Compute.Disk(\"my_source_disk\", new()\n {\n Name = \"workstation-config\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var mySourceSnapshot = new Gcp.Compute.Snapshot(\"my_source_snapshot\", new()\n {\n Name = \"workstation-config\",\n SourceDisk = mySourceDisk.Name,\n Zone = \"us-central1-a\",\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = defaultWorkstationCluster.Location,\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SourceSnapshot = mySourceSnapshot.Id,\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceDisk, err := compute.NewDisk(ctx, \"my_source_disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceSnapshot, err := compute.NewSnapshot(ctx, \"my_source_snapshot\", \u0026compute.SnapshotArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSourceDisk: mySourceDisk.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: defaultWorkstationCluster.Location,\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSourceSnapshot: mySourceSnapshot.ID(),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.Snapshot;\nimport com.pulumi.gcp.compute.SnapshotArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var mySourceDisk = new Disk(\"mySourceDisk\", DiskArgs.builder()\n .name(\"workstation-config\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var mySourceSnapshot = new Snapshot(\"mySourceSnapshot\", SnapshotArgs.builder()\n .name(\"workstation-config\")\n .sourceDisk(mySourceDisk.name())\n .zone(\"us-central1-a\")\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(defaultWorkstationCluster.location())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sourceSnapshot(mySourceSnapshot.id())\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n mySourceDisk:\n type: gcp:compute:Disk\n name: my_source_disk\n properties:\n name: workstation-config\n size: 10\n type: pd-ssd\n zone: us-central1-a\n mySourceSnapshot:\n type: gcp:compute:Snapshot\n name: my_source_snapshot\n properties:\n name: workstation-config\n sourceDisk: ${mySourceDisk.name}\n zone: us-central1-a\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: ${defaultWorkstationCluster.location}\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sourceSnapshot: ${mySourceSnapshot.id}\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Shielded Instance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Accelerators\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-2\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-2\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-2\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceAcceleratorArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceAcceleratorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\tCount: pulumi.Int(1),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-2\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .accelerators(WorkstationConfigHostGceInstanceAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-2\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Boost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n boostConfigs: [\n {\n id: \"boost-1\",\n machineType: \"n1-standard-2\",\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n {\n id: \"boost-2\",\n machineType: \"n1-standard-2\",\n poolSize: 2,\n bootDiskSizeGb: 30,\n enableNestedVirtualization: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"boost_configs\": [\n {\n \"id\": \"boost-1\",\n \"machine_type\": \"n1-standard-2\",\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n {\n \"id\": \"boost-2\",\n \"machine_type\": \"n1-standard-2\",\n \"pool_size\": 2,\n \"boot_disk_size_gb\": 30,\n \"enable_nested_virtualization\": True,\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n BoostConfigs = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-1\",\n MachineType = \"n1-standard-2\",\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-2\",\n MachineType = \"n1-standard-2\",\n PoolSize = 2,\n BootDiskSizeGb = 30,\n EnableNestedVirtualization = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tBoostConfigs: workstations.WorkstationConfigHostGceInstanceBoostConfigArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-1\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArray{\n\t\t\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs{\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\t\t\tCount: pulumi.Int(1),\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\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-2\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tPoolSize: pulumi.Int(2),\n\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .boostConfigs( \n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-1\")\n .machineType(\"n1-standard-2\")\n .accelerators(WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build(),\n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-2\")\n .machineType(\"n1-standard-2\")\n .poolSize(2)\n .bootDiskSizeGb(30)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n boostConfigs:\n - id: boost-1\n machineType: n1-standard-2\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n - id: boost-2\n machineType: n1-standard-2\n poolSize: 2\n bootDiskSizeGb: 30\n enableNestedVirtualization: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Encryption Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultKeyRing = new gcp.kms.KeyRing(\"default\", {\n name: \"workstation-cluster\",\n location: \"us-central1\",\n});\nconst defaultCryptoKey = new gcp.kms.CryptoKey(\"default\", {\n name: \"workstation-cluster\",\n keyRing: defaultKeyRing.id,\n});\nconst defaultAccount = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n encryptionKey: {\n kmsKey: defaultCryptoKey.id,\n kmsKeyServiceAccount: defaultAccount.email,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_key_ring = gcp.kms.KeyRing(\"default\",\n name=\"workstation-cluster\",\n location=\"us-central1\")\ndefault_crypto_key = gcp.kms.CryptoKey(\"default\",\n name=\"workstation-cluster\",\n key_ring=default_key_ring.id)\ndefault_account = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n encryption_key={\n \"kms_key\": default_crypto_key.id,\n \"kms_key_service_account\": default_account.email,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultKeyRing = new Gcp.Kms.KeyRing(\"default\", new()\n {\n Name = \"workstation-cluster\",\n Location = \"us-central1\",\n });\n\n var defaultCryptoKey = new Gcp.Kms.CryptoKey(\"default\", new()\n {\n Name = \"workstation-cluster\",\n KeyRing = defaultKeyRing.Id,\n });\n\n var defaultAccount = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n EncryptionKey = new Gcp.Workstations.Inputs.WorkstationConfigEncryptionKeyArgs\n {\n KmsKey = defaultCryptoKey.Id,\n KmsKeyServiceAccount = defaultAccount.Email,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultKeyRing, err := kms.NewKeyRing(ctx, \"default\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCryptoKey, err := kms.NewCryptoKey(ctx, \"default\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tKeyRing: defaultKeyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAccount, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionKey: \u0026workstations.WorkstationConfigEncryptionKeyArgs{\n\t\t\t\tKmsKey: defaultCryptoKey.ID(),\n\t\t\t\tKmsKeyServiceAccount: defaultAccount.Email,\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigEncryptionKeyArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultKeyRing = new KeyRing(\"defaultKeyRing\", KeyRingArgs.builder()\n .name(\"workstation-cluster\")\n .location(\"us-central1\")\n .build());\n\n var defaultCryptoKey = new CryptoKey(\"defaultCryptoKey\", CryptoKeyArgs.builder()\n .name(\"workstation-cluster\")\n .keyRing(defaultKeyRing.id())\n .build());\n\n var defaultAccount = new Account(\"defaultAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Service Account\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .encryptionKey(WorkstationConfigEncryptionKeyArgs.builder()\n .kmsKey(defaultCryptoKey.id())\n .kmsKeyServiceAccount(defaultAccount.email())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultKeyRing:\n type: gcp:kms:KeyRing\n name: default\n properties:\n name: workstation-cluster\n location: us-central1\n defaultCryptoKey:\n type: gcp:kms:CryptoKey\n name: default\n properties:\n name: workstation-cluster\n keyRing: ${defaultKeyRing.id}\n defaultAccount:\n type: gcp:serviceaccount:Account\n name: default\n properties:\n accountId: my-account\n displayName: Service Account\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n encryptionKey:\n kmsKey: ${defaultCryptoKey.id}\n kmsKeyServiceAccount: ${defaultAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\nWhen using the `pulumi import` command, WorkstationConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n", + "description": "## Example Usage\n\n### Workstation Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tagKey1 = new gcp.tags.TagKey(\"tag_key1\", {\n parent: \"organizations/123456789\",\n shortName: \"keyname\",\n});\nconst tagValue1 = new gcp.tags.TagValue(\"tag_value1\", {\n parent: pulumi.interpolate`tagKeys/${tagKey1.name}`,\n shortName: \"valuename\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n idleTimeout: \"600s\",\n runningTimeout: \"21600s\",\n replicaZones: [\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations: {\n \"label-one\": \"value-one\",\n },\n labels: {\n label: \"key\",\n },\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n disableSsh: false,\n vmTags: pulumi.all([tagKey1.name, tagValue1.name]).apply(([tagKey1Name, tagValue1Name]) =\u003e {\n [`tagKeys/${tagKey1Name}`]: `tagValues/${tagValue1Name}`,\n }),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntag_key1 = gcp.tags.TagKey(\"tag_key1\",\n parent=\"organizations/123456789\",\n short_name=\"keyname\")\ntag_value1 = gcp.tags.TagValue(\"tag_value1\",\n parent=tag_key1.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"valuename\")\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n idle_timeout=\"600s\",\n running_timeout=\"21600s\",\n replica_zones=[\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations={\n \"label-one\": \"value-one\",\n },\n labels={\n \"label\": \"key\",\n },\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"disable_ssh\": False,\n \"vm_tags\": pulumi.Output.all(\n tagKey1Name=tag_key1.name,\n tagValue1Name=tag_value1.name\n).apply(lambda resolved_outputs: {\n f\"tagKeys/{resolved_outputs['tagKey1Name']}\": f\"tagValues/{resolved_outputs['tagValue1Name']}\",\n })\n,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var tagKey1 = new Gcp.Tags.TagKey(\"tag_key1\", new()\n {\n Parent = \"organizations/123456789\",\n ShortName = \"keyname\",\n });\n\n var tagValue1 = new Gcp.Tags.TagValue(\"tag_value1\", new()\n {\n Parent = tagKey1.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"valuename\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n IdleTimeout = \"600s\",\n RunningTimeout = \"21600s\",\n ReplicaZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-b\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n DisableSsh = false,\n VmTags = Output.Tuple(tagKey1.Name, tagValue1.Name).Apply(values =\u003e\n {\n var tagKey1Name = values.Item1;\n var tagValue1Name = values.Item2;\n return \n {\n { $\"tagKeys/{tagKey1Name}\", $\"tagValues/{tagValue1Name}\" },\n };\n }),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ntagKey1, err := tags.NewTagKey(ctx, \"tag_key1\", \u0026tags.TagKeyArgs{\nParent: pulumi.String(\"organizations/123456789\"),\nShortName: pulumi.String(\"keyname\"),\n})\nif err != nil {\nreturn err\n}\ntagValue1, err := tags.NewTagValue(ctx, \"tag_value1\", \u0026tags.TagValueArgs{\nParent: tagKey1.Name.ApplyT(func(name string) (string, error) {\nreturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n}).(pulumi.StringOutput),\nShortName: pulumi.String(\"valuename\"),\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\ndefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\nRegion: pulumi.String(\"us-central1\"),\nNetwork: _default.Name,\n})\nif err != nil {\nreturn err\n}\ndefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\nWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\nNetwork: _default.ID(),\nSubnetwork: defaultSubnetwork.ID(),\nLocation: pulumi.String(\"us-central1\"),\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\nWorkstationConfigId: pulumi.String(\"workstation-config\"),\nWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\nLocation: pulumi.String(\"us-central1\"),\nIdleTimeout: pulumi.String(\"600s\"),\nRunningTimeout: pulumi.String(\"21600s\"),\nReplicaZones: pulumi.StringArray{\npulumi.String(\"us-central1-a\"),\npulumi.String(\"us-central1-b\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nHost: \u0026workstations.WorkstationConfigHostArgs{\nGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\nMachineType: pulumi.String(\"e2-standard-4\"),\nBootDiskSizeGb: pulumi.Int(35),\nDisablePublicIpAddresses: pulumi.Bool(true),\nDisableSsh: pulumi.Bool(false),\nVmTags: pulumi.All(tagKey1.Name,tagValue1.Name).ApplyT(func(_args []interface{}) (map[string]string, error) {\ntagKey1Name := _args[0].(string)\ntagValue1Name := _args[1].(string)\nreturn map[string]string{\nfmt.Sprintf(\"tagKeys/%v\", tagKey1Name): fmt.Sprintf(\"tagValues/%v\", tagValue1Name),\n}, nil\n}).(pulumi.Map[string]stringOutput),\n},\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 tagKey1 = new TagKey(\"tagKey1\", TagKeyArgs.builder()\n .parent(\"organizations/123456789\")\n .shortName(\"keyname\")\n .build());\n\n var tagValue1 = new TagValue(\"tagValue1\", TagValueArgs.builder()\n .parent(tagKey1.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"valuename\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .idleTimeout(\"600s\")\n .runningTimeout(\"21600s\")\n .replicaZones( \n \"us-central1-a\",\n \"us-central1-b\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .labels(Map.of(\"label\", \"key\"))\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .disableSsh(false)\n .vmTags(Output.tuple(tagKey1.name(), tagValue1.name()).applyValue(values -\u003e {\n var tagKey1Name = values.t1;\n var tagValue1Name = values.t2;\n return Map.of(String.format(\"tagKeys/%s\", tagKey1Name), String.format(\"tagValues/%s\", tagValue1Name));\n }))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tagKey1:\n type: gcp:tags:TagKey\n name: tag_key1\n properties:\n parent: organizations/123456789\n shortName: keyname\n tagValue1:\n type: gcp:tags:TagValue\n name: tag_value1\n properties:\n parent: tagKeys/${tagKey1.name}\n shortName: valuename\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n idleTimeout: 600s\n runningTimeout: 21600s\n replicaZones:\n - us-central1-a\n - us-central1-b\n annotations:\n label-one: value-one\n labels:\n label: key\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n disableSsh: false\n vmTags:\n tagKeys/${tagKey1.name}: tagValues/${tagValue1.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n enableNestedVirtualization: true,\n },\n },\n container: {\n image: \"intellij\",\n env: {\n NAME: \"FOO\",\n BABE: \"bar\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"enable_nested_virtualization\": True,\n },\n },\n container={\n \"image\": \"intellij\",\n \"env\": {\n \"NAME\": \"FOO\",\n \"BABE\": \"bar\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n EnableNestedVirtualization = true,\n },\n },\n Container = new Gcp.Workstations.Inputs.WorkstationConfigContainerArgs\n {\n Image = \"intellij\",\n Env = \n {\n { \"NAME\", \"FOO\" },\n { \"BABE\", \"bar\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContainer: \u0026workstations.WorkstationConfigContainerArgs{\n\t\t\t\tImage: pulumi.String(\"intellij\"),\n\t\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\t\"NAME\": pulumi.String(\"FOO\"),\n\t\t\t\t\t\"BABE\": pulumi.String(\"bar\"),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigContainerArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .container(WorkstationConfigContainerArgs.builder()\n .image(\"intellij\")\n .env(Map.ofEntries(\n Map.entry(\"NAME\", \"FOO\"),\n Map.entry(\"BABE\", \"bar\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n enableNestedVirtualization: true\n container:\n image: intellij\n env:\n NAME: FOO\n BABE: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Persistent Directories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sizeGb: 200,\n fsType: \"ext4\",\n diskType: \"pd-standard\",\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"size_gb\": 200,\n \"fs_type\": \"ext4\",\n \"disk_type\": \"pd-standard\",\n \"reclaim_policy\": \"DELETE\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SizeGb = 200,\n FsType = \"ext4\",\n DiskType = \"pd-standard\",\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSizeGb: pulumi.Int(200),\n\t\t\t\t\t\tFsType: pulumi.String(\"ext4\"),\n\t\t\t\t\t\tDiskType: pulumi.String(\"pd-standard\"),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sizeGb(200)\n .fsType(\"ext4\")\n .diskType(\"pd-standard\")\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sizeGb: 200\n fsType: ext4\n diskType: pd-standard\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Source Snapshot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst mySourceDisk = new gcp.compute.Disk(\"my_source_disk\", {\n name: \"workstation-config\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst mySourceSnapshot = new gcp.compute.Snapshot(\"my_source_snapshot\", {\n name: \"workstation-config\",\n sourceDisk: mySourceDisk.name,\n zone: \"us-central1-a\",\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: defaultWorkstationCluster.location,\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sourceSnapshot: mySourceSnapshot.id,\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\nmy_source_disk = gcp.compute.Disk(\"my_source_disk\",\n name=\"workstation-config\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\nmy_source_snapshot = gcp.compute.Snapshot(\"my_source_snapshot\",\n name=\"workstation-config\",\n source_disk=my_source_disk.name,\n zone=\"us-central1-a\")\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=default_workstation_cluster.location,\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"source_snapshot\": my_source_snapshot.id,\n \"reclaim_policy\": \"DELETE\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var mySourceDisk = new Gcp.Compute.Disk(\"my_source_disk\", new()\n {\n Name = \"workstation-config\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var mySourceSnapshot = new Gcp.Compute.Snapshot(\"my_source_snapshot\", new()\n {\n Name = \"workstation-config\",\n SourceDisk = mySourceDisk.Name,\n Zone = \"us-central1-a\",\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = defaultWorkstationCluster.Location,\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SourceSnapshot = mySourceSnapshot.Id,\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceDisk, err := compute.NewDisk(ctx, \"my_source_disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceSnapshot, err := compute.NewSnapshot(ctx, \"my_source_snapshot\", \u0026compute.SnapshotArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSourceDisk: mySourceDisk.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: defaultWorkstationCluster.Location,\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSourceSnapshot: mySourceSnapshot.ID(),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.Snapshot;\nimport com.pulumi.gcp.compute.SnapshotArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var mySourceDisk = new Disk(\"mySourceDisk\", DiskArgs.builder()\n .name(\"workstation-config\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var mySourceSnapshot = new Snapshot(\"mySourceSnapshot\", SnapshotArgs.builder()\n .name(\"workstation-config\")\n .sourceDisk(mySourceDisk.name())\n .zone(\"us-central1-a\")\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(defaultWorkstationCluster.location())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sourceSnapshot(mySourceSnapshot.id())\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n mySourceDisk:\n type: gcp:compute:Disk\n name: my_source_disk\n properties:\n name: workstation-config\n size: 10\n type: pd-ssd\n zone: us-central1-a\n mySourceSnapshot:\n type: gcp:compute:Snapshot\n name: my_source_snapshot\n properties:\n name: workstation-config\n sourceDisk: ${mySourceDisk.name}\n zone: us-central1-a\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: ${defaultWorkstationCluster.location}\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sourceSnapshot: ${mySourceSnapshot.id}\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Shielded Instance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Accelerators\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-2\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-2\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-2\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceAcceleratorArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceAcceleratorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\tCount: pulumi.Int(1),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-2\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .accelerators(WorkstationConfigHostGceInstanceAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-2\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Boost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n boostConfigs: [\n {\n id: \"boost-1\",\n machineType: \"n1-standard-2\",\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n {\n id: \"boost-2\",\n machineType: \"n1-standard-2\",\n poolSize: 2,\n bootDiskSizeGb: 30,\n enableNestedVirtualization: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"boost_configs\": [\n {\n \"id\": \"boost-1\",\n \"machine_type\": \"n1-standard-2\",\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n {\n \"id\": \"boost-2\",\n \"machine_type\": \"n1-standard-2\",\n \"pool_size\": 2,\n \"boot_disk_size_gb\": 30,\n \"enable_nested_virtualization\": True,\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n BoostConfigs = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-1\",\n MachineType = \"n1-standard-2\",\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-2\",\n MachineType = \"n1-standard-2\",\n PoolSize = 2,\n BootDiskSizeGb = 30,\n EnableNestedVirtualization = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tBoostConfigs: workstations.WorkstationConfigHostGceInstanceBoostConfigArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-1\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArray{\n\t\t\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs{\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\t\t\tCount: pulumi.Int(1),\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\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-2\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tPoolSize: pulumi.Int(2),\n\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .boostConfigs( \n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-1\")\n .machineType(\"n1-standard-2\")\n .accelerators(WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build(),\n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-2\")\n .machineType(\"n1-standard-2\")\n .poolSize(2)\n .bootDiskSizeGb(30)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n boostConfigs:\n - id: boost-1\n machineType: n1-standard-2\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n - id: boost-2\n machineType: n1-standard-2\n poolSize: 2\n bootDiskSizeGb: 30\n enableNestedVirtualization: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Encryption Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultKeyRing = new gcp.kms.KeyRing(\"default\", {\n name: \"workstation-cluster\",\n location: \"us-central1\",\n});\nconst defaultCryptoKey = new gcp.kms.CryptoKey(\"default\", {\n name: \"workstation-cluster\",\n keyRing: defaultKeyRing.id,\n});\nconst defaultAccount = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n encryptionKey: {\n kmsKey: defaultCryptoKey.id,\n kmsKeyServiceAccount: defaultAccount.email,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_key_ring = gcp.kms.KeyRing(\"default\",\n name=\"workstation-cluster\",\n location=\"us-central1\")\ndefault_crypto_key = gcp.kms.CryptoKey(\"default\",\n name=\"workstation-cluster\",\n key_ring=default_key_ring.id)\ndefault_account = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n encryption_key={\n \"kms_key\": default_crypto_key.id,\n \"kms_key_service_account\": default_account.email,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultKeyRing = new Gcp.Kms.KeyRing(\"default\", new()\n {\n Name = \"workstation-cluster\",\n Location = \"us-central1\",\n });\n\n var defaultCryptoKey = new Gcp.Kms.CryptoKey(\"default\", new()\n {\n Name = \"workstation-cluster\",\n KeyRing = defaultKeyRing.Id,\n });\n\n var defaultAccount = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n EncryptionKey = new Gcp.Workstations.Inputs.WorkstationConfigEncryptionKeyArgs\n {\n KmsKey = defaultCryptoKey.Id,\n KmsKeyServiceAccount = defaultAccount.Email,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\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 := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultKeyRing, err := kms.NewKeyRing(ctx, \"default\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCryptoKey, err := kms.NewCryptoKey(ctx, \"default\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tKeyRing: defaultKeyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAccount, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionKey: \u0026workstations.WorkstationConfigEncryptionKeyArgs{\n\t\t\t\tKmsKey: defaultCryptoKey.ID(),\n\t\t\t\tKmsKeyServiceAccount: defaultAccount.Email,\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.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigEncryptionKeyArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultKeyRing = new KeyRing(\"defaultKeyRing\", KeyRingArgs.builder()\n .name(\"workstation-cluster\")\n .location(\"us-central1\")\n .build());\n\n var defaultCryptoKey = new CryptoKey(\"defaultCryptoKey\", CryptoKeyArgs.builder()\n .name(\"workstation-cluster\")\n .keyRing(defaultKeyRing.id())\n .build());\n\n var defaultAccount = new Account(\"defaultAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Service Account\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .encryptionKey(WorkstationConfigEncryptionKeyArgs.builder()\n .kmsKey(defaultCryptoKey.id())\n .kmsKeyServiceAccount(defaultAccount.email())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultKeyRing:\n type: gcp:kms:KeyRing\n name: default\n properties:\n name: workstation-cluster\n location: us-central1\n defaultCryptoKey:\n type: gcp:kms:CryptoKey\n name: default\n properties:\n name: workstation-cluster\n keyRing: ${defaultKeyRing.id}\n defaultAccount:\n type: gcp:serviceaccount:Account\n name: default\n properties:\n accountId: my-account\n displayName: Service Account\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n encryptionKey:\n kmsKey: ${defaultCryptoKey.id}\n kmsKeyServiceAccount: ${defaultAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\nWhen using the `pulumi import` command, WorkstationConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n", "properties": { "annotations": { "type": "object", diff --git a/provider/go.mod b/provider/go.mod index 2588d19d9c..bb2368ce77 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -283,3 +283,7 @@ require ( lukechampine.com/frand v1.4.2 // indirect mvdan.cc/gofumpt v0.5.0 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 diff --git a/provider/go.sum b/provider/go.sum index d2306eda69..6d4be2cd40 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1991,10 +1991,10 @@ github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.10 h1:VAXmHuldKd760ZlMe6k github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.10/go.mod h1:+AQS/2h775Chx1a4vxb7cDdyiOsdEw2Q6gD7K5QCIwI= github.com/pulumi/pulumi-yaml v1.10.3 h1:j5cjPiE32ILmjrWnC1cfZ0MWdqCZ8fg9wlaWk7HOtM4= github.com/pulumi/pulumi-yaml v1.10.3/go.mod h1:MFMQXkaUP5YQUKVJ6Z/aagZDl2f8hdU9oGaJfTcMf1Y= -github.com/pulumi/pulumi/pkg/v3 v3.136.1 h1:zA8aJZ7qI0QgZkBKjjQaYHEcigK6pZfrbfG38imXzWo= -github.com/pulumi/pulumi/pkg/v3 v3.136.1/go.mod h1:Iz8QIs07AbEdrO52hEIEM5C4VBDUYFH2NdM9u2xxBxY= -github.com/pulumi/pulumi/sdk/v3 v3.136.1 h1:VJWTgdBrLvvzIkMbGq/epNEfT65P9gTvw14UF/I7hTI= -github.com/pulumi/pulumi/sdk/v3 v3.136.1/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= +github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 h1:gUybpGOZkFg3bCtSlK17uln/dhpFHchZl3ow/JvDOAU= +github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20241011093535-6ec1e3be3a38/go.mod h1:Be8oFq0YzWMXCq7BN3+YO18XzYjQzowHr8DmtT2sMQE= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 h1:QMbO9loFx0hagURRUIXl3qtvnwXR9V2R0VpTF0fk8aQ= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo= github.com/pulumi/schema-tools v0.1.2/go.mod h1:62lgj52Tzq11eqWTIaKd+EVyYAu5dEcDJxMhTjvMO/k= github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI= diff --git a/sdk/go.mod b/sdk/go.mod index d898e32822..793a56eb74 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -89,3 +89,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/frand v1.4.2 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 diff --git a/sdk/go.sum b/sdk/go.sum index ecce3b21e6..b19b313967 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -150,8 +150,8 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= -github.com/pulumi/pulumi/sdk/v3 v3.136.1 h1:VJWTgdBrLvvzIkMbGq/epNEfT65P9gTvw14UF/I7hTI= -github.com/pulumi/pulumi/sdk/v3 v3.136.1/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38 h1:QMbO9loFx0hagURRUIXl3qtvnwXR9V2R0VpTF0fk8aQ= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20241011093535-6ec1e3be3a38/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= diff --git a/sdk/nodejs/package.json b/sdk/nodejs/package.json index 01264b8f77..c923e27a49 100644 --- a/sdk/nodejs/package.json +++ b/sdk/nodejs/package.json @@ -13,7 +13,7 @@ "build": "tsc" }, "dependencies": { - "@pulumi/pulumi": "^3.136.0", + "@pulumi/pulumi": "^3.134.1", "@types/express": "^4.16.0", "read-package-json": "^2.0.13" }, diff --git a/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py b/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py index 502a5b885b..258cffb7b5 100644 --- a/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py +++ b/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py @@ -237,8 +237,8 @@ def __init__(__self__, liveappV1Version_id=liveapp_v1.version_id, liveappV2Version_id=liveapp_v2.version_id ).apply(lambda resolved_outputs: { - "": 0.75, - "": 0.25, + resolved_outputs['liveappV1Version_id']: 0.75, + resolved_outputs['liveappV2Version_id']: 0.25, }) , }) @@ -352,8 +352,8 @@ def __init__(__self__, liveappV1Version_id=liveapp_v1.version_id, liveappV2Version_id=liveapp_v2.version_id ).apply(lambda resolved_outputs: { - "": 0.75, - "": 0.25, + resolved_outputs['liveappV1Version_id']: 0.75, + resolved_outputs['liveappV2Version_id']: 0.25, }) , }) diff --git a/sdk/python/pulumi_gcp/biglake/table.py b/sdk/python/pulumi_gcp/biglake/table.py index fe6ba5c2f7..ee5d2157ac 100644 --- a/sdk/python/pulumi_gcp/biglake/table.py +++ b/sdk/python/pulumi_gcp/biglake/table.py @@ -369,13 +369,13 @@ def __init__(__self__, "output_format": "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat", }, "parameters": { - "spark_sql_create_version": "3.1.3", - "spark_sql_sources_schema_num_parts": "1", - "transient_last_ddl_time": "1680894197", - "spark_sql_partition_provider": "catalog", + "spark.sql.create.version": "3.1.3", + "spark.sql.sources.schema.numParts": "1", + "transient_lastDdlTime": "1680894197", + "spark.sql.partitionProvider": "catalog", "owner": "John Doe", - "spark_sql_sources_schema_part_0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", - "spark_sql_sources_provider": "iceberg", + "spark.sql.sources.schema.part.0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", + "spark.sql.sources.provider": "iceberg", "provider": "iceberg", }, }) @@ -475,13 +475,13 @@ def __init__(__self__, "output_format": "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat", }, "parameters": { - "spark_sql_create_version": "3.1.3", - "spark_sql_sources_schema_num_parts": "1", - "transient_last_ddl_time": "1680894197", - "spark_sql_partition_provider": "catalog", + "spark.sql.create.version": "3.1.3", + "spark.sql.sources.schema.numParts": "1", + "transient_lastDdlTime": "1680894197", + "spark.sql.partitionProvider": "catalog", "owner": "John Doe", - "spark_sql_sources_schema_part_0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", - "spark_sql_sources_provider": "iceberg", + "spark.sql.sources.schema.part.0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", + "spark.sql.sources.provider": "iceberg", "provider": "iceberg", }, }) diff --git a/sdk/python/pulumi_gcp/bigquery/connection.py b/sdk/python/pulumi_gcp/bigquery/connection.py index ea92d306fd..814df8d8ef 100644 --- a/sdk/python/pulumi_gcp/bigquery/connection.py +++ b/sdk/python/pulumi_gcp/bigquery/connection.py @@ -708,7 +708,7 @@ def __init__(__self__, cluster_config={ "software_config": { "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", + "dataproc:dataproc.allow.zero.workers": "true", }, }, "master_config": { @@ -1014,7 +1014,7 @@ def __init__(__self__, cluster_config={ "software_config": { "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", + "dataproc:dataproc.allow.zero.workers": "true", }, }, "master_config": { diff --git a/sdk/python/pulumi_gcp/bigquery/dataset.py b/sdk/python/pulumi_gcp/bigquery/dataset.py index e7febf7c0d..b66b713a3c 100644 --- a/sdk/python/pulumi_gcp/bigquery/dataset.py +++ b/sdk/python/pulumi_gcp/bigquery/dataset.py @@ -1081,7 +1081,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ @@ -1366,7 +1366,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ diff --git a/sdk/python/pulumi_gcp/bigquery/dataset_access.py b/sdk/python/pulumi_gcp/bigquery/dataset_access.py index e5ed6cad62..9e23c793cf 100644 --- a/sdk/python/pulumi_gcp/bigquery/dataset_access.py +++ b/sdk/python/pulumi_gcp/bigquery/dataset_access.py @@ -614,7 +614,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ @@ -768,7 +768,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ diff --git a/sdk/python/pulumi_gcp/bigquery/routine.py b/sdk/python/pulumi_gcp/bigquery/routine.py index a46e6cec5a..4048799c5e 100644 --- a/sdk/python/pulumi_gcp/bigquery/routine.py +++ b/sdk/python/pulumi_gcp/bigquery/routine.py @@ -731,7 +731,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ @@ -834,8 +834,8 @@ def __init__(__self__, "main_class": "com.google.test.jar.MainClass", "jar_uris": ["gs://test-bucket/uberjar_spark_spark3.jar"], "properties": { - "spark_dataproc_scaling_version": "2", - "spark_reducer_fetch_migrated_shuffle_enabled": "true", + "spark.dataproc.scaling.version": "2", + "spark.reducer.fetchMigratedShuffle.enabled": "true", }, }) ``` @@ -1026,7 +1026,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ @@ -1129,8 +1129,8 @@ def __init__(__self__, "main_class": "com.google.test.jar.MainClass", "jar_uris": ["gs://test-bucket/uberjar_spark_spark3.jar"], "properties": { - "spark_dataproc_scaling_version": "2", - "spark_reducer_fetch_migrated_shuffle_enabled": "true", + "spark.dataproc.scaling.version": "2", + "spark.reducer.fetchMigratedShuffle.enabled": "true", }, }) ``` diff --git a/sdk/python/pulumi_gcp/cloudbuild/trigger.py b/sdk/python/pulumi_gcp/cloudbuild/trigger.py index 591c5923d5..faac22ab2c 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/trigger.py +++ b/sdk/python/pulumi_gcp/cloudbuild/trigger.py @@ -1103,15 +1103,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -1472,15 +1472,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -1551,15 +1551,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -1817,15 +1817,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -2186,15 +2186,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -2265,15 +2265,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { diff --git a/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py b/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py index e65b2223b1..db014ecee1 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py +++ b/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py @@ -484,7 +484,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -525,7 +525,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -566,7 +566,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -607,7 +607,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -648,7 +648,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -745,7 +745,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -786,7 +786,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -827,7 +827,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -868,7 +868,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -909,7 +909,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py index 269043a67f..831d90206b 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py @@ -561,7 +561,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -578,8 +578,8 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", - "servic_e__confi_g__dif_f__test": account.email, + "SERVICE_CONFIG_TEST": "config_test", + "SERVICE_CONFIG_DIFF_TEST": account.email, }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -709,7 +709,7 @@ def __init__(__self__, "runtime": "nodejs12", "entry_point": "entryPoint", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -724,7 +724,7 @@ def __init__(__self__, "available_memory": "256M", "timeout_seconds": 60, "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -795,7 +795,7 @@ def __init__(__self__, "runtime": "nodejs12", "entry_point": "entryPoint", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -810,7 +810,7 @@ def __init__(__self__, "available_memory": "256M", "timeout_seconds": 60, "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1150,7 +1150,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1168,7 +1168,7 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1208,7 +1208,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1226,7 +1226,7 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1367,7 +1367,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1384,8 +1384,8 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", - "servic_e__confi_g__dif_f__test": account.email, + "SERVICE_CONFIG_TEST": "config_test", + "SERVICE_CONFIG_DIFF_TEST": account.email, }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1515,7 +1515,7 @@ def __init__(__self__, "runtime": "nodejs12", "entry_point": "entryPoint", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1530,7 +1530,7 @@ def __init__(__self__, "available_memory": "256M", "timeout_seconds": 60, "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1601,7 +1601,7 @@ def __init__(__self__, "runtime": "nodejs12", "entry_point": "entryPoint", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1616,7 +1616,7 @@ def __init__(__self__, "available_memory": "256M", "timeout_seconds": 60, "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1956,7 +1956,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1974,7 +1974,7 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -2014,7 +2014,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -2032,7 +2032,7 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, diff --git a/sdk/python/pulumi_gcp/cloudrun/service.py b/sdk/python/pulumi_gcp/cloudrun/service.py index 73137e5cc4..2e93bd7f31 100644 --- a/sdk/python/pulumi_gcp/cloudrun/service.py +++ b/sdk/python/pulumi_gcp/cloudrun/service.py @@ -387,7 +387,7 @@ def __init__(__self__, "service_account_email": sa.email, }, "attributes": { - "x_goog_version": "v1", + "x-goog-version": "v1", }, }) ``` @@ -424,14 +424,14 @@ def __init__(__self__, location="us-central1", metadata={ "annotations": { - "run_googleapis_com_launch_stage": "BETA", + "run.googleapis.com/launch-stage": "BETA", }, }, template={ "metadata": { "annotations": { - "autoscaling_knative_dev_max_scale": "1", - "run_googleapis_com_cpu_throttling": "false", + "autoscaling.knative.dev/maxScale": "1", + "run.googleapis.com/cpu-throttling": "false", }, }, "spec": { @@ -441,12 +441,12 @@ def __init__(__self__, "limits": { "cpu": "4", "memory": "16Gi", - "nvidia_com_gpu": "1", + "nvidia.com/gpu": "1", }, }, }], "node_selector": { - "run_googleapis_com_accelerator": "nvidia-l4", + "run.googleapis.com/accelerator": "nvidia-l4", }, }, }) @@ -476,9 +476,9 @@ def __init__(__self__, }, "metadata": { "annotations": { - "autoscaling_knative_dev_max_scale": "1000", - "run_googleapis_com_cloudsql_instances": instance.connection_name, - "run_googleapis_com_client_name": "demo", + "autoscaling.knative.dev/maxScale": "1000", + "run.googleapis.com/cloudsql-instances": instance.connection_name, + "run.googleapis.com/client-name": "demo", }, }, }, @@ -557,14 +557,14 @@ def __init__(__self__, location="us-central1", metadata={ "annotations": { - "run_googleapis_com_launch_stage": "BETA", + "run.googleapis.com/launch-stage": "BETA", }, }, template={ "metadata": { "annotations": { - "run_googleapis_com_container_dependencies": json.dumps({ - "hello_1": ["hello-2"], + "run.googleapis.com/container-dependencies": json.dumps({ + "hello-1": ["hello-2"], }), }, }, @@ -717,7 +717,7 @@ def __init__(__self__, "service_account_email": sa.email, }, "attributes": { - "x_goog_version": "v1", + "x-goog-version": "v1", }, }) ``` @@ -754,14 +754,14 @@ def __init__(__self__, location="us-central1", metadata={ "annotations": { - "run_googleapis_com_launch_stage": "BETA", + "run.googleapis.com/launch-stage": "BETA", }, }, template={ "metadata": { "annotations": { - "autoscaling_knative_dev_max_scale": "1", - "run_googleapis_com_cpu_throttling": "false", + "autoscaling.knative.dev/maxScale": "1", + "run.googleapis.com/cpu-throttling": "false", }, }, "spec": { @@ -771,12 +771,12 @@ def __init__(__self__, "limits": { "cpu": "4", "memory": "16Gi", - "nvidia_com_gpu": "1", + "nvidia.com/gpu": "1", }, }, }], "node_selector": { - "run_googleapis_com_accelerator": "nvidia-l4", + "run.googleapis.com/accelerator": "nvidia-l4", }, }, }) @@ -806,9 +806,9 @@ def __init__(__self__, }, "metadata": { "annotations": { - "autoscaling_knative_dev_max_scale": "1000", - "run_googleapis_com_cloudsql_instances": instance.connection_name, - "run_googleapis_com_client_name": "demo", + "autoscaling.knative.dev/maxScale": "1000", + "run.googleapis.com/cloudsql-instances": instance.connection_name, + "run.googleapis.com/client-name": "demo", }, }, }, @@ -887,14 +887,14 @@ def __init__(__self__, location="us-central1", metadata={ "annotations": { - "run_googleapis_com_launch_stage": "BETA", + "run.googleapis.com/launch-stage": "BETA", }, }, template={ "metadata": { "annotations": { - "run_googleapis_com_container_dependencies": json.dumps({ - "hello_1": ["hello-2"], + "run.googleapis.com/container-dependencies": json.dumps({ + "hello-1": ["hello-2"], }), }, }, diff --git a/sdk/python/pulumi_gcp/cloudrunv2/service.py b/sdk/python/pulumi_gcp/cloudrunv2/service.py index 1718765518..dd69b5b783 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/service.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/service.py @@ -1218,7 +1218,7 @@ def __init__(__self__, "limits": { "cpu": "4", "memory": "16Gi", - "nvidia_com_gpu": "1", + "nvidia.com/gpu": "1", }, "startup_cpu_boost": True, }, @@ -1741,7 +1741,7 @@ def __init__(__self__, "limits": { "cpu": "4", "memory": "16Gi", - "nvidia_com_gpu": "1", + "nvidia.com/gpu": "1", }, "startup_cpu_boost": True, }, diff --git a/sdk/python/pulumi_gcp/cloudscheduler/job.py b/sdk/python/pulumi_gcp/cloudscheduler/job.py index 00033a4638..0ca945327e 100644 --- a/sdk/python/pulumi_gcp/cloudscheduler/job.py +++ b/sdk/python/pulumi_gcp/cloudscheduler/job.py @@ -602,7 +602,7 @@ def __init__(__self__, "uri": "https://example.com/", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "content__type": "application/json", + "Content-Type": "application/json", }, }) ``` @@ -628,7 +628,7 @@ def __init__(__self__, "uri": "https://example.com/ping", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "content__type": "application/json", + "Content-Type": "application/json", }, }) ``` @@ -829,7 +829,7 @@ def __init__(__self__, "uri": "https://example.com/", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "content__type": "application/json", + "Content-Type": "application/json", }, }) ``` @@ -855,7 +855,7 @@ def __init__(__self__, "uri": "https://example.com/ping", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "content__type": "application/json", + "Content-Type": "application/json", }, }) ``` diff --git a/sdk/python/pulumi_gcp/container/aws_node_pool.py b/sdk/python/pulumi_gcp/container/aws_node_pool.py index 6898fb9daa..e789118e8b 100644 --- a/sdk/python/pulumi_gcp/container/aws_node_pool.py +++ b/sdk/python/pulumi_gcp/container/aws_node_pool.py @@ -679,7 +679,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -696,7 +696,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "PREFER_NO_SCHEDULE", @@ -807,7 +807,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -824,7 +824,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", @@ -926,7 +926,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -943,7 +943,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", @@ -1108,7 +1108,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -1125,7 +1125,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "PREFER_NO_SCHEDULE", @@ -1236,7 +1236,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -1253,7 +1253,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", @@ -1355,7 +1355,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -1372,7 +1372,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", diff --git a/sdk/python/pulumi_gcp/dataplex/task.py b/sdk/python/pulumi_gcp/dataplex/task.py index 497995f851..93e0ae6cff 100644 --- a/sdk/python/pulumi_gcp/dataplex/task.py +++ b/sdk/python/pulumi_gcp/dataplex/task.py @@ -628,7 +628,7 @@ def __init__(__self__, execution_spec={ "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "tas_k__args": "--output_location,gs://spark-job/task-result, --output_format, json", + "TASK_ARGS": "--output_location,gs://spark-job/task-result, --output_format, json", }, }, spark={ @@ -684,7 +684,7 @@ def __init__(__self__, execution_spec={ "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "tas_k__args": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", + "TASK_ARGS": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", }, }, notebook={ @@ -838,7 +838,7 @@ def __init__(__self__, execution_spec={ "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "tas_k__args": "--output_location,gs://spark-job/task-result, --output_format, json", + "TASK_ARGS": "--output_location,gs://spark-job/task-result, --output_format, json", }, }, spark={ @@ -894,7 +894,7 @@ def __init__(__self__, execution_spec={ "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "tas_k__args": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", + "TASK_ARGS": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", }, }, notebook={ diff --git a/sdk/python/pulumi_gcp/dataproc/batch.py b/sdk/python/pulumi_gcp/dataproc/batch.py index ea72d953f2..24d07180b4 100644 --- a/sdk/python/pulumi_gcp/dataproc/batch.py +++ b/sdk/python/pulumi_gcp/dataproc/batch.py @@ -642,8 +642,8 @@ def __init__(__self__, }, runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, }, environment_config={ @@ -701,8 +701,8 @@ def __init__(__self__, cluster_config={ "software_config": { "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", - "spark_spark_history_fs_log_directory": bucket.name.apply(lambda name: f"gs://{name}/*/spark-job-history"), + "dataproc:dataproc.allow.zero.workers": "true", + "spark:spark.history.fs.logDirectory": bucket.name.apply(lambda name: f"gs://{name}/*/spark-job-history"), }, }, "endpoint_config": { @@ -727,8 +727,8 @@ def __init__(__self__, }, runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, "version": "2.2", }, @@ -766,8 +766,8 @@ def __init__(__self__, location="us-central1", runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, }, environment_config={ @@ -794,8 +794,8 @@ def __init__(__self__, location="us-central1", runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, }, environment_config={ @@ -830,8 +830,8 @@ def __init__(__self__, }, runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, }, environment_config={ @@ -927,8 +927,8 @@ def __init__(__self__, }, runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, }, environment_config={ @@ -986,8 +986,8 @@ def __init__(__self__, cluster_config={ "software_config": { "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", - "spark_spark_history_fs_log_directory": bucket.name.apply(lambda name: f"gs://{name}/*/spark-job-history"), + "dataproc:dataproc.allow.zero.workers": "true", + "spark:spark.history.fs.logDirectory": bucket.name.apply(lambda name: f"gs://{name}/*/spark-job-history"), }, }, "endpoint_config": { @@ -1012,8 +1012,8 @@ def __init__(__self__, }, runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, "version": "2.2", }, @@ -1051,8 +1051,8 @@ def __init__(__self__, location="us-central1", runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, }, environment_config={ @@ -1079,8 +1079,8 @@ def __init__(__self__, location="us-central1", runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, }, environment_config={ @@ -1115,8 +1115,8 @@ def __init__(__self__, }, runtime_config={ "properties": { - "spark_dynamic_allocation_enabled": "false", - "spark_executor_instances": "2", + "spark.dynamicAllocation.enabled": "false", + "spark.executor.instances": "2", }, }, environment_config={ diff --git a/sdk/python/pulumi_gcp/dataproc/cluster.py b/sdk/python/pulumi_gcp/dataproc/cluster.py index fa785d6222..1b94b66d3a 100644 --- a/sdk/python/pulumi_gcp/dataproc/cluster.py +++ b/sdk/python/pulumi_gcp/dataproc/cluster.py @@ -400,7 +400,7 @@ def __init__(__self__, "software_config": { "image_version": "2.0.35-debian10", "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", + "dataproc:dataproc.allow.zero.workers": "true", }, }, "gce_cluster_config": { @@ -533,7 +533,7 @@ def __init__(__self__, "software_config": { "image_version": "2.0.35-debian10", "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", + "dataproc:dataproc.allow.zero.workers": "true", }, }, "gce_cluster_config": { diff --git a/sdk/python/pulumi_gcp/dataproc/job.py b/sdk/python/pulumi_gcp/dataproc/job.py index 87bc3cf402..29d8ab3c78 100644 --- a/sdk/python/pulumi_gcp/dataproc/job.py +++ b/sdk/python/pulumi_gcp/dataproc/job.py @@ -640,7 +640,7 @@ def __init__(__self__, "jar_file_uris": ["file:///usr/lib/spark/examples/jars/spark-examples.jar"], "args": ["1000"], "properties": { - "spark_log_conf": "true", + "spark.logConf": "true", }, "logging_config": { "driver_log_levels": { @@ -658,7 +658,7 @@ def __init__(__self__, pyspark_config={ "main_python_file_uri": "gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py", "properties": { - "spark_log_conf": "true", + "spark.logConf": "true", }, }) pulumi.export("sparkStatus", spark.statuses[0].state) @@ -725,7 +725,7 @@ def __init__(__self__, "jar_file_uris": ["file:///usr/lib/spark/examples/jars/spark-examples.jar"], "args": ["1000"], "properties": { - "spark_log_conf": "true", + "spark.logConf": "true", }, "logging_config": { "driver_log_levels": { @@ -743,7 +743,7 @@ def __init__(__self__, pyspark_config={ "main_python_file_uri": "gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py", "properties": { - "spark_log_conf": "true", + "spark.logConf": "true", }, }) pulumi.export("sparkStatus", spark.statuses[0].state) diff --git a/sdk/python/pulumi_gcp/diagflow/cx_flow.py b/sdk/python/pulumi_gcp/diagflow/cx_flow.py index 0acdbb8ebc..6dc3a86eef 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_flow.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_flow.py @@ -714,7 +714,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -815,7 +815,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1142,7 +1142,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1243,7 +1243,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { diff --git a/sdk/python/pulumi_gcp/diagflow/cx_page.py b/sdk/python/pulumi_gcp/diagflow/cx_page.py index d08d4f3522..5c09f9d63f 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_page.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_page.py @@ -585,7 +585,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -684,7 +684,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -787,7 +787,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -889,7 +889,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1009,7 +1009,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1230,7 +1230,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1329,7 +1329,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1432,7 +1432,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1534,7 +1534,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1654,7 +1654,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { diff --git a/sdk/python/pulumi_gcp/firebase/extensions_instance.py b/sdk/python/pulumi_gcp/firebase/extensions_instance.py index 6994b2f497..d4be957f39 100644 --- a/sdk/python/pulumi_gcp/firebase/extensions_instance.py +++ b/sdk/python/pulumi_gcp/firebase/extensions_instance.py @@ -333,20 +333,20 @@ def __init__(__self__, "extension_ref": "firebase/storage-resize-images", "extension_version": "0.2.2", "params": { - "delet_e__origina_l__file": "false", - "mak_e__public": "false", - "imag_e__type": "false", - "i_s__animated": "true", - "functio_n__memory": "1024", - "d_o__backfill": "false", - "im_g__sizes": "200x200", - "im_g__bucket": images.name, + "DELETE_ORIGINAL_FILE": "false", + "MAKE_PUBLIC": "false", + "IMAGE_TYPE": "false", + "IS_ANIMATED": "true", + "FUNCTION_MEMORY": "1024", + "DO_BACKFILL": "false", + "IMG_SIZES": "200x200", + "IMG_BUCKET": images.name, }, "system_params": { - "firebaseextensions_v1beta_function_location": "", - "firebaseextensions_v1beta_function_max_instances": "3000", - "firebaseextensions_v1beta_function_min_instances": "0", - "firebaseextensions_v1beta_function_vpc_connector_egress_settings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", + "firebaseextensions.v1beta.function/location": "", + "firebaseextensions.v1beta.function/maxInstances": "3000", + "firebaseextensions.v1beta.function/minInstances": "0", + "firebaseextensions.v1beta.function/vpcConnectorEgressSettings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", }, "allowed_event_types": ["firebase.extensions.storage-resize-images.v1.onCompletion"], "eventarc_channel": "projects/my-project-name/locations//channels/firebase", @@ -412,20 +412,20 @@ def __init__(__self__, "extension_ref": "firebase/storage-resize-images", "extension_version": "0.2.2", "params": { - "delet_e__origina_l__file": "false", - "mak_e__public": "false", - "imag_e__type": "false", - "i_s__animated": "true", - "functio_n__memory": "1024", - "d_o__backfill": "false", - "im_g__sizes": "200x200", - "im_g__bucket": images.name, + "DELETE_ORIGINAL_FILE": "false", + "MAKE_PUBLIC": "false", + "IMAGE_TYPE": "false", + "IS_ANIMATED": "true", + "FUNCTION_MEMORY": "1024", + "DO_BACKFILL": "false", + "IMG_SIZES": "200x200", + "IMG_BUCKET": images.name, }, "system_params": { - "firebaseextensions_v1beta_function_location": "", - "firebaseextensions_v1beta_function_max_instances": "3000", - "firebaseextensions_v1beta_function_min_instances": "0", - "firebaseextensions_v1beta_function_vpc_connector_egress_settings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", + "firebaseextensions.v1beta.function/location": "", + "firebaseextensions.v1beta.function/maxInstances": "3000", + "firebaseextensions.v1beta.function/minInstances": "0", + "firebaseextensions.v1beta.function/vpcConnectorEgressSettings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", }, "allowed_event_types": ["firebase.extensions.storage-resize-images.v1.onCompletion"], "eventarc_channel": "projects/my-project-name/locations//channels/firebase", diff --git a/sdk/python/pulumi_gcp/identityplatform/config.py b/sdk/python/pulumi_gcp/identityplatform/config.py index 622b95a374..21e1f2e9a6 100644 --- a/sdk/python/pulumi_gcp/identityplatform/config.py +++ b/sdk/python/pulumi_gcp/identityplatform/config.py @@ -505,7 +505,7 @@ def __init__(__self__, "phone_number": { "enabled": True, "test_phone_numbers": { - "_11231231234": "000000", + "+11231231234": "000000", }, }, }, @@ -645,7 +645,7 @@ def __init__(__self__, "phone_number": { "enabled": True, "test_phone_numbers": { - "_11231231234": "000000", + "+11231231234": "000000", }, }, }, diff --git a/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py b/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py index e521864955..4fd75043b0 100644 --- a/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py +++ b/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py @@ -755,7 +755,7 @@ def __init__(__self__, "negative_caching": True, "signed_request_mode": "DISABLED", "negative_caching_policy": { - "_500": "3000s", + "500": "3000s", }, }, "url_rewrite": { @@ -1188,7 +1188,7 @@ def __init__(__self__, "negative_caching": True, "signed_request_mode": "DISABLED", "negative_caching_policy": { - "_500": "3000s", + "500": "3000s", }, }, "url_rewrite": { diff --git a/sdk/python/pulumi_gcp/networkservices/http_route.py b/sdk/python/pulumi_gcp/networkservices/http_route.py index e1a2b4bdf1..ef4f62480d 100644 --- a/sdk/python/pulumi_gcp/networkservices/http_route.py +++ b/sdk/python/pulumi_gcp/networkservices/http_route.py @@ -594,7 +594,7 @@ def __init__(__self__, "type": "json", }, "add": { - "minor_version": "1", + "minor-version": "1", }, "removes": ["arg"], }, @@ -604,7 +604,7 @@ def __init__(__self__, "type": "json", }, "add": { - "minor_version": "1", + "minor-version": "1", }, "removes": ["removearg"], }, @@ -879,7 +879,7 @@ def __init__(__self__, "type": "json", }, "add": { - "minor_version": "1", + "minor-version": "1", }, "removes": ["arg"], }, @@ -889,7 +889,7 @@ def __init__(__self__, "type": "json", }, "add": { - "minor_version": "1", + "minor-version": "1", }, "removes": ["removearg"], }, diff --git a/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py b/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py index 5a79e1e50a..5f204f5261 100644 --- a/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py +++ b/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py @@ -498,12 +498,12 @@ def __init__(__self__, "all": False, "exclusion_labels": [{ "labels": { - "label_two": "value-two", + "label-two": "value-two", }, }], "inclusion_labels": [{ "labels": { - "label_one": "value-one", + "label-one": "value-one", }, }], "inventories": [{ @@ -648,12 +648,12 @@ def __init__(__self__, "all": False, "exclusion_labels": [{ "labels": { - "label_two": "value-two", + "label-two": "value-two", }, }], "inclusion_labels": [{ "labels": { - "label_one": "value-one", + "label-one": "value-one", }, }], "inventories": [{ diff --git a/sdk/python/pulumi_gcp/pubsub/subscription.py b/sdk/python/pulumi_gcp/pubsub/subscription.py index f8361afbd3..5e466ddb33 100644 --- a/sdk/python/pulumi_gcp/pubsub/subscription.py +++ b/sdk/python/pulumi_gcp/pubsub/subscription.py @@ -909,7 +909,7 @@ def __init__(__self__, push_config={ "push_endpoint": "https://example.com/push", "attributes": { - "x_goog_version": "v1", + "x-goog-version": "v1", }, }) ``` @@ -1373,7 +1373,7 @@ def __init__(__self__, push_config={ "push_endpoint": "https://example.com/push", "attributes": { - "x_goog_version": "v1", + "x-goog-version": "v1", }, }) ``` diff --git a/sdk/python/pulumi_gcp/workstations/workstation_config.py b/sdk/python/pulumi_gcp/workstations/workstation_config.py index 72e61347c6..b66faaee15 100644 --- a/sdk/python/pulumi_gcp/workstations/workstation_config.py +++ b/sdk/python/pulumi_gcp/workstations/workstation_config.py @@ -917,7 +917,7 @@ def __init__(__self__, tagKey1Name=tag_key1.name, tagValue1Name=tag_value1.name ).apply(lambda resolved_outputs: { - "": f"tagValues/{resolved_outputs['tagValue1Name']}", + f"tagKeys/{resolved_outputs['tagKey1Name']}": f"tagValues/{resolved_outputs['tagValue1Name']}", }) , }, @@ -963,8 +963,8 @@ def __init__(__self__, container={ "image": "intellij", "env": { - "name": "FOO", - "babe": "bar", + "NAME": "FOO", + "BABE": "bar", }, }) ``` @@ -1380,7 +1380,7 @@ def __init__(__self__, tagKey1Name=tag_key1.name, tagValue1Name=tag_value1.name ).apply(lambda resolved_outputs: { - "": f"tagValues/{resolved_outputs['tagValue1Name']}", + f"tagKeys/{resolved_outputs['tagKey1Name']}": f"tagValues/{resolved_outputs['tagValue1Name']}", }) , }, @@ -1426,8 +1426,8 @@ def __init__(__self__, container={ "image": "intellij", "env": { - "name": "FOO", - "babe": "bar", + "NAME": "FOO", + "BABE": "bar", }, }) ``` diff --git a/sdk/python/pyproject.toml b/sdk/python/pyproject.toml index 39a99215b7..736c5cfb8e 100644 --- a/sdk/python/pyproject.toml +++ b/sdk/python/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "pulumi_gcp" description = "A Pulumi package for creating and managing Google Cloud Platform resources." - dependencies = ["parver>=0.2.1", "pulumi>=3.136.0,<4.0.0", "semver>=2.8.1", "typing-extensions>=4.11; python_version < \"3.11\""] + dependencies = ["parver>=0.2.1", "pulumi>=3.134.1,<4.0.0", "semver>=2.8.1", "typing-extensions>=4.11; python_version < \"3.11\""] keywords = ["pulumi", "gcp"] readme = "README.md" requires-python = ">=3.8"