UNPKG

@pulumi/aws

Version:

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.

326 lines (325 loc) • 12.1 kB
import * as pulumi from "@pulumi/pulumi"; /** * The S3 object data source allows access to the metadata and * _optionally_ (see below) content of an object stored inside S3 bucket. * * > **Note:** The content of an object (`body` field) is available only for objects which have a human-readable `Content-Type`: * * * `text/*` * * `application/json` * * `application/ld+json` * * `application/x-httpd-php` * * `application/xhtml+xml` * * `application/x-csh` * * `application/x-sh` * * `application/xml` * * `application/atom+xml` * * `application/x-sql` * * `application/yaml` * * This is to prevent printing unsafe characters and potentially downloading large amount of data which would be thrown away in favor of metadata. * * ## Example Usage * * The following example retrieves a text object (which must have a `Content-Type` * value starting with `text/`) and uses it as the `userData` for an EC2 instance: * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const bootstrapScript = aws.s3.getObject({ * bucket: "ourcorp-deploy-config", * key: "ec2-bootstrap-script.sh", * }); * const example = new aws.ec2.Instance("example", { * instanceType: aws.ec2.InstanceType.T2_Micro, * ami: "ami-2757f631", * userData: bootstrapScript.then(bootstrapScript => bootstrapScript.body), * }); * ``` * * The following, more-complex example retrieves only the metadata for a zip * file stored in S3, which is then used to pass the most recent `versionId` * to AWS Lambda for use as a function implementation. More information about * Lambda functions is available in the documentation for * `aws.lambda.Function`. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const lambda = aws.s3.getObject({ * bucket: "ourcorp-lambda-functions", * key: "hello-world.zip", * }); * const testLambda = new aws.lambda.Function("test_lambda", { * s3Bucket: lambda.then(lambda => lambda.bucket), * s3Key: lambda.then(lambda => lambda.key), * s3ObjectVersion: lambda.then(lambda => lambda.versionId), * name: "lambda_function_name", * role: iamForLambda.arn, * handler: "exports.test", * }); * ``` */ export declare function getObject(args: GetObjectArgs, opts?: pulumi.InvokeOptions): Promise<GetObjectResult>; /** * A collection of arguments for invoking getObject. */ export interface GetObjectArgs { /** * Name of the bucket to read the object from. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified */ bucket: string; /** * To retrieve the object's checksum, this argument must be `ENABLED`. If you enable `checksumMode` and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `ENABLED` */ checksumMode?: string; /** * Full path to the object inside the bucket */ key: string; range?: string; /** * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. */ region?: string; /** * Map of tags assigned to the object. */ tags?: { [key: string]: string; }; /** * Specific version ID of the object returned (defaults to latest version) */ versionId?: string; } /** * A collection of values returned by getObject. */ export interface GetObjectResult { /** * ARN of the object. */ readonly arn: string; /** * Object data (see **limitations above** to understand cases in which this field is actually available) */ readonly body: string; readonly bucket: string; /** * (Optional) Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. */ readonly bucketKeyEnabled: boolean; /** * Caching behavior along the request/reply chain. */ readonly cacheControl: string; /** * The base64-encoded, 32-bit CRC32 checksum of the object. */ readonly checksumCrc32: string; /** * The base64-encoded, 32-bit CRC32C checksum of the object. */ readonly checksumCrc32c: string; /** * The base64-encoded, 64-bit CRC64NVME checksum of the object. */ readonly checksumCrc64nvme: string; readonly checksumMode?: string; /** * The base64-encoded, 160-bit SHA-1 digest of the object. */ readonly checksumSha1: string; /** * The base64-encoded, 256-bit SHA-256 digest of the object. */ readonly checksumSha256: string; /** * Presentational information for the object. */ readonly contentDisposition: string; /** * What content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. */ readonly contentEncoding: string; /** * Language the content is in. */ readonly contentLanguage: string; /** * Size of the body in bytes. */ readonly contentLength: number; /** * Standard MIME type describing the format of the object data. */ readonly contentType: string; /** * [ETag](https://en.wikipedia.org/wiki/HTTP_ETag) generated for the object (an MD5 sum of the object content in case it's not encrypted) */ readonly etag: string; /** * If the object expiration is configured (see [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)), the field includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded. */ readonly expiration: string; /** * Date and time at which the object is no longer cacheable. */ readonly expires: string; /** * The provider-assigned unique ID for this managed resource. */ readonly id: string; readonly key: string; /** * Last modified date of the object in RFC1123 format (e.g., `Mon, 02 Jan 2006 15:04:05 MST`) */ readonly lastModified: string; /** * Map of metadata stored with the object in S3. Keys are always returned in lowercase. */ readonly metadata: { [key: string]: string; }; /** * Indicates whether this object has an active [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds). This field is only returned if you have permission to view an object's legal hold status. */ readonly objectLockLegalHoldStatus: string; /** * Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) currently in place for this object. */ readonly objectLockMode: string; /** * The date and time when this object's object lock will expire. */ readonly objectLockRetainUntilDate: string; readonly range?: string; readonly region: string; /** * If the object is stored using server-side encryption (KMS or Amazon S3-managed encryption key), this field includes the chosen encryption and algorithm used. */ readonly serverSideEncryption: string; /** * If present, specifies the ID of the Key Management Service (KMS) master encryption key that was used for the object. */ readonly sseKmsKeyId: string; /** * [Storage class](http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) information of the object. Available for all objects except for `Standard` storage class objects. */ readonly storageClass: string; /** * Map of tags assigned to the object. */ readonly tags: { [key: string]: string; }; /** * Latest version ID of the object returned. */ readonly versionId: string; /** * If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. */ readonly websiteRedirectLocation: string; } /** * The S3 object data source allows access to the metadata and * _optionally_ (see below) content of an object stored inside S3 bucket. * * > **Note:** The content of an object (`body` field) is available only for objects which have a human-readable `Content-Type`: * * * `text/*` * * `application/json` * * `application/ld+json` * * `application/x-httpd-php` * * `application/xhtml+xml` * * `application/x-csh` * * `application/x-sh` * * `application/xml` * * `application/atom+xml` * * `application/x-sql` * * `application/yaml` * * This is to prevent printing unsafe characters and potentially downloading large amount of data which would be thrown away in favor of metadata. * * ## Example Usage * * The following example retrieves a text object (which must have a `Content-Type` * value starting with `text/`) and uses it as the `userData` for an EC2 instance: * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const bootstrapScript = aws.s3.getObject({ * bucket: "ourcorp-deploy-config", * key: "ec2-bootstrap-script.sh", * }); * const example = new aws.ec2.Instance("example", { * instanceType: aws.ec2.InstanceType.T2_Micro, * ami: "ami-2757f631", * userData: bootstrapScript.then(bootstrapScript => bootstrapScript.body), * }); * ``` * * The following, more-complex example retrieves only the metadata for a zip * file stored in S3, which is then used to pass the most recent `versionId` * to AWS Lambda for use as a function implementation. More information about * Lambda functions is available in the documentation for * `aws.lambda.Function`. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const lambda = aws.s3.getObject({ * bucket: "ourcorp-lambda-functions", * key: "hello-world.zip", * }); * const testLambda = new aws.lambda.Function("test_lambda", { * s3Bucket: lambda.then(lambda => lambda.bucket), * s3Key: lambda.then(lambda => lambda.key), * s3ObjectVersion: lambda.then(lambda => lambda.versionId), * name: "lambda_function_name", * role: iamForLambda.arn, * handler: "exports.test", * }); * ``` */ export declare function getObjectOutput(args: GetObjectOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetObjectResult>; /** * A collection of arguments for invoking getObject. */ export interface GetObjectOutputArgs { /** * Name of the bucket to read the object from. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified */ bucket: pulumi.Input<string>; /** * To retrieve the object's checksum, this argument must be `ENABLED`. If you enable `checksumMode` and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `ENABLED` */ checksumMode?: pulumi.Input<string>; /** * Full path to the object inside the bucket */ key: pulumi.Input<string>; range?: pulumi.Input<string>; /** * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. */ region?: pulumi.Input<string>; /** * Map of tags assigned to the object. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Specific version ID of the object returned (defaults to latest version) */ versionId?: pulumi.Input<string>; }