@huaweicloudos/pulumi
Version:
A Pulumi package for creating and managing Huaweicloud cloud resources.
296 lines • 11.2 kB
JavaScript
;
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
Object.defineProperty(exports, "__esModule", { value: true });
exports.Bucket = void 0;
const pulumi = require("@pulumi/pulumi");
const utilities = require("../utilities");
/**
* Provides an OBS bucket resource.
*
* ## Example Usage
* ### Private Bucket with Tags
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as huaweicloud from "@pulumi/huaweicloud";
*
* const bucket = new huaweicloud.Obs.Bucket("b", {
* acl: "private",
* bucket: "my-tf-test-bucket",
* tags: {
* Env: "Test",
* foo: "bar",
* },
* });
* ```
* ### Enable versioning
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as huaweicloud from "@pulumi/huaweicloud";
*
* const bucket = new huaweicloud.Obs.Bucket("b", {
* acl: "private",
* bucket: "my-tf-test-bucket",
* versioning: true,
* });
* ```
* ### Enable Logging
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as pulumi from "@huaweicloudos/pulumi";
*
* const config = new pulumi.Config();
* const agencyName = config.requireObject("agencyName");
* const logBucket = new huaweicloud.obs.Bucket("logBucket", {
* bucket: "my-tf-log-bucket",
* acl: "log-delivery-write",
* });
* const bucket = new huaweicloud.obs.Bucket("bucket", {
* bucket: "my-tf-test-bucket",
* acl: "private",
* loggings: [{
* targetBucket: logBucket.id,
* targetPrefix: "log/",
* agency: agencyName,
* }],
* });
* ```
* ### Static Website Hosting
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as huaweicloud from "@pulumi/huaweicloud";
*
* const bucket = new huaweicloud.Obs.Bucket("b", {
* acl: "public-read",
* bucket: "obs-website-test.hashicorp.com",
* website: {
* errorDocument: "error.html",
* indexDocument: "index.html",
* routingRules: `[{
* "Condition": {
* "KeyPrefixEquals": "docs/"
* },
* "Redirect": {
* "ReplaceKeyPrefixWith": "documents/"
* }
* }]
* `,
* },
* });
* ```
* ### Using CORS
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as huaweicloud from "@pulumi/huaweicloud";
*
* const bucket = new huaweicloud.Obs.Bucket("b", {
* acl: "public-read",
* bucket: "obs-website-test.hashicorp.com",
* corsRules: [{
* allowedHeaders: ["*"],
* allowedMethods: [
* "PUT",
* "POST",
* ],
* allowedOrigins: ["https://obs-website-test.hashicorp.com"],
* exposeHeaders: ["ETag"],
* maxAgeSeconds: 3000,
* }],
* });
* ```
* ### Using object lifecycle
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as huaweicloud from "@pulumi/huaweicloud";
*
* const bucket = new huaweicloud.Obs.Bucket("bucket", {
* acl: "private",
* bucket: "my-bucket",
* lifecycleRules: [
* {
* abortIncompleteMultipartUploads: [{
* days: 360,
* }],
* enabled: true,
* expirations: [{
* days: 365,
* }],
* name: "log",
* prefix: "log/",
* transitions: [
* {
* days: 60,
* storageClass: "WARM",
* },
* {
* days: 180,
* storageClass: "COLD",
* },
* ],
* },
* {
* enabled: true,
* name: "tmp",
* noncurrentVersionExpirations: [{
* days: 180,
* }],
* noncurrentVersionTransitions: [
* {
* days: 30,
* storageClass: "WARM",
* },
* {
* days: 60,
* storageClass: "COLD",
* },
* ],
* },
* ],
* versioning: true,
* });
* ```
* ### using encryption
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as huaweicloud from "@pulumi/huaweicloud";
*
* const bucket = new huaweicloud.Obs.Bucket("bucket", {
* acl: "private",
* bucket: "my-tf-encryption-bucket",
* encryption: true,
* storageClass: "STANDARD",
* tags: {
* foo: "bar",
* key: "value",
* },
* });
* ```
*
* ## Import
*
* OBS bucket can be imported using the `bucket`, e.g. bash
*
* ```sh
* $ pulumi import huaweicloud:Obs/bucket:Bucket bucket <bucket-name>
* ```
*
* OBS bucket with S3 format bucket policy can be imported using the `bucket` and "s3" by a slash, e.g. bash
*
* ```sh
* $ pulumi import huaweicloud:Obs/bucket:Bucket bucket_with_s3_policy <bucket-name>/s3
* ```
*
* Note that the imported state may not be identical to your resource definition, due to some attributes missing from the API response. The missing attributes include `acl` and `force_destroy`. It is generally recommended running `terraform plan` after importing an OBS bucket. Also you can ignore changes as below. hcl resource "huaweicloud_obs_bucket" "bucket" {
*
* ...
*
* lifecycle {
*
* ignore_changes = [
*
* acl, force_destroy,
*
* ]
*
* } }
*/
class Bucket extends pulumi.CustomResource {
/**
* Get an existing Bucket resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name, id, state, opts) {
return new Bucket(name, state, Object.assign(Object.assign({}, opts), { id: id }));
}
/**
* Returns true if the given object is an instance of Bucket. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj) {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Bucket.__pulumiType;
}
constructor(name, argsOrState, opts) {
let resourceInputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState;
resourceInputs["acl"] = state ? state.acl : undefined;
resourceInputs["bucket"] = state ? state.bucket : undefined;
resourceInputs["bucketDomainName"] = state ? state.bucketDomainName : undefined;
resourceInputs["bucketVersion"] = state ? state.bucketVersion : undefined;
resourceInputs["corsRules"] = state ? state.corsRules : undefined;
resourceInputs["encryption"] = state ? state.encryption : undefined;
resourceInputs["enterpriseProjectId"] = state ? state.enterpriseProjectId : undefined;
resourceInputs["forceDestroy"] = state ? state.forceDestroy : undefined;
resourceInputs["kmsKeyId"] = state ? state.kmsKeyId : undefined;
resourceInputs["kmsKeyProjectId"] = state ? state.kmsKeyProjectId : undefined;
resourceInputs["lifecycleRules"] = state ? state.lifecycleRules : undefined;
resourceInputs["loggings"] = state ? state.loggings : undefined;
resourceInputs["multiAz"] = state ? state.multiAz : undefined;
resourceInputs["parallelFs"] = state ? state.parallelFs : undefined;
resourceInputs["policy"] = state ? state.policy : undefined;
resourceInputs["policyFormat"] = state ? state.policyFormat : undefined;
resourceInputs["quota"] = state ? state.quota : undefined;
resourceInputs["region"] = state ? state.region : undefined;
resourceInputs["sseAlgorithm"] = state ? state.sseAlgorithm : undefined;
resourceInputs["storageClass"] = state ? state.storageClass : undefined;
resourceInputs["storageInfos"] = state ? state.storageInfos : undefined;
resourceInputs["tags"] = state ? state.tags : undefined;
resourceInputs["userDomainNames"] = state ? state.userDomainNames : undefined;
resourceInputs["versioning"] = state ? state.versioning : undefined;
resourceInputs["website"] = state ? state.website : undefined;
}
else {
const args = argsOrState;
if ((!args || args.bucket === undefined) && !opts.urn) {
throw new Error("Missing required property 'bucket'");
}
resourceInputs["acl"] = args ? args.acl : undefined;
resourceInputs["bucket"] = args ? args.bucket : undefined;
resourceInputs["corsRules"] = args ? args.corsRules : undefined;
resourceInputs["encryption"] = args ? args.encryption : undefined;
resourceInputs["enterpriseProjectId"] = args ? args.enterpriseProjectId : undefined;
resourceInputs["forceDestroy"] = args ? args.forceDestroy : undefined;
resourceInputs["kmsKeyId"] = args ? args.kmsKeyId : undefined;
resourceInputs["kmsKeyProjectId"] = args ? args.kmsKeyProjectId : undefined;
resourceInputs["lifecycleRules"] = args ? args.lifecycleRules : undefined;
resourceInputs["loggings"] = args ? args.loggings : undefined;
resourceInputs["multiAz"] = args ? args.multiAz : undefined;
resourceInputs["parallelFs"] = args ? args.parallelFs : undefined;
resourceInputs["policy"] = args ? args.policy : undefined;
resourceInputs["policyFormat"] = args ? args.policyFormat : undefined;
resourceInputs["quota"] = args ? args.quota : undefined;
resourceInputs["region"] = args ? args.region : undefined;
resourceInputs["sseAlgorithm"] = args ? args.sseAlgorithm : undefined;
resourceInputs["storageClass"] = args ? args.storageClass : undefined;
resourceInputs["tags"] = args ? args.tags : undefined;
resourceInputs["userDomainNames"] = args ? args.userDomainNames : undefined;
resourceInputs["versioning"] = args ? args.versioning : undefined;
resourceInputs["website"] = args ? args.website : undefined;
resourceInputs["bucketDomainName"] = undefined /*out*/;
resourceInputs["bucketVersion"] = undefined /*out*/;
resourceInputs["storageInfos"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(Bucket.__pulumiType, name, resourceInputs, opts);
}
}
exports.Bucket = Bucket;
/** @internal */
Bucket.__pulumiType = 'huaweicloud:Obs/bucket:Bucket';
//# sourceMappingURL=bucket.js.map