UNPKG

@pulumi/gcp

Version:

A Pulumi package for creating and managing Google Cloud Platform resources.

198 lines 7.72 kB
"use strict"; // *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** Object.defineProperty(exports, "__esModule", { value: true }); exports.TransferJob = void 0; const pulumi = require("@pulumi/pulumi"); const utilities = require("../utilities"); /** * Creates a new Transfer Job in Google Cloud Storage Transfer. * * To get more information about Google Cloud Storage Transfer, see: * * * [Overview](https://cloud.google.com/storage-transfer/docs/overview) * * [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/transferJobs) * * How-to Guides * * [Configuring Access to Data Sources and Sinks](https://cloud.google.com/storage-transfer/docs/configure-access) * * ## Example Usage * * Example creating a nightly Transfer Job from an AWS S3 Bucket to a GCS bucket. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const _default = gcp.storage.getTransferProjectServiceAccount({ * project: project, * }); * const s3_backup_bucket = new gcp.storage.Bucket("s3-backup-bucket", { * name: `${awsS3Bucket}-backup`, * storageClass: "NEARLINE", * project: project, * location: "US", * }); * const s3_backup_bucketBucketIAMMember = new gcp.storage.BucketIAMMember("s3-backup-bucket", { * bucket: s3_backup_bucket.name, * role: "roles/storage.admin", * member: _default.then(_default => `serviceAccount:${_default.email}`), * }, { * dependsOn: [s3_backup_bucket], * }); * const topic = new gcp.pubsub.Topic("topic", {name: pubsubTopicName}); * const notificationConfig = new gcp.pubsub.TopicIAMMember("notification_config", { * topic: topic.id, * role: "roles/pubsub.publisher", * member: _default.then(_default => `serviceAccount:${_default.email}`), * }); * const s3_bucket_nightly_backup = new gcp.storage.TransferJob("s3-bucket-nightly-backup", { * description: "Nightly backup of S3 bucket", * project: project, * transferSpec: { * objectConditions: { * maxTimeElapsedSinceLastModification: "600s", * excludePrefixes: ["requests.gz"], * }, * transferOptions: { * deleteObjectsUniqueInSink: false, * }, * awsS3DataSource: { * bucketName: awsS3Bucket, * awsAccessKey: { * accessKeyId: awsAccessKey, * secretAccessKey: awsSecretKey, * }, * }, * gcsDataSink: { * bucketName: s3_backup_bucket.name, * path: "foo/bar/", * }, * }, * schedule: { * scheduleStartDate: { * year: 2018, * month: 10, * day: 1, * }, * scheduleEndDate: { * year: 2019, * month: 1, * day: 15, * }, * startTimeOfDay: { * hours: 23, * minutes: 30, * seconds: 0, * nanos: 0, * }, * repeatInterval: "604800s", * }, * notificationConfig: { * pubsubTopic: topic.id, * eventTypes: [ * "TRANSFER_OPERATION_SUCCESS", * "TRANSFER_OPERATION_FAILED", * ], * payloadFormat: "JSON", * }, * loggingConfig: { * logActions: [ * "COPY", * "DELETE", * ], * logActionStates: [ * "SUCCEEDED", * "FAILED", * ], * }, * }, { * dependsOn: [ * s3_backup_bucketBucketIAMMember, * notificationConfig, * ], * }); * ``` * * ## Import * * Storage Transfer Jobs can be imported using the Transfer Job's `project` and `name` (without the `transferJob/` prefix), e.g. * * * `{{project_id}}/{{name}}`, where `name` is a numeric value. * * When using the `pulumi import` command, Storage Transfer Jobs can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:storage/transferJob:TransferJob default {{project_id}}/123456789 * ``` */ class TransferJob extends pulumi.CustomResource { /** * Get an existing TransferJob 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 TransferJob(name, state, { ...opts, id: id }); } /** * Returns true if the given object is an instance of TransferJob. 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'] === TransferJob.__pulumiType; } constructor(name, argsOrState, opts) { let resourceInputs = {}; opts = opts || {}; if (opts.id) { const state = argsOrState; resourceInputs["creationTime"] = state?.creationTime; resourceInputs["deletionTime"] = state?.deletionTime; resourceInputs["description"] = state?.description; resourceInputs["eventStream"] = state?.eventStream; resourceInputs["lastModificationTime"] = state?.lastModificationTime; resourceInputs["loggingConfig"] = state?.loggingConfig; resourceInputs["name"] = state?.name; resourceInputs["notificationConfig"] = state?.notificationConfig; resourceInputs["project"] = state?.project; resourceInputs["replicationSpec"] = state?.replicationSpec; resourceInputs["schedule"] = state?.schedule; resourceInputs["serviceAccount"] = state?.serviceAccount; resourceInputs["status"] = state?.status; resourceInputs["transferSpec"] = state?.transferSpec; } else { const args = argsOrState; if (args?.description === undefined && !opts.urn) { throw new Error("Missing required property 'description'"); } resourceInputs["description"] = args?.description; resourceInputs["eventStream"] = args?.eventStream; resourceInputs["loggingConfig"] = args?.loggingConfig; resourceInputs["name"] = args?.name; resourceInputs["notificationConfig"] = args?.notificationConfig; resourceInputs["project"] = args?.project; resourceInputs["replicationSpec"] = args?.replicationSpec; resourceInputs["schedule"] = args?.schedule; resourceInputs["serviceAccount"] = args?.serviceAccount; resourceInputs["status"] = args?.status; resourceInputs["transferSpec"] = args?.transferSpec; resourceInputs["creationTime"] = undefined /*out*/; resourceInputs["deletionTime"] = undefined /*out*/; resourceInputs["lastModificationTime"] = undefined /*out*/; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); super(TransferJob.__pulumiType, name, resourceInputs, opts); } } exports.TransferJob = TransferJob; /** @internal */ TransferJob.__pulumiType = 'gcp:storage/transferJob:TransferJob'; //# sourceMappingURL=transferJob.js.map