Package com.pulumi.aws.s3
Class BucketObjectv2
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.s3.BucketObjectv2
-
public class BucketObjectv2 extends com.pulumi.resources.CustomResourceProvides an S3 object resource. ## Example Usage ### Uploading a file to a bucket
### Encrypting with KMS Keypackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.s3.BucketObjectv2; import com.pulumi.aws.s3.BucketObjectv2Args; import com.pulumi.std.StdFunctions; import com.pulumi.std.inputs.Filemd5Args; import com.pulumi.asset.FileAsset; import java.util.ArrayList; import java.util.Arrays; 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 object = new BucketObjectv2("object", BucketObjectv2Args.builder() .bucket("your_bucket_name") .key("new_object_key") .source(new FileAsset("path/to/file")) .etag(StdFunctions.filemd5(Filemd5Args.builder() .input("path/to/file") .build()).result()) .build()); } }
### Server Side Encryption with S3 Default Master Keypackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.kms.Key; import com.pulumi.aws.kms.KeyArgs; import com.pulumi.aws.s3.Bucket; import com.pulumi.aws.s3.BucketArgs; import com.pulumi.aws.s3.BucketAcl; import com.pulumi.aws.s3.BucketAclArgs; import com.pulumi.aws.s3.BucketObjectv2; import com.pulumi.aws.s3.BucketObjectv2Args; import com.pulumi.asset.FileAsset; import java.util.ArrayList; import java.util.Arrays; 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 examplekms = new Key("examplekms", KeyArgs.builder() .description("KMS key 1") .deletionWindowInDays(7) .build()); var examplebucket = new Bucket("examplebucket", BucketArgs.builder() .bucket("examplebuckettftest") .build()); var example = new BucketAcl("example", BucketAclArgs.builder() .bucket(examplebucket.id()) .acl("private") .build()); var exampleBucketObjectv2 = new BucketObjectv2("exampleBucketObjectv2", BucketObjectv2Args.builder() .key("someobject") .bucket(examplebucket.id()) .source(new FileAsset("index.html")) .kmsKeyId(examplekms.arn()) .build()); } }
### Server Side Encryption with AWS-Managed Keypackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.s3.Bucket; import com.pulumi.aws.s3.BucketArgs; import com.pulumi.aws.s3.BucketAcl; import com.pulumi.aws.s3.BucketAclArgs; import com.pulumi.aws.s3.BucketObjectv2; import com.pulumi.aws.s3.BucketObjectv2Args; import com.pulumi.asset.FileAsset; import java.util.ArrayList; import java.util.Arrays; 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 examplebucket = new Bucket("examplebucket", BucketArgs.builder() .bucket("examplebuckettftest") .build()); var example = new BucketAcl("example", BucketAclArgs.builder() .bucket(examplebucket.id()) .acl("private") .build()); var exampleBucketObjectv2 = new BucketObjectv2("exampleBucketObjectv2", BucketObjectv2Args.builder() .key("someobject") .bucket(examplebucket.id()) .source(new FileAsset("index.html")) .serverSideEncryption("aws:kms") .build()); } }
### S3 Object Lockpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.s3.Bucket; import com.pulumi.aws.s3.BucketArgs; import com.pulumi.aws.s3.BucketAcl; import com.pulumi.aws.s3.BucketAclArgs; import com.pulumi.aws.s3.BucketObjectv2; import com.pulumi.aws.s3.BucketObjectv2Args; import com.pulumi.asset.FileAsset; import java.util.ArrayList; import java.util.Arrays; 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 examplebucket = new Bucket("examplebucket", BucketArgs.builder() .bucket("examplebuckettftest") .build()); var example = new BucketAcl("example", BucketAclArgs.builder() .bucket(examplebucket.id()) .acl("private") .build()); var exampleBucketObjectv2 = new BucketObjectv2("exampleBucketObjectv2", BucketObjectv2Args.builder() .key("someobject") .bucket(examplebucket.id()) .source(new FileAsset("index.html")) .serverSideEncryption("AES256") .build()); } }
### Ignoring Provider `defaultTags` S3 objects support a [maximum of 10 tags](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html). If the resource's own `tags` and the provider-level `defaultTags` would together lead to more than 10 tags on an S3 object, use the `overrideProvider` configuration block to suppress any provider-level `defaultTags`. > S3 objects stored in Amazon S3 Express directory buckets do not support tags, so any provider-level `defaultTags` must be suppressed.package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.s3.Bucket; import com.pulumi.aws.s3.BucketArgs; import com.pulumi.aws.s3.BucketAcl; import com.pulumi.aws.s3.BucketAclArgs; import com.pulumi.aws.s3.BucketVersioning; import com.pulumi.aws.s3.BucketVersioningArgs; import com.pulumi.aws.s3.inputs.BucketVersioningVersioningConfigurationArgs; import com.pulumi.aws.s3.BucketObjectv2; import com.pulumi.aws.s3.BucketObjectv2Args; import com.pulumi.asset.FileAsset; import com.pulumi.resources.CustomResourceOptions; import java.util.ArrayList; import java.util.Arrays; 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 examplebucket = new Bucket("examplebucket", BucketArgs.builder() .bucket("examplebuckettftest") .objectLockEnabled(true) .build()); var example = new BucketAcl("example", BucketAclArgs.builder() .bucket(examplebucket.id()) .acl("private") .build()); var exampleBucketVersioning = new BucketVersioning("exampleBucketVersioning", BucketVersioningArgs.builder() .versioningConfiguration(BucketVersioningVersioningConfigurationArgs.builder() .status("Enabled") .build()) .bucket(examplebucket.id()) .build()); var examplebucketObject = new BucketObjectv2("examplebucketObject", BucketObjectv2Args.builder() .key("someobject") .bucket(examplebucket.id()) .source(new FileAsset("important.txt")) .objectLockLegalHoldStatus("ON") .objectLockMode("GOVERNANCE") .objectLockRetainUntilDate("2021-12-31T23:59:60Z") .forceDestroy(true) .build(), CustomResourceOptions.builder() .dependsOn(exampleBucketVersioning) .build()); } }
## Import ### Identity Schema #### Required * `bucket` (String) S3 bucket name. * `key` (String) Object key. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Import using S3 URL syntax: **Using `pulumi import` to import** objects using the `id` or S3 URL. For example: Import using the `id`, which is the bucket name and the key together: ```sh $ pulumi import aws:s3/bucketObjectv2:BucketObjectv2 example some-bucket-name/some/key.txt ``` Import using S3 URL syntax: ```sh $ pulumi import aws:s3/bucketObjectv2:BucketObjectv2 example s3://some-bucket-name/some/key.txt ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.s3.Bucket; import com.pulumi.aws.s3.BucketArgs; import com.pulumi.aws.s3.BucketObjectv2; import com.pulumi.aws.s3.BucketObjectv2Args; import com.pulumi.aws.s3.inputs.BucketObjectv2OverrideProviderArgs; import com.pulumi.aws.s3.inputs.BucketObjectv2OverrideProviderDefaultTagsArgs; import com.pulumi.asset.FileAsset; import java.util.ArrayList; import java.util.Arrays; 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 examplebucket = new Bucket("examplebucket", BucketArgs.builder() .bucket("examplebuckettftest") .build()); var examplebucketObject = new BucketObjectv2("examplebucketObject", BucketObjectv2Args.builder() .overrideProvider(BucketObjectv2OverrideProviderArgs.builder() .defaultTags(BucketObjectv2OverrideProviderDefaultTagsArgs.builder() .tags(Map.ofEntries( )) .build()) .build()) .key("someobject") .bucket(examplebucket.id()) .source(new FileAsset("important.txt")) .tags(Map.of("Env", "test")) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description BucketObjectv2(java.lang.String name)BucketObjectv2(java.lang.String name, BucketObjectv2Args args)BucketObjectv2(java.lang.String name, BucketObjectv2Args args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>acl()com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<java.lang.String>bucket()com.pulumi.core.Output<java.lang.Boolean>bucketKeyEnabled()com.pulumi.core.Output<java.util.Optional<java.lang.String>>cacheControl()com.pulumi.core.Output<java.util.Optional<java.lang.String>>checksumAlgorithm()com.pulumi.core.Output<java.lang.String>checksumCrc32()com.pulumi.core.Output<java.lang.String>checksumCrc32c()com.pulumi.core.Output<java.lang.String>checksumCrc64nvme()com.pulumi.core.Output<java.lang.String>checksumSha1()com.pulumi.core.Output<java.lang.String>checksumSha256()com.pulumi.core.Output<java.util.Optional<java.lang.String>>content()com.pulumi.core.Output<java.util.Optional<java.lang.String>>contentBase64()com.pulumi.core.Output<java.util.Optional<java.lang.String>>contentDisposition()com.pulumi.core.Output<java.util.Optional<java.lang.String>>contentEncoding()com.pulumi.core.Output<java.util.Optional<java.lang.String>>contentLanguage()com.pulumi.core.Output<java.lang.String>contentType()com.pulumi.core.Output<java.lang.String>etag()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>forceDestroy()static BucketObjectv2get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, BucketObjectv2State state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.lang.String>key()com.pulumi.core.Output<java.lang.String>kmsKeyId()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>metadata()com.pulumi.core.Output<java.util.Optional<java.lang.String>>objectLockLegalHoldStatus()com.pulumi.core.Output<java.util.Optional<java.lang.String>>objectLockMode()com.pulumi.core.Output<java.util.Optional<java.lang.String>>objectLockRetainUntilDate()com.pulumi.core.Output<java.util.Optional<BucketObjectv2OverrideProvider>>overrideProvider()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.lang.String>serverSideEncryption()com.pulumi.core.Output<java.util.Optional<com.pulumi.asset.AssetOrArchive>>source()com.pulumi.core.Output<java.util.Optional<java.lang.String>>sourceHash()com.pulumi.core.Output<java.lang.String>storageClass()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()com.pulumi.core.Output<java.lang.String>versionId()com.pulumi.core.Output<java.util.Optional<java.lang.String>>websiteRedirect()
-
-
-
Constructor Detail
-
BucketObjectv2
public BucketObjectv2(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
BucketObjectv2
public BucketObjectv2(java.lang.String name, BucketObjectv2Args args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
BucketObjectv2
public BucketObjectv2(java.lang.String name, BucketObjectv2Args args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
acl
public com.pulumi.core.Output<java.lang.String> acl()
- Returns:
- [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`.
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of the object.
-
bucket
public com.pulumi.core.Output<java.lang.String> bucket()
- Returns:
- Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified.
-
bucketKeyEnabled
public com.pulumi.core.Output<java.lang.Boolean> bucketKeyEnabled()
- Returns:
- Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS.
-
cacheControl
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> cacheControl()
- Returns:
- Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.
-
checksumAlgorithm
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> checksumAlgorithm()
- Returns:
- Algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `CRC64NVME`, `SHA1`, `SHA256`.
-
checksumCrc32
public com.pulumi.core.Output<java.lang.String> checksumCrc32()
- Returns:
- Base64-encoded, 32-bit CRC32 checksum of the object.
-
checksumCrc32c
public com.pulumi.core.Output<java.lang.String> checksumCrc32c()
- Returns:
- Base64-encoded, 32-bit CRC32C checksum of the object.
-
checksumCrc64nvme
public com.pulumi.core.Output<java.lang.String> checksumCrc64nvme()
- Returns:
- Base64-encoded, 64-bit CRC64NVME checksum of the object.
-
checksumSha1
public com.pulumi.core.Output<java.lang.String> checksumSha1()
- Returns:
- Base64-encoded, 160-bit SHA-1 digest of the object.
-
checksumSha256
public com.pulumi.core.Output<java.lang.String> checksumSha256()
- Returns:
- Base64-encoded, 256-bit SHA-256 digest of the object.
-
content
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> content()
- Returns:
- Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text.
-
contentBase64
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> contentBase64()
- Returns:
- Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file.
-
contentDisposition
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> contentDisposition()
- Returns:
- Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.
-
contentEncoding
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> contentEncoding()
- Returns:
- Content encodings that 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. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.
-
contentLanguage
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> contentLanguage()
- Returns:
- Language the content is in e.g., en-US or en-GB.
-
contentType
public com.pulumi.core.Output<java.lang.String> contentType()
- Returns:
- Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input.
-
etag
public com.pulumi.core.Output<java.lang.String> etag()
- Returns:
- Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"`, also if an object is larger than 16 MB, the AWS Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest (see `sourceHash` instead).
-
forceDestroy
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> forceDestroy()
- Returns:
- Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled.
-
key
public com.pulumi.core.Output<java.lang.String> key()
- Returns:
- Name of the object once it is in the bucket. The following arguments are optional:
-
kmsKeyId
public com.pulumi.core.Output<java.lang.String> kmsKeyId()
- Returns:
- ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `aws.kms.Key` resource, use the `arn` attribute. If referencing the `aws.kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided.
-
metadata
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> metadata()
- Returns:
- Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API).
-
objectLockLegalHoldStatus
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> objectLockLegalHoldStatus()
- Returns:
- [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`.
-
objectLockMode
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> objectLockMode()
- Returns:
- Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`.
-
objectLockRetainUntilDate
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> objectLockRetainUntilDate()
- Returns:
- Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods).
-
overrideProvider
public com.pulumi.core.Output<java.util.Optional<BucketObjectv2OverrideProvider>> overrideProvider()
- Returns:
- Override provider-level configuration options. See `overrideProvider` Block below for more details.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- 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.
-
serverSideEncryption
public com.pulumi.core.Output<java.lang.String> serverSideEncryption()
- Returns:
- Server-side encryption of the object in S3. Valid values are `"AES256"`, `"aws:kms"`, `"aws:kms:dsse"`, and `"aws:fsx"`.
-
source
public com.pulumi.core.Output<java.util.Optional<com.pulumi.asset.AssetOrArchive>> source()
- Returns:
- Path to a file that will be read and uploaded as raw bytes for the object content.
-
sourceHash
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> sourceHash()
- Returns:
- Triggers updates like `etag` but useful to address `etag` encryption limitations. (The value is only stored in state and not saved by AWS.)
-
storageClass
public com.pulumi.core.Output<java.lang.String> storageClass()
- Returns:
- [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`".
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
versionId
public com.pulumi.core.Output<java.lang.String> versionId()
- Returns:
- Unique version ID value for the object, if bucket versioning is enabled.
-
websiteRedirect
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> websiteRedirect()
- Returns:
- Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). > **Note:** If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. > **Note:** If you specify `contentEncoding` you are responsible for encoding the body appropriately. `source`, `content`, and `contentBase64` all expect already encoded/compressed bytes. > **Note:** The provider ignores all leading `/`s in the object's `key` and treats multiple `/`s in the rest of the object's `key` as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`.
-
get
public static BucketObjectv2 get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable BucketObjectv2State state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-