Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.pulumi.gcp.storage.kotlin.Bucket.kt Maven / Gradle / Ivy
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.gcp.storage.kotlin
import com.pulumi.core.Output
import com.pulumi.gcp.storage.kotlin.outputs.BucketAutoclass
import com.pulumi.gcp.storage.kotlin.outputs.BucketCor
import com.pulumi.gcp.storage.kotlin.outputs.BucketCustomPlacementConfig
import com.pulumi.gcp.storage.kotlin.outputs.BucketEncryption
import com.pulumi.gcp.storage.kotlin.outputs.BucketLifecycleRule
import com.pulumi.gcp.storage.kotlin.outputs.BucketLogging
import com.pulumi.gcp.storage.kotlin.outputs.BucketRetentionPolicy
import com.pulumi.gcp.storage.kotlin.outputs.BucketSoftDeletePolicy
import com.pulumi.gcp.storage.kotlin.outputs.BucketVersioning
import com.pulumi.gcp.storage.kotlin.outputs.BucketWebsite
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import com.pulumi.gcp.storage.kotlin.outputs.BucketAutoclass.Companion.toKotlin as bucketAutoclassToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketCor.Companion.toKotlin as bucketCorToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketCustomPlacementConfig.Companion.toKotlin as bucketCustomPlacementConfigToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketEncryption.Companion.toKotlin as bucketEncryptionToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketLifecycleRule.Companion.toKotlin as bucketLifecycleRuleToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketLogging.Companion.toKotlin as bucketLoggingToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketRetentionPolicy.Companion.toKotlin as bucketRetentionPolicyToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketSoftDeletePolicy.Companion.toKotlin as bucketSoftDeletePolicyToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketVersioning.Companion.toKotlin as bucketVersioningToKotlin
import com.pulumi.gcp.storage.kotlin.outputs.BucketWebsite.Companion.toKotlin as bucketWebsiteToKotlin
/**
* Builder for [Bucket].
*/
@PulumiTagMarker
public class BucketResourceBuilder internal constructor() {
public var name: String? = null
public var args: BucketArgs = BucketArgs()
public var opts: CustomResourceOptions = CustomResourceOptions()
/**
* @param name The _unique_ name of the resulting resource.
*/
public fun name(`value`: String) {
this.name = value
}
/**
* @param block The arguments to use to populate this resource's properties.
*/
public suspend fun args(block: suspend BucketArgsBuilder.() -> Unit) {
val builder = BucketArgsBuilder()
block(builder)
this.args = builder.build()
}
/**
* @param block A bag of options that control this resource's behavior.
*/
public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
}
internal fun build(): Bucket {
val builtJavaResource = com.pulumi.gcp.storage.Bucket(
this.name,
this.args.toJava(),
this.opts.toJava(),
)
return Bucket(builtJavaResource)
}
}
/**
* Creates a new bucket in Google cloud storage service (GCS).
* Once a bucket has been created, its location can't be changed.
* For more information see
* [the official documentation](https://cloud.google.com/storage/docs/overview)
* and
* [API](https://cloud.google.com/storage/docs/json_api/v1/buckets).
* **Note**: If the project id is not set on the resource or in the provider block it will be dynamically
* determined which will require enabling the compute api.
* ## Example Usage
* ### Creating A Private Bucket In Standard Storage, In The EU Region. Bucket Configured As Static Website And CORS Configurations
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* const static_site = new gcp.storage.Bucket("static-site", {
* name: "image-store.com",
* location: "EU",
* forceDestroy: true,
* uniformBucketLevelAccess: true,
* website: {
* mainPageSuffix: "index.html",
* notFoundPage: "404.html",
* },
* cors: [{
* origins: ["http://image-store.com"],
* methods: [
* "GET",
* "HEAD",
* "PUT",
* "POST",
* "DELETE",
* ],
* responseHeaders: ["*"],
* maxAgeSeconds: 3600,
* }],
* });
* ```
* ```python
* import pulumi
* import pulumi_gcp as gcp
* static_site = gcp.storage.Bucket("static-site",
* name="image-store.com",
* location="EU",
* force_destroy=True,
* uniform_bucket_level_access=True,
* website={
* "main_page_suffix": "index.html",
* "not_found_page": "404.html",
* },
* cors=[{
* "origins": ["http://image-store.com"],
* "methods": [
* "GET",
* "HEAD",
* "PUT",
* "POST",
* "DELETE",
* ],
* "response_headers": ["*"],
* "max_age_seconds": 3600,
* }])
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Gcp = Pulumi.Gcp;
* return await Deployment.RunAsync(() =>
* {
* var static_site = new Gcp.Storage.Bucket("static-site", new()
* {
* Name = "image-store.com",
* Location = "EU",
* ForceDestroy = true,
* UniformBucketLevelAccess = true,
* Website = new Gcp.Storage.Inputs.BucketWebsiteArgs
* {
* MainPageSuffix = "index.html",
* NotFoundPage = "404.html",
* },
* Cors = new[]
* {
* new Gcp.Storage.Inputs.BucketCorArgs
* {
* Origins = new[]
* {
* "http://image-store.com",
* },
* Methods = new[]
* {
* "GET",
* "HEAD",
* "PUT",
* "POST",
* "DELETE",
* },
* ResponseHeaders = new[]
* {
* "*",
* },
* MaxAgeSeconds = 3600,
* },
* },
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* _, err := storage.NewBucket(ctx, "static-site", &storage.BucketArgs{
* Name: pulumi.String("image-store.com"),
* Location: pulumi.String("EU"),
* ForceDestroy: pulumi.Bool(true),
* UniformBucketLevelAccess: pulumi.Bool(true),
* Website: &storage.BucketWebsiteArgs{
* MainPageSuffix: pulumi.String("index.html"),
* NotFoundPage: pulumi.String("404.html"),
* },
* Cors: storage.BucketCorArray{
* &storage.BucketCorArgs{
* Origins: pulumi.StringArray{
* pulumi.String("http://image-store.com"),
* },
* Methods: pulumi.StringArray{
* pulumi.String("GET"),
* pulumi.String("HEAD"),
* pulumi.String("PUT"),
* pulumi.String("POST"),
* pulumi.String("DELETE"),
* },
* ResponseHeaders: pulumi.StringArray{
* pulumi.String("*"),
* },
* MaxAgeSeconds: pulumi.Int(3600),
* },
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.gcp.storage.Bucket;
* import com.pulumi.gcp.storage.BucketArgs;
* import com.pulumi.gcp.storage.inputs.BucketWebsiteArgs;
* import com.pulumi.gcp.storage.inputs.BucketCorArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var static_site = new Bucket("static-site", BucketArgs.builder()
* .name("image-store.com")
* .location("EU")
* .forceDestroy(true)
* .uniformBucketLevelAccess(true)
* .website(BucketWebsiteArgs.builder()
* .mainPageSuffix("index.html")
* .notFoundPage("404.html")
* .build())
* .cors(BucketCorArgs.builder()
* .origins("http://image-store.com")
* .methods(
* "GET",
* "HEAD",
* "PUT",
* "POST",
* "DELETE")
* .responseHeaders("*")
* .maxAgeSeconds(3600)
* .build())
* .build());
* }
* }
* ```
* ```yaml
* resources:
* static-site:
* type: gcp:storage:Bucket
* properties:
* name: image-store.com
* location: EU
* forceDestroy: true
* uniformBucketLevelAccess: true
* website:
* mainPageSuffix: index.html
* notFoundPage: 404.html
* cors:
* - origins:
* - http://image-store.com
* methods:
* - GET
* - HEAD
* - PUT
* - POST
* - DELETE
* responseHeaders:
* - '*'
* maxAgeSeconds: 3600
* ```
*
* ### Life Cycle Settings For Storage Bucket Objects
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* const auto_expire = new gcp.storage.Bucket("auto-expire", {
* name: "auto-expiring-bucket",
* location: "US",
* forceDestroy: true,
* lifecycleRules: [
* {
* condition: {
* age: 3,
* },
* action: {
* type: "Delete",
* },
* },
* {
* condition: {
* age: 1,
* },
* action: {
* type: "AbortIncompleteMultipartUpload",
* },
* },
* ],
* });
* ```
* ```python
* import pulumi
* import pulumi_gcp as gcp
* auto_expire = gcp.storage.Bucket("auto-expire",
* name="auto-expiring-bucket",
* location="US",
* force_destroy=True,
* lifecycle_rules=[
* {
* "condition": {
* "age": 3,
* },
* "action": {
* "type": "Delete",
* },
* },
* {
* "condition": {
* "age": 1,
* },
* "action": {
* "type": "AbortIncompleteMultipartUpload",
* },
* },
* ])
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Gcp = Pulumi.Gcp;
* return await Deployment.RunAsync(() =>
* {
* var auto_expire = new Gcp.Storage.Bucket("auto-expire", new()
* {
* Name = "auto-expiring-bucket",
* Location = "US",
* ForceDestroy = true,
* LifecycleRules = new[]
* {
* new Gcp.Storage.Inputs.BucketLifecycleRuleArgs
* {
* Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs
* {
* Age = 3,
* },
* Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs
* {
* Type = "Delete",
* },
* },
* new Gcp.Storage.Inputs.BucketLifecycleRuleArgs
* {
* Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs
* {
* Age = 1,
* },
* Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs
* {
* Type = "AbortIncompleteMultipartUpload",
* },
* },
* },
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* _, err := storage.NewBucket(ctx, "auto-expire", &storage.BucketArgs{
* Name: pulumi.String("auto-expiring-bucket"),
* Location: pulumi.String("US"),
* ForceDestroy: pulumi.Bool(true),
* LifecycleRules: storage.BucketLifecycleRuleArray{
* &storage.BucketLifecycleRuleArgs{
* Condition: &storage.BucketLifecycleRuleConditionArgs{
* Age: pulumi.Int(3),
* },
* Action: &storage.BucketLifecycleRuleActionArgs{
* Type: pulumi.String("Delete"),
* },
* },
* &storage.BucketLifecycleRuleArgs{
* Condition: &storage.BucketLifecycleRuleConditionArgs{
* Age: pulumi.Int(1),
* },
* Action: &storage.BucketLifecycleRuleActionArgs{
* Type: pulumi.String("AbortIncompleteMultipartUpload"),
* },
* },
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.gcp.storage.Bucket;
* import com.pulumi.gcp.storage.BucketArgs;
* import com.pulumi.gcp.storage.inputs.BucketLifecycleRuleArgs;
* import com.pulumi.gcp.storage.inputs.BucketLifecycleRuleConditionArgs;
* import com.pulumi.gcp.storage.inputs.BucketLifecycleRuleActionArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var auto_expire = new Bucket("auto-expire", BucketArgs.builder()
* .name("auto-expiring-bucket")
* .location("US")
* .forceDestroy(true)
* .lifecycleRules(
* BucketLifecycleRuleArgs.builder()
* .condition(BucketLifecycleRuleConditionArgs.builder()
* .age(3)
* .build())
* .action(BucketLifecycleRuleActionArgs.builder()
* .type("Delete")
* .build())
* .build(),
* BucketLifecycleRuleArgs.builder()
* .condition(BucketLifecycleRuleConditionArgs.builder()
* .age(1)
* .build())
* .action(BucketLifecycleRuleActionArgs.builder()
* .type("AbortIncompleteMultipartUpload")
* .build())
* .build())
* .build());
* }
* }
* ```
* ```yaml
* resources:
* auto-expire:
* type: gcp:storage:Bucket
* properties:
* name: auto-expiring-bucket
* location: US
* forceDestroy: true
* lifecycleRules:
* - condition:
* age: 3
* action:
* type: Delete
* - condition:
* age: 1
* action:
* type: AbortIncompleteMultipartUpload
* ```
*
* ### Life Cycle Settings For Storage Bucket Objects With `No_age` Enabled
* When creating a life cycle condition that does not also include an `age` field, a default `age` of 0 will be set. Set the `no_age` flag to `true` to prevent this and avoid any potentially unintended interactions.
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* const no_age_enabled = new gcp.storage.Bucket("no-age-enabled", {
* name: "no-age-enabled-bucket",
* location: "US",
* forceDestroy: true,
* lifecycleRules: [{
* action: {
* type: "Delete",
* },
* condition: {
* daysSinceNoncurrentTime: 3,
* noAge: true,
* },
* }],
* });
* ```
* ```python
* import pulumi
* import pulumi_gcp as gcp
* no_age_enabled = gcp.storage.Bucket("no-age-enabled",
* name="no-age-enabled-bucket",
* location="US",
* force_destroy=True,
* lifecycle_rules=[{
* "action": {
* "type": "Delete",
* },
* "condition": {
* "days_since_noncurrent_time": 3,
* "no_age": True,
* },
* }])
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Gcp = Pulumi.Gcp;
* return await Deployment.RunAsync(() =>
* {
* var no_age_enabled = new Gcp.Storage.Bucket("no-age-enabled", new()
* {
* Name = "no-age-enabled-bucket",
* Location = "US",
* ForceDestroy = true,
* LifecycleRules = new[]
* {
* new Gcp.Storage.Inputs.BucketLifecycleRuleArgs
* {
* Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs
* {
* Type = "Delete",
* },
* Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs
* {
* DaysSinceNoncurrentTime = 3,
* NoAge = true,
* },
* },
* },
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* _, err := storage.NewBucket(ctx, "no-age-enabled", &storage.BucketArgs{
* Name: pulumi.String("no-age-enabled-bucket"),
* Location: pulumi.String("US"),
* ForceDestroy: pulumi.Bool(true),
* LifecycleRules: storage.BucketLifecycleRuleArray{
* &storage.BucketLifecycleRuleArgs{
* Action: &storage.BucketLifecycleRuleActionArgs{
* Type: pulumi.String("Delete"),
* },
* Condition: &storage.BucketLifecycleRuleConditionArgs{
* DaysSinceNoncurrentTime: pulumi.Int(3),
* NoAge: pulumi.Bool(true),
* },
* },
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.gcp.storage.Bucket;
* import com.pulumi.gcp.storage.BucketArgs;
* import com.pulumi.gcp.storage.inputs.BucketLifecycleRuleArgs;
* import com.pulumi.gcp.storage.inputs.BucketLifecycleRuleActionArgs;
* import com.pulumi.gcp.storage.inputs.BucketLifecycleRuleConditionArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var no_age_enabled = new Bucket("no-age-enabled", BucketArgs.builder()
* .name("no-age-enabled-bucket")
* .location("US")
* .forceDestroy(true)
* .lifecycleRules(BucketLifecycleRuleArgs.builder()
* .action(BucketLifecycleRuleActionArgs.builder()
* .type("Delete")
* .build())
* .condition(BucketLifecycleRuleConditionArgs.builder()
* .daysSinceNoncurrentTime(3)
* .noAge(true)
* .build())
* .build())
* .build());
* }
* }
* ```
* ```yaml
* resources:
* no-age-enabled:
* type: gcp:storage:Bucket
* properties:
* name: no-age-enabled-bucket
* location: US
* forceDestroy: true
* lifecycleRules:
* - action:
* type: Delete
* condition:
* daysSinceNoncurrentTime: 3
* noAge: true
* ```
*
* ### Enabling Public Access Prevention
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* const auto_expire = new gcp.storage.Bucket("auto-expire", {
* name: "no-public-access-bucket",
* location: "US",
* forceDestroy: true,
* publicAccessPrevention: "enforced",
* });
* ```
* ```python
* import pulumi
* import pulumi_gcp as gcp
* auto_expire = gcp.storage.Bucket("auto-expire",
* name="no-public-access-bucket",
* location="US",
* force_destroy=True,
* public_access_prevention="enforced")
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Gcp = Pulumi.Gcp;
* return await Deployment.RunAsync(() =>
* {
* var auto_expire = new Gcp.Storage.Bucket("auto-expire", new()
* {
* Name = "no-public-access-bucket",
* Location = "US",
* ForceDestroy = true,
* PublicAccessPrevention = "enforced",
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* _, err := storage.NewBucket(ctx, "auto-expire", &storage.BucketArgs{
* Name: pulumi.String("no-public-access-bucket"),
* Location: pulumi.String("US"),
* ForceDestroy: pulumi.Bool(true),
* PublicAccessPrevention: pulumi.String("enforced"),
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.gcp.storage.Bucket;
* import com.pulumi.gcp.storage.BucketArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var auto_expire = new Bucket("auto-expire", BucketArgs.builder()
* .name("no-public-access-bucket")
* .location("US")
* .forceDestroy(true)
* .publicAccessPrevention("enforced")
* .build());
* }
* }
* ```
* ```yaml
* resources:
* auto-expire:
* type: gcp:storage:Bucket
* properties:
* name: no-public-access-bucket
* location: US
* forceDestroy: true
* publicAccessPrevention: enforced
* ```
*
* ## Import
* Storage buckets can be imported using the `name` or `project/name`. If the project is not
* passed to the import command it will be inferred from the provider block or environment variables.
* If it cannot be inferred it will be queried from the Compute API (this will fail if the API is
* not enabled).
* * `{{project_id}}/{{bucket}}`
* * `{{bucket}}`
* When using the `pulumi import` command, Storage buckets can be imported using one of the formats above. For example:
* ```sh
* $ pulumi import gcp:storage/bucket:Bucket default {{bucket}}
* ```
* ```sh
* $ pulumi import gcp:storage/bucket:Bucket default {{project_id}}/{{bucket}}
* ```
* `false` in state. If you've set it to `true` in config, run `pulumi up` to
* update the value set in state. If you delete this resource before updating the
* value, objects in the bucket will not be destroyed.
*/
public class Bucket internal constructor(
override val javaResource: com.pulumi.gcp.storage.Bucket,
) : KotlinCustomResource(javaResource, BucketMapper) {
/**
* The bucket's [Autoclass](https://cloud.google.com/storage/docs/autoclass) configuration. Structure is documented below.
*/
public val autoclass: Output?
get() = javaResource.autoclass().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
bucketAutoclassToKotlin(args0)
})
}).orElse(null)
})
/**
* The bucket's [Cross-Origin Resource Sharing (CORS)](https://www.w3.org/TR/cors/) configuration. Multiple blocks of this type are permitted. Structure is documented below.
*/
public val cors: Output>?
get() = javaResource.cors().applyValue({ args0 ->
args0.map({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> bucketCorToKotlin(args0) })
})
}).orElse(null)
})
/**
* The bucket's custom location configuration, which specifies the individual regions that comprise a dual-region bucket. If the bucket is designated a single or multi-region, the parameters are empty. Structure is documented below.
*/
public val customPlacementConfig: Output?
get() = javaResource.customPlacementConfig().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> bucketCustomPlacementConfigToKotlin(args0) })
}).orElse(null)
})
/**
* Whether or not to automatically apply an eventBasedHold to new objects added to the bucket.
*/
public val defaultEventBasedHold: Output?
get() = javaResource.defaultEventBasedHold().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
public val effectiveLabels: Output>
get() = javaResource.effectiveLabels().applyValue({ args0 ->
args0.map({ args0 ->
args0.key.to(args0.value)
}).toMap()
})
/**
* Enables [object retention](https://cloud.google.com/storage/docs/object-lock) on a storage bucket.
*/
public val enableObjectRetention: Output?
get() = javaResource.enableObjectRetention().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The bucket's encryption configuration. Structure is documented below.
*/
public val encryption: Output?
get() = javaResource.encryption().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
bucketEncryptionToKotlin(args0)
})
}).orElse(null)
})
/**
* When deleting a bucket, this
* boolean option will delete all contained objects. If you try to delete a
* bucket that contains objects, the provider will fail that run.
*/
public val forceDestroy: Output?
get() = javaResource.forceDestroy().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* A map of key/value label pairs to assign to the bucket.
*/
public val labels: Output>?
get() = javaResource.labels().applyValue({ args0 ->
args0.map({ args0 ->
args0.map({ args0 ->
args0.key.to(args0.value)
}).toMap()
}).orElse(null)
})
/**
* The bucket's [Lifecycle Rules](https://cloud.google.com/storage/docs/lifecycle#configuration) configuration. Multiple blocks of this type are permitted. Structure is documented below.
*/
public val lifecycleRules: Output>?
get() = javaResource.lifecycleRules().applyValue({ args0 ->
args0.map({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
bucketLifecycleRuleToKotlin(args0)
})
})
}).orElse(null)
})
/**
* The [GCS location](https://cloud.google.com/storage/docs/bucket-locations).
* - - -
*/
public val location: Output
get() = javaResource.location().applyValue({ args0 -> args0 })
/**
* The bucket's [Access & Storage Logs](https://cloud.google.com/storage/docs/access-logs) configuration. Structure is documented below.
*/
public val logging: Output?
get() = javaResource.logging().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
bucketLoggingToKotlin(args0)
})
}).orElse(null)
})
/**
* The name of the bucket.
*/
public val name: Output
get() = javaResource.name().applyValue({ args0 -> args0 })
/**
* The ID of the project in which the resource belongs. If it
* is not provided, the provider project is used.
*/
public val project: Output
get() = javaResource.project().applyValue({ args0 -> args0 })
/**
* The project number of the project in which the resource belongs.
*/
public val projectNumber: Output
get() = javaResource.projectNumber().applyValue({ args0 -> args0 })
/**
* Prevents public access to a bucket. Acceptable values are "inherited" or "enforced". If "inherited", the bucket uses [public access prevention](https://cloud.google.com/storage/docs/public-access-prevention). only if the bucket is subject to the public access prevention organization policy constraint. Defaults to "inherited".
*/
public val publicAccessPrevention: Output
get() = javaResource.publicAccessPrevention().applyValue({ args0 -> args0 })
/**
* The combination of labels configured directly on the resource and default labels configured on the provider.
*/
public val pulumiLabels: Output>
get() = javaResource.pulumiLabels().applyValue({ args0 ->
args0.map({ args0 ->
args0.key.to(args0.value)
}).toMap()
})
/**
* Enables [Requester Pays](https://cloud.google.com/storage/docs/requester-pays) on a storage bucket.
*/
public val requesterPays: Output?
get() = javaResource.requesterPays().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Configuration of the bucket's data retention policy for how long objects in the bucket should be retained. Structure is documented below.
*/
public val retentionPolicy: Output?
get() = javaResource.retentionPolicy().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> bucketRetentionPolicyToKotlin(args0) })
}).orElse(null)
})
/**
* The recovery point objective for cross-region replication of the bucket. Applicable only for dual and multi-region buckets. `"DEFAULT"` sets default replication. `"ASYNC_TURBO"` value enables turbo replication, valid for dual-region buckets only. See [Turbo Replication](https://cloud.google.com/storage/docs/managing-turbo-replication) for more information. If rpo is not specified at bucket creation, it defaults to `"DEFAULT"` for dual and multi-region buckets. **NOTE** If used with single-region bucket, It will throw an error.
*/
public val rpo: Output
get() = javaResource.rpo().applyValue({ args0 -> args0 })
/**
* The URI of the created resource.
*/
public val selfLink: Output
get() = javaResource.selfLink().applyValue({ args0 -> args0 })
/**
* The bucket's soft delete policy, which defines the period of time that soft-deleted objects will be retained, and cannot
* be permanently deleted. If it is not provided, by default Google Cloud Storage sets this to default soft delete policy
*/
public val softDeletePolicy: Output
get() = javaResource.softDeletePolicy().applyValue({ args0 ->
args0.let({ args0 ->
bucketSoftDeletePolicyToKotlin(args0)
})
})
/**
* The [Storage Class](https://cloud.google.com/storage/docs/storage-classes) of the new bucket. Supported values include: `STANDARD`, `MULTI_REGIONAL`, `REGIONAL`, `NEARLINE`, `COLDLINE`, `ARCHIVE`.
*/
public val storageClass: Output?
get() = javaResource.storageClass().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Enables [Uniform bucket-level access](https://cloud.google.com/storage/docs/uniform-bucket-level-access) access to a bucket.
*/
public val uniformBucketLevelAccess: Output
get() = javaResource.uniformBucketLevelAccess().applyValue({ args0 -> args0 })
/**
* The base URL of the bucket, in the format `gs://`.
*/
public val url: Output
get() = javaResource.url().applyValue({ args0 -> args0 })
/**
* The bucket's [Versioning](https://cloud.google.com/storage/docs/object-versioning) configuration. Structure is documented below.
*/
public val versioning: Output
get() = javaResource.versioning().applyValue({ args0 ->
args0.let({ args0 ->
bucketVersioningToKotlin(args0)
})
})
/**
* Configuration if the bucket acts as a website. Structure is documented below.
*/
public val website: Output
get() = javaResource.website().applyValue({ args0 ->
args0.let({ args0 ->
bucketWebsiteToKotlin(args0)
})
})
}
public object BucketMapper : ResourceMapper {
override fun supportsMappingOfType(javaResource: Resource): Boolean =
com.pulumi.gcp.storage.Bucket::class == javaResource::class
override fun map(javaResource: Resource): Bucket = Bucket(
javaResource as
com.pulumi.gcp.storage.Bucket,
)
}
/**
* @see [Bucket].
* @param name The _unique_ name of the resulting resource.
* @param block Builder for [Bucket].
*/
public suspend fun bucket(name: String, block: suspend BucketResourceBuilder.() -> Unit): Bucket {
val builder = BucketResourceBuilder()
builder.name(name)
block(builder)
return builder.build()
}
/**
* @see [Bucket].
* @param name The _unique_ name of the resulting resource.
*/
public fun bucket(name: String): Bucket {
val builder = BucketResourceBuilder()
builder.name(name)
return builder.build()
}