github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/s3/objectCopy.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package s3
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides a resource for copying an S3 object.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
    26  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    27  //
    28  // )
    29  //
    30  //	func main() {
    31  //		pulumi.Run(func(ctx *pulumi.Context) error {
    32  //			_, err := s3.NewObjectCopy(ctx, "test", &s3.ObjectCopyArgs{
    33  //				Bucket: pulumi.String("destination_bucket"),
    34  //				Key:    pulumi.String("destination_key"),
    35  //				Source: pulumi.String("source_bucket/source_key"),
    36  //				Grants: s3.ObjectCopyGrantArray{
    37  //					&s3.ObjectCopyGrantArgs{
    38  //						Uri:  pulumi.String("http://acs.amazonaws.com/groups/global/AllUsers"),
    39  //						Type: pulumi.String("Group"),
    40  //						Permissions: pulumi.StringArray{
    41  //							pulumi.String("READ"),
    42  //						},
    43  //					},
    44  //				},
    45  //			})
    46  //			if err != nil {
    47  //				return err
    48  //			}
    49  //			return nil
    50  //		})
    51  //	}
    52  //
    53  // ```
    54  // <!--End PulumiCodeChooser -->
    55  type ObjectCopy struct {
    56  	pulumi.CustomResourceState
    57  
    58  	// [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`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`.
    59  	Acl pulumi.StringOutput `pulumi:"acl"`
    60  	// ARN of the object.
    61  	Arn pulumi.StringOutput `pulumi:"arn"`
    62  	// Name of the bucket to put the file in.
    63  	Bucket           pulumi.StringOutput `pulumi:"bucket"`
    64  	BucketKeyEnabled pulumi.BoolOutput   `pulumi:"bucketKeyEnabled"`
    65  	// Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.
    66  	CacheControl pulumi.StringOutput `pulumi:"cacheControl"`
    67  	// Indicates the 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`, `SHA1`, `SHA256`.
    68  	ChecksumAlgorithm pulumi.StringPtrOutput `pulumi:"checksumAlgorithm"`
    69  	// The base64-encoded, 32-bit CRC32 checksum of the object.
    70  	ChecksumCrc32 pulumi.StringOutput `pulumi:"checksumCrc32"`
    71  	// The base64-encoded, 32-bit CRC32C checksum of the object.
    72  	ChecksumCrc32c pulumi.StringOutput `pulumi:"checksumCrc32c"`
    73  	// The base64-encoded, 160-bit SHA-1 digest of the object.
    74  	ChecksumSha1 pulumi.StringOutput `pulumi:"checksumSha1"`
    75  	// The base64-encoded, 256-bit SHA-256 digest of the object.
    76  	ChecksumSha256 pulumi.StringOutput `pulumi:"checksumSha256"`
    77  	// Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.
    78  	ContentDisposition pulumi.StringOutput `pulumi:"contentDisposition"`
    79  	// Specifies 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. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.
    80  	ContentEncoding pulumi.StringOutput `pulumi:"contentEncoding"`
    81  	// Language the content is in e.g., en-US or en-GB.
    82  	ContentLanguage pulumi.StringOutput `pulumi:"contentLanguage"`
    83  	// Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input.
    84  	ContentType pulumi.StringOutput `pulumi:"contentType"`
    85  	// Copies the object if its entity tag (ETag) matches the specified tag.
    86  	CopyIfMatch pulumi.StringPtrOutput `pulumi:"copyIfMatch"`
    87  	// Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
    88  	CopyIfModifiedSince pulumi.StringPtrOutput `pulumi:"copyIfModifiedSince"`
    89  	// Copies the object if its entity tag (ETag) is different than the specified ETag.
    90  	CopyIfNoneMatch pulumi.StringPtrOutput `pulumi:"copyIfNoneMatch"`
    91  	// Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
    92  	CopyIfUnmodifiedSince pulumi.StringPtrOutput `pulumi:"copyIfUnmodifiedSince"`
    93  	// Specifies the algorithm to use to when encrypting the object (for example, AES256).
    94  	CustomerAlgorithm pulumi.StringOutput `pulumi:"customerAlgorithm"`
    95  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header.
    96  	CustomerKey pulumi.StringPtrOutput `pulumi:"customerKey"`
    97  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
    98  	CustomerKeyMd5 pulumi.StringOutput `pulumi:"customerKeyMd5"`
    99  	// ETag generated for the object (an MD5 sum of the object content). For plaintext objects or objects encrypted with an AWS-managed key, the hash is an MD5 digest of the object data. For objects encrypted with a KMS key or objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 digest, regardless of the method of encryption. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html).
   100  	Etag pulumi.StringOutput `pulumi:"etag"`
   101  	// Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   102  	ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"`
   103  	// Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   104  	ExpectedSourceBucketOwner pulumi.StringPtrOutput `pulumi:"expectedSourceBucketOwner"`
   105  	// If the object expiration is configured, this attribute will be set.
   106  	Expiration pulumi.StringOutput `pulumi:"expiration"`
   107  	// Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   108  	Expires pulumi.StringPtrOutput `pulumi:"expires"`
   109  	// 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.
   110  	ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"`
   111  	// Configuration block for header grants. Documented below. Conflicts with `acl`.
   112  	Grants ObjectCopyGrantArrayOutput `pulumi:"grants"`
   113  	// Name of the object once it is in the bucket.
   114  	Key pulumi.StringOutput `pulumi:"key"`
   115  	// Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.
   116  	KmsEncryptionContext pulumi.StringOutput `pulumi:"kmsEncryptionContext"`
   117  	// Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn`
   118  	KmsKeyId pulumi.StringOutput `pulumi:"kmsKeyId"`
   119  	// Returns the date that the object was last modified, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   120  	LastModified pulumi.StringOutput `pulumi:"lastModified"`
   121  	// 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).
   122  	Metadata pulumi.StringMapOutput `pulumi:"metadata"`
   123  	// Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.
   124  	MetadataDirective pulumi.StringPtrOutput `pulumi:"metadataDirective"`
   125  	// The [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`.
   126  	ObjectLockLegalHoldStatus pulumi.StringOutput `pulumi:"objectLockLegalHoldStatus"`
   127  	// 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`.
   128  	ObjectLockMode pulumi.StringOutput `pulumi:"objectLockMode"`
   129  	// 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).
   130  	ObjectLockRetainUntilDate pulumi.StringOutput `pulumi:"objectLockRetainUntilDate"`
   131  	// If present, indicates that the requester was successfully charged for the request.
   132  	RequestCharged pulumi.BoolOutput `pulumi:"requestCharged"`
   133  	// Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`.
   134  	RequestPayer pulumi.StringPtrOutput `pulumi:"requestPayer"`
   135  	// Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`.
   136  	ServerSideEncryption pulumi.StringOutput `pulumi:"serverSideEncryption"`
   137  	// Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`.
   138  	//
   139  	// The following arguments are optional:
   140  	Source pulumi.StringOutput `pulumi:"source"`
   141  	// Specifies the algorithm to use when decrypting the source object (for example, AES256).
   142  	SourceCustomerAlgorithm pulumi.StringPtrOutput `pulumi:"sourceCustomerAlgorithm"`
   143  	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created.
   144  	SourceCustomerKey pulumi.StringPtrOutput `pulumi:"sourceCustomerKey"`
   145  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   146  	SourceCustomerKeyMd5 pulumi.StringPtrOutput `pulumi:"sourceCustomerKeyMd5"`
   147  	// Version of the copied object in the source bucket.
   148  	SourceVersionId pulumi.StringOutput `pulumi:"sourceVersionId"`
   149  	// Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`.
   150  	StorageClass pulumi.StringOutput `pulumi:"storageClass"`
   151  	// Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.
   152  	TaggingDirective pulumi.StringPtrOutput `pulumi:"taggingDirective"`
   153  	// 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.
   154  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   155  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   156  	//
   157  	// Deprecated: Please use `tags` instead.
   158  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   159  	// Version ID of the newly created copy.
   160  	VersionId pulumi.StringOutput `pulumi:"versionId"`
   161  	// Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
   162  	WebsiteRedirect pulumi.StringOutput `pulumi:"websiteRedirect"`
   163  }
   164  
   165  // NewObjectCopy registers a new resource with the given unique name, arguments, and options.
   166  func NewObjectCopy(ctx *pulumi.Context,
   167  	name string, args *ObjectCopyArgs, opts ...pulumi.ResourceOption) (*ObjectCopy, error) {
   168  	if args == nil {
   169  		return nil, errors.New("missing one or more required arguments")
   170  	}
   171  
   172  	if args.Bucket == nil {
   173  		return nil, errors.New("invalid value for required argument 'Bucket'")
   174  	}
   175  	if args.Key == nil {
   176  		return nil, errors.New("invalid value for required argument 'Key'")
   177  	}
   178  	if args.Source == nil {
   179  		return nil, errors.New("invalid value for required argument 'Source'")
   180  	}
   181  	if args.CustomerKey != nil {
   182  		args.CustomerKey = pulumi.ToSecret(args.CustomerKey).(pulumi.StringPtrInput)
   183  	}
   184  	if args.KmsEncryptionContext != nil {
   185  		args.KmsEncryptionContext = pulumi.ToSecret(args.KmsEncryptionContext).(pulumi.StringPtrInput)
   186  	}
   187  	if args.KmsKeyId != nil {
   188  		args.KmsKeyId = pulumi.ToSecret(args.KmsKeyId).(pulumi.StringPtrInput)
   189  	}
   190  	if args.SourceCustomerKey != nil {
   191  		args.SourceCustomerKey = pulumi.ToSecret(args.SourceCustomerKey).(pulumi.StringPtrInput)
   192  	}
   193  	secrets := pulumi.AdditionalSecretOutputs([]string{
   194  		"customerKey",
   195  		"kmsEncryptionContext",
   196  		"kmsKeyId",
   197  		"sourceCustomerKey",
   198  	})
   199  	opts = append(opts, secrets)
   200  	opts = internal.PkgResourceDefaultOpts(opts)
   201  	var resource ObjectCopy
   202  	err := ctx.RegisterResource("aws:s3/objectCopy:ObjectCopy", name, args, &resource, opts...)
   203  	if err != nil {
   204  		return nil, err
   205  	}
   206  	return &resource, nil
   207  }
   208  
   209  // GetObjectCopy gets an existing ObjectCopy resource's state with the given name, ID, and optional
   210  // state properties that are used to uniquely qualify the lookup (nil if not required).
   211  func GetObjectCopy(ctx *pulumi.Context,
   212  	name string, id pulumi.IDInput, state *ObjectCopyState, opts ...pulumi.ResourceOption) (*ObjectCopy, error) {
   213  	var resource ObjectCopy
   214  	err := ctx.ReadResource("aws:s3/objectCopy:ObjectCopy", name, id, state, &resource, opts...)
   215  	if err != nil {
   216  		return nil, err
   217  	}
   218  	return &resource, nil
   219  }
   220  
   221  // Input properties used for looking up and filtering ObjectCopy resources.
   222  type objectCopyState struct {
   223  	// [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`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`.
   224  	Acl *string `pulumi:"acl"`
   225  	// ARN of the object.
   226  	Arn *string `pulumi:"arn"`
   227  	// Name of the bucket to put the file in.
   228  	Bucket           *string `pulumi:"bucket"`
   229  	BucketKeyEnabled *bool   `pulumi:"bucketKeyEnabled"`
   230  	// Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.
   231  	CacheControl *string `pulumi:"cacheControl"`
   232  	// Indicates the 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`, `SHA1`, `SHA256`.
   233  	ChecksumAlgorithm *string `pulumi:"checksumAlgorithm"`
   234  	// The base64-encoded, 32-bit CRC32 checksum of the object.
   235  	ChecksumCrc32 *string `pulumi:"checksumCrc32"`
   236  	// The base64-encoded, 32-bit CRC32C checksum of the object.
   237  	ChecksumCrc32c *string `pulumi:"checksumCrc32c"`
   238  	// The base64-encoded, 160-bit SHA-1 digest of the object.
   239  	ChecksumSha1 *string `pulumi:"checksumSha1"`
   240  	// The base64-encoded, 256-bit SHA-256 digest of the object.
   241  	ChecksumSha256 *string `pulumi:"checksumSha256"`
   242  	// Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.
   243  	ContentDisposition *string `pulumi:"contentDisposition"`
   244  	// Specifies 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. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.
   245  	ContentEncoding *string `pulumi:"contentEncoding"`
   246  	// Language the content is in e.g., en-US or en-GB.
   247  	ContentLanguage *string `pulumi:"contentLanguage"`
   248  	// Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input.
   249  	ContentType *string `pulumi:"contentType"`
   250  	// Copies the object if its entity tag (ETag) matches the specified tag.
   251  	CopyIfMatch *string `pulumi:"copyIfMatch"`
   252  	// Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   253  	CopyIfModifiedSince *string `pulumi:"copyIfModifiedSince"`
   254  	// Copies the object if its entity tag (ETag) is different than the specified ETag.
   255  	CopyIfNoneMatch *string `pulumi:"copyIfNoneMatch"`
   256  	// Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   257  	CopyIfUnmodifiedSince *string `pulumi:"copyIfUnmodifiedSince"`
   258  	// Specifies the algorithm to use to when encrypting the object (for example, AES256).
   259  	CustomerAlgorithm *string `pulumi:"customerAlgorithm"`
   260  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header.
   261  	CustomerKey *string `pulumi:"customerKey"`
   262  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   263  	CustomerKeyMd5 *string `pulumi:"customerKeyMd5"`
   264  	// ETag generated for the object (an MD5 sum of the object content). For plaintext objects or objects encrypted with an AWS-managed key, the hash is an MD5 digest of the object data. For objects encrypted with a KMS key or objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 digest, regardless of the method of encryption. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html).
   265  	Etag *string `pulumi:"etag"`
   266  	// Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   267  	ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"`
   268  	// Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   269  	ExpectedSourceBucketOwner *string `pulumi:"expectedSourceBucketOwner"`
   270  	// If the object expiration is configured, this attribute will be set.
   271  	Expiration *string `pulumi:"expiration"`
   272  	// Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   273  	Expires *string `pulumi:"expires"`
   274  	// 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.
   275  	ForceDestroy *bool `pulumi:"forceDestroy"`
   276  	// Configuration block for header grants. Documented below. Conflicts with `acl`.
   277  	Grants []ObjectCopyGrant `pulumi:"grants"`
   278  	// Name of the object once it is in the bucket.
   279  	Key *string `pulumi:"key"`
   280  	// Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.
   281  	KmsEncryptionContext *string `pulumi:"kmsEncryptionContext"`
   282  	// Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn`
   283  	KmsKeyId *string `pulumi:"kmsKeyId"`
   284  	// Returns the date that the object was last modified, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   285  	LastModified *string `pulumi:"lastModified"`
   286  	// 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).
   287  	Metadata map[string]string `pulumi:"metadata"`
   288  	// Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.
   289  	MetadataDirective *string `pulumi:"metadataDirective"`
   290  	// The [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`.
   291  	ObjectLockLegalHoldStatus *string `pulumi:"objectLockLegalHoldStatus"`
   292  	// 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`.
   293  	ObjectLockMode *string `pulumi:"objectLockMode"`
   294  	// 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).
   295  	ObjectLockRetainUntilDate *string `pulumi:"objectLockRetainUntilDate"`
   296  	// If present, indicates that the requester was successfully charged for the request.
   297  	RequestCharged *bool `pulumi:"requestCharged"`
   298  	// Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`.
   299  	RequestPayer *string `pulumi:"requestPayer"`
   300  	// Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`.
   301  	ServerSideEncryption *string `pulumi:"serverSideEncryption"`
   302  	// Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`.
   303  	//
   304  	// The following arguments are optional:
   305  	Source *string `pulumi:"source"`
   306  	// Specifies the algorithm to use when decrypting the source object (for example, AES256).
   307  	SourceCustomerAlgorithm *string `pulumi:"sourceCustomerAlgorithm"`
   308  	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created.
   309  	SourceCustomerKey *string `pulumi:"sourceCustomerKey"`
   310  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   311  	SourceCustomerKeyMd5 *string `pulumi:"sourceCustomerKeyMd5"`
   312  	// Version of the copied object in the source bucket.
   313  	SourceVersionId *string `pulumi:"sourceVersionId"`
   314  	// Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`.
   315  	StorageClass *string `pulumi:"storageClass"`
   316  	// Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.
   317  	TaggingDirective *string `pulumi:"taggingDirective"`
   318  	// 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.
   319  	Tags map[string]string `pulumi:"tags"`
   320  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   321  	//
   322  	// Deprecated: Please use `tags` instead.
   323  	TagsAll map[string]string `pulumi:"tagsAll"`
   324  	// Version ID of the newly created copy.
   325  	VersionId *string `pulumi:"versionId"`
   326  	// Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
   327  	WebsiteRedirect *string `pulumi:"websiteRedirect"`
   328  }
   329  
   330  type ObjectCopyState struct {
   331  	// [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`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`.
   332  	Acl pulumi.StringPtrInput
   333  	// ARN of the object.
   334  	Arn pulumi.StringPtrInput
   335  	// Name of the bucket to put the file in.
   336  	Bucket           pulumi.StringPtrInput
   337  	BucketKeyEnabled pulumi.BoolPtrInput
   338  	// Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.
   339  	CacheControl pulumi.StringPtrInput
   340  	// Indicates the 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`, `SHA1`, `SHA256`.
   341  	ChecksumAlgorithm pulumi.StringPtrInput
   342  	// The base64-encoded, 32-bit CRC32 checksum of the object.
   343  	ChecksumCrc32 pulumi.StringPtrInput
   344  	// The base64-encoded, 32-bit CRC32C checksum of the object.
   345  	ChecksumCrc32c pulumi.StringPtrInput
   346  	// The base64-encoded, 160-bit SHA-1 digest of the object.
   347  	ChecksumSha1 pulumi.StringPtrInput
   348  	// The base64-encoded, 256-bit SHA-256 digest of the object.
   349  	ChecksumSha256 pulumi.StringPtrInput
   350  	// Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.
   351  	ContentDisposition pulumi.StringPtrInput
   352  	// Specifies 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. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.
   353  	ContentEncoding pulumi.StringPtrInput
   354  	// Language the content is in e.g., en-US or en-GB.
   355  	ContentLanguage pulumi.StringPtrInput
   356  	// Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input.
   357  	ContentType pulumi.StringPtrInput
   358  	// Copies the object if its entity tag (ETag) matches the specified tag.
   359  	CopyIfMatch pulumi.StringPtrInput
   360  	// Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   361  	CopyIfModifiedSince pulumi.StringPtrInput
   362  	// Copies the object if its entity tag (ETag) is different than the specified ETag.
   363  	CopyIfNoneMatch pulumi.StringPtrInput
   364  	// Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   365  	CopyIfUnmodifiedSince pulumi.StringPtrInput
   366  	// Specifies the algorithm to use to when encrypting the object (for example, AES256).
   367  	CustomerAlgorithm pulumi.StringPtrInput
   368  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header.
   369  	CustomerKey pulumi.StringPtrInput
   370  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   371  	CustomerKeyMd5 pulumi.StringPtrInput
   372  	// ETag generated for the object (an MD5 sum of the object content). For plaintext objects or objects encrypted with an AWS-managed key, the hash is an MD5 digest of the object data. For objects encrypted with a KMS key or objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 digest, regardless of the method of encryption. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html).
   373  	Etag pulumi.StringPtrInput
   374  	// Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   375  	ExpectedBucketOwner pulumi.StringPtrInput
   376  	// Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   377  	ExpectedSourceBucketOwner pulumi.StringPtrInput
   378  	// If the object expiration is configured, this attribute will be set.
   379  	Expiration pulumi.StringPtrInput
   380  	// Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   381  	Expires pulumi.StringPtrInput
   382  	// 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.
   383  	ForceDestroy pulumi.BoolPtrInput
   384  	// Configuration block for header grants. Documented below. Conflicts with `acl`.
   385  	Grants ObjectCopyGrantArrayInput
   386  	// Name of the object once it is in the bucket.
   387  	Key pulumi.StringPtrInput
   388  	// Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.
   389  	KmsEncryptionContext pulumi.StringPtrInput
   390  	// Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn`
   391  	KmsKeyId pulumi.StringPtrInput
   392  	// Returns the date that the object was last modified, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   393  	LastModified pulumi.StringPtrInput
   394  	// 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).
   395  	Metadata pulumi.StringMapInput
   396  	// Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.
   397  	MetadataDirective pulumi.StringPtrInput
   398  	// The [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`.
   399  	ObjectLockLegalHoldStatus pulumi.StringPtrInput
   400  	// 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`.
   401  	ObjectLockMode pulumi.StringPtrInput
   402  	// 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).
   403  	ObjectLockRetainUntilDate pulumi.StringPtrInput
   404  	// If present, indicates that the requester was successfully charged for the request.
   405  	RequestCharged pulumi.BoolPtrInput
   406  	// Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`.
   407  	RequestPayer pulumi.StringPtrInput
   408  	// Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`.
   409  	ServerSideEncryption pulumi.StringPtrInput
   410  	// Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`.
   411  	//
   412  	// The following arguments are optional:
   413  	Source pulumi.StringPtrInput
   414  	// Specifies the algorithm to use when decrypting the source object (for example, AES256).
   415  	SourceCustomerAlgorithm pulumi.StringPtrInput
   416  	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created.
   417  	SourceCustomerKey pulumi.StringPtrInput
   418  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   419  	SourceCustomerKeyMd5 pulumi.StringPtrInput
   420  	// Version of the copied object in the source bucket.
   421  	SourceVersionId pulumi.StringPtrInput
   422  	// Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`.
   423  	StorageClass pulumi.StringPtrInput
   424  	// Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.
   425  	TaggingDirective pulumi.StringPtrInput
   426  	// 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.
   427  	Tags pulumi.StringMapInput
   428  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   429  	//
   430  	// Deprecated: Please use `tags` instead.
   431  	TagsAll pulumi.StringMapInput
   432  	// Version ID of the newly created copy.
   433  	VersionId pulumi.StringPtrInput
   434  	// Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
   435  	WebsiteRedirect pulumi.StringPtrInput
   436  }
   437  
   438  func (ObjectCopyState) ElementType() reflect.Type {
   439  	return reflect.TypeOf((*objectCopyState)(nil)).Elem()
   440  }
   441  
   442  type objectCopyArgs struct {
   443  	// [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`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`.
   444  	Acl *string `pulumi:"acl"`
   445  	// Name of the bucket to put the file in.
   446  	Bucket           string `pulumi:"bucket"`
   447  	BucketKeyEnabled *bool  `pulumi:"bucketKeyEnabled"`
   448  	// Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.
   449  	CacheControl *string `pulumi:"cacheControl"`
   450  	// Indicates the 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`, `SHA1`, `SHA256`.
   451  	ChecksumAlgorithm *string `pulumi:"checksumAlgorithm"`
   452  	// Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.
   453  	ContentDisposition *string `pulumi:"contentDisposition"`
   454  	// Specifies 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. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.
   455  	ContentEncoding *string `pulumi:"contentEncoding"`
   456  	// Language the content is in e.g., en-US or en-GB.
   457  	ContentLanguage *string `pulumi:"contentLanguage"`
   458  	// Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input.
   459  	ContentType *string `pulumi:"contentType"`
   460  	// Copies the object if its entity tag (ETag) matches the specified tag.
   461  	CopyIfMatch *string `pulumi:"copyIfMatch"`
   462  	// Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   463  	CopyIfModifiedSince *string `pulumi:"copyIfModifiedSince"`
   464  	// Copies the object if its entity tag (ETag) is different than the specified ETag.
   465  	CopyIfNoneMatch *string `pulumi:"copyIfNoneMatch"`
   466  	// Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   467  	CopyIfUnmodifiedSince *string `pulumi:"copyIfUnmodifiedSince"`
   468  	// Specifies the algorithm to use to when encrypting the object (for example, AES256).
   469  	CustomerAlgorithm *string `pulumi:"customerAlgorithm"`
   470  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header.
   471  	CustomerKey *string `pulumi:"customerKey"`
   472  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   473  	CustomerKeyMd5 *string `pulumi:"customerKeyMd5"`
   474  	// Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   475  	ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"`
   476  	// Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   477  	ExpectedSourceBucketOwner *string `pulumi:"expectedSourceBucketOwner"`
   478  	// Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   479  	Expires *string `pulumi:"expires"`
   480  	// 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.
   481  	ForceDestroy *bool `pulumi:"forceDestroy"`
   482  	// Configuration block for header grants. Documented below. Conflicts with `acl`.
   483  	Grants []ObjectCopyGrant `pulumi:"grants"`
   484  	// Name of the object once it is in the bucket.
   485  	Key string `pulumi:"key"`
   486  	// Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.
   487  	KmsEncryptionContext *string `pulumi:"kmsEncryptionContext"`
   488  	// Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn`
   489  	KmsKeyId *string `pulumi:"kmsKeyId"`
   490  	// 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).
   491  	Metadata map[string]string `pulumi:"metadata"`
   492  	// Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.
   493  	MetadataDirective *string `pulumi:"metadataDirective"`
   494  	// The [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`.
   495  	ObjectLockLegalHoldStatus *string `pulumi:"objectLockLegalHoldStatus"`
   496  	// 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`.
   497  	ObjectLockMode *string `pulumi:"objectLockMode"`
   498  	// 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).
   499  	ObjectLockRetainUntilDate *string `pulumi:"objectLockRetainUntilDate"`
   500  	// Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`.
   501  	RequestPayer *string `pulumi:"requestPayer"`
   502  	// Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`.
   503  	ServerSideEncryption *string `pulumi:"serverSideEncryption"`
   504  	// Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`.
   505  	//
   506  	// The following arguments are optional:
   507  	Source string `pulumi:"source"`
   508  	// Specifies the algorithm to use when decrypting the source object (for example, AES256).
   509  	SourceCustomerAlgorithm *string `pulumi:"sourceCustomerAlgorithm"`
   510  	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created.
   511  	SourceCustomerKey *string `pulumi:"sourceCustomerKey"`
   512  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   513  	SourceCustomerKeyMd5 *string `pulumi:"sourceCustomerKeyMd5"`
   514  	// Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`.
   515  	StorageClass *string `pulumi:"storageClass"`
   516  	// Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.
   517  	TaggingDirective *string `pulumi:"taggingDirective"`
   518  	// 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.
   519  	Tags map[string]string `pulumi:"tags"`
   520  	// Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
   521  	WebsiteRedirect *string `pulumi:"websiteRedirect"`
   522  }
   523  
   524  // The set of arguments for constructing a ObjectCopy resource.
   525  type ObjectCopyArgs struct {
   526  	// [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`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`.
   527  	Acl pulumi.StringPtrInput
   528  	// Name of the bucket to put the file in.
   529  	Bucket           pulumi.StringInput
   530  	BucketKeyEnabled pulumi.BoolPtrInput
   531  	// Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.
   532  	CacheControl pulumi.StringPtrInput
   533  	// Indicates the 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`, `SHA1`, `SHA256`.
   534  	ChecksumAlgorithm pulumi.StringPtrInput
   535  	// Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.
   536  	ContentDisposition pulumi.StringPtrInput
   537  	// Specifies 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. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.
   538  	ContentEncoding pulumi.StringPtrInput
   539  	// Language the content is in e.g., en-US or en-GB.
   540  	ContentLanguage pulumi.StringPtrInput
   541  	// Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input.
   542  	ContentType pulumi.StringPtrInput
   543  	// Copies the object if its entity tag (ETag) matches the specified tag.
   544  	CopyIfMatch pulumi.StringPtrInput
   545  	// Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   546  	CopyIfModifiedSince pulumi.StringPtrInput
   547  	// Copies the object if its entity tag (ETag) is different than the specified ETag.
   548  	CopyIfNoneMatch pulumi.StringPtrInput
   549  	// Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   550  	CopyIfUnmodifiedSince pulumi.StringPtrInput
   551  	// Specifies the algorithm to use to when encrypting the object (for example, AES256).
   552  	CustomerAlgorithm pulumi.StringPtrInput
   553  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header.
   554  	CustomerKey pulumi.StringPtrInput
   555  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   556  	CustomerKeyMd5 pulumi.StringPtrInput
   557  	// Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   558  	ExpectedBucketOwner pulumi.StringPtrInput
   559  	// Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   560  	ExpectedSourceBucketOwner pulumi.StringPtrInput
   561  	// Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   562  	Expires pulumi.StringPtrInput
   563  	// 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.
   564  	ForceDestroy pulumi.BoolPtrInput
   565  	// Configuration block for header grants. Documented below. Conflicts with `acl`.
   566  	Grants ObjectCopyGrantArrayInput
   567  	// Name of the object once it is in the bucket.
   568  	Key pulumi.StringInput
   569  	// Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.
   570  	KmsEncryptionContext pulumi.StringPtrInput
   571  	// Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn`
   572  	KmsKeyId pulumi.StringPtrInput
   573  	// 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).
   574  	Metadata pulumi.StringMapInput
   575  	// Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.
   576  	MetadataDirective pulumi.StringPtrInput
   577  	// The [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`.
   578  	ObjectLockLegalHoldStatus pulumi.StringPtrInput
   579  	// 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`.
   580  	ObjectLockMode pulumi.StringPtrInput
   581  	// 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).
   582  	ObjectLockRetainUntilDate pulumi.StringPtrInput
   583  	// Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`.
   584  	RequestPayer pulumi.StringPtrInput
   585  	// Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`.
   586  	ServerSideEncryption pulumi.StringPtrInput
   587  	// Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`.
   588  	//
   589  	// The following arguments are optional:
   590  	Source pulumi.StringInput
   591  	// Specifies the algorithm to use when decrypting the source object (for example, AES256).
   592  	SourceCustomerAlgorithm pulumi.StringPtrInput
   593  	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created.
   594  	SourceCustomerKey pulumi.StringPtrInput
   595  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   596  	SourceCustomerKeyMd5 pulumi.StringPtrInput
   597  	// Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`.
   598  	StorageClass pulumi.StringPtrInput
   599  	// Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.
   600  	TaggingDirective pulumi.StringPtrInput
   601  	// 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.
   602  	Tags pulumi.StringMapInput
   603  	// Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
   604  	WebsiteRedirect pulumi.StringPtrInput
   605  }
   606  
   607  func (ObjectCopyArgs) ElementType() reflect.Type {
   608  	return reflect.TypeOf((*objectCopyArgs)(nil)).Elem()
   609  }
   610  
   611  type ObjectCopyInput interface {
   612  	pulumi.Input
   613  
   614  	ToObjectCopyOutput() ObjectCopyOutput
   615  	ToObjectCopyOutputWithContext(ctx context.Context) ObjectCopyOutput
   616  }
   617  
   618  func (*ObjectCopy) ElementType() reflect.Type {
   619  	return reflect.TypeOf((**ObjectCopy)(nil)).Elem()
   620  }
   621  
   622  func (i *ObjectCopy) ToObjectCopyOutput() ObjectCopyOutput {
   623  	return i.ToObjectCopyOutputWithContext(context.Background())
   624  }
   625  
   626  func (i *ObjectCopy) ToObjectCopyOutputWithContext(ctx context.Context) ObjectCopyOutput {
   627  	return pulumi.ToOutputWithContext(ctx, i).(ObjectCopyOutput)
   628  }
   629  
   630  // ObjectCopyArrayInput is an input type that accepts ObjectCopyArray and ObjectCopyArrayOutput values.
   631  // You can construct a concrete instance of `ObjectCopyArrayInput` via:
   632  //
   633  //	ObjectCopyArray{ ObjectCopyArgs{...} }
   634  type ObjectCopyArrayInput interface {
   635  	pulumi.Input
   636  
   637  	ToObjectCopyArrayOutput() ObjectCopyArrayOutput
   638  	ToObjectCopyArrayOutputWithContext(context.Context) ObjectCopyArrayOutput
   639  }
   640  
   641  type ObjectCopyArray []ObjectCopyInput
   642  
   643  func (ObjectCopyArray) ElementType() reflect.Type {
   644  	return reflect.TypeOf((*[]*ObjectCopy)(nil)).Elem()
   645  }
   646  
   647  func (i ObjectCopyArray) ToObjectCopyArrayOutput() ObjectCopyArrayOutput {
   648  	return i.ToObjectCopyArrayOutputWithContext(context.Background())
   649  }
   650  
   651  func (i ObjectCopyArray) ToObjectCopyArrayOutputWithContext(ctx context.Context) ObjectCopyArrayOutput {
   652  	return pulumi.ToOutputWithContext(ctx, i).(ObjectCopyArrayOutput)
   653  }
   654  
   655  // ObjectCopyMapInput is an input type that accepts ObjectCopyMap and ObjectCopyMapOutput values.
   656  // You can construct a concrete instance of `ObjectCopyMapInput` via:
   657  //
   658  //	ObjectCopyMap{ "key": ObjectCopyArgs{...} }
   659  type ObjectCopyMapInput interface {
   660  	pulumi.Input
   661  
   662  	ToObjectCopyMapOutput() ObjectCopyMapOutput
   663  	ToObjectCopyMapOutputWithContext(context.Context) ObjectCopyMapOutput
   664  }
   665  
   666  type ObjectCopyMap map[string]ObjectCopyInput
   667  
   668  func (ObjectCopyMap) ElementType() reflect.Type {
   669  	return reflect.TypeOf((*map[string]*ObjectCopy)(nil)).Elem()
   670  }
   671  
   672  func (i ObjectCopyMap) ToObjectCopyMapOutput() ObjectCopyMapOutput {
   673  	return i.ToObjectCopyMapOutputWithContext(context.Background())
   674  }
   675  
   676  func (i ObjectCopyMap) ToObjectCopyMapOutputWithContext(ctx context.Context) ObjectCopyMapOutput {
   677  	return pulumi.ToOutputWithContext(ctx, i).(ObjectCopyMapOutput)
   678  }
   679  
   680  type ObjectCopyOutput struct{ *pulumi.OutputState }
   681  
   682  func (ObjectCopyOutput) ElementType() reflect.Type {
   683  	return reflect.TypeOf((**ObjectCopy)(nil)).Elem()
   684  }
   685  
   686  func (o ObjectCopyOutput) ToObjectCopyOutput() ObjectCopyOutput {
   687  	return o
   688  }
   689  
   690  func (o ObjectCopyOutput) ToObjectCopyOutputWithContext(ctx context.Context) ObjectCopyOutput {
   691  	return o
   692  }
   693  
   694  // [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`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`.
   695  func (o ObjectCopyOutput) Acl() pulumi.StringOutput {
   696  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Acl }).(pulumi.StringOutput)
   697  }
   698  
   699  // ARN of the object.
   700  func (o ObjectCopyOutput) Arn() pulumi.StringOutput {
   701  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   702  }
   703  
   704  // Name of the bucket to put the file in.
   705  func (o ObjectCopyOutput) Bucket() pulumi.StringOutput {
   706  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput)
   707  }
   708  
   709  func (o ObjectCopyOutput) BucketKeyEnabled() pulumi.BoolOutput {
   710  	return o.ApplyT(func(v *ObjectCopy) pulumi.BoolOutput { return v.BucketKeyEnabled }).(pulumi.BoolOutput)
   711  }
   712  
   713  // Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.
   714  func (o ObjectCopyOutput) CacheControl() pulumi.StringOutput {
   715  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.CacheControl }).(pulumi.StringOutput)
   716  }
   717  
   718  // Indicates the 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`, `SHA1`, `SHA256`.
   719  func (o ObjectCopyOutput) ChecksumAlgorithm() pulumi.StringPtrOutput {
   720  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.ChecksumAlgorithm }).(pulumi.StringPtrOutput)
   721  }
   722  
   723  // The base64-encoded, 32-bit CRC32 checksum of the object.
   724  func (o ObjectCopyOutput) ChecksumCrc32() pulumi.StringOutput {
   725  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ChecksumCrc32 }).(pulumi.StringOutput)
   726  }
   727  
   728  // The base64-encoded, 32-bit CRC32C checksum of the object.
   729  func (o ObjectCopyOutput) ChecksumCrc32c() pulumi.StringOutput {
   730  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ChecksumCrc32c }).(pulumi.StringOutput)
   731  }
   732  
   733  // The base64-encoded, 160-bit SHA-1 digest of the object.
   734  func (o ObjectCopyOutput) ChecksumSha1() pulumi.StringOutput {
   735  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ChecksumSha1 }).(pulumi.StringOutput)
   736  }
   737  
   738  // The base64-encoded, 256-bit SHA-256 digest of the object.
   739  func (o ObjectCopyOutput) ChecksumSha256() pulumi.StringOutput {
   740  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ChecksumSha256 }).(pulumi.StringOutput)
   741  }
   742  
   743  // Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.
   744  func (o ObjectCopyOutput) ContentDisposition() pulumi.StringOutput {
   745  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ContentDisposition }).(pulumi.StringOutput)
   746  }
   747  
   748  // Specifies 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. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.
   749  func (o ObjectCopyOutput) ContentEncoding() pulumi.StringOutput {
   750  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ContentEncoding }).(pulumi.StringOutput)
   751  }
   752  
   753  // Language the content is in e.g., en-US or en-GB.
   754  func (o ObjectCopyOutput) ContentLanguage() pulumi.StringOutput {
   755  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ContentLanguage }).(pulumi.StringOutput)
   756  }
   757  
   758  // Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input.
   759  func (o ObjectCopyOutput) ContentType() pulumi.StringOutput {
   760  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ContentType }).(pulumi.StringOutput)
   761  }
   762  
   763  // Copies the object if its entity tag (ETag) matches the specified tag.
   764  func (o ObjectCopyOutput) CopyIfMatch() pulumi.StringPtrOutput {
   765  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CopyIfMatch }).(pulumi.StringPtrOutput)
   766  }
   767  
   768  // Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   769  func (o ObjectCopyOutput) CopyIfModifiedSince() pulumi.StringPtrOutput {
   770  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CopyIfModifiedSince }).(pulumi.StringPtrOutput)
   771  }
   772  
   773  // Copies the object if its entity tag (ETag) is different than the specified ETag.
   774  func (o ObjectCopyOutput) CopyIfNoneMatch() pulumi.StringPtrOutput {
   775  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CopyIfNoneMatch }).(pulumi.StringPtrOutput)
   776  }
   777  
   778  // Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   779  func (o ObjectCopyOutput) CopyIfUnmodifiedSince() pulumi.StringPtrOutput {
   780  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CopyIfUnmodifiedSince }).(pulumi.StringPtrOutput)
   781  }
   782  
   783  // Specifies the algorithm to use to when encrypting the object (for example, AES256).
   784  func (o ObjectCopyOutput) CustomerAlgorithm() pulumi.StringOutput {
   785  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.CustomerAlgorithm }).(pulumi.StringOutput)
   786  }
   787  
   788  // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header.
   789  func (o ObjectCopyOutput) CustomerKey() pulumi.StringPtrOutput {
   790  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CustomerKey }).(pulumi.StringPtrOutput)
   791  }
   792  
   793  // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   794  func (o ObjectCopyOutput) CustomerKeyMd5() pulumi.StringOutput {
   795  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.CustomerKeyMd5 }).(pulumi.StringOutput)
   796  }
   797  
   798  // ETag generated for the object (an MD5 sum of the object content). For plaintext objects or objects encrypted with an AWS-managed key, the hash is an MD5 digest of the object data. For objects encrypted with a KMS key or objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 digest, regardless of the method of encryption. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html).
   799  func (o ObjectCopyOutput) Etag() pulumi.StringOutput {
   800  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Etag }).(pulumi.StringOutput)
   801  }
   802  
   803  // Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   804  func (o ObjectCopyOutput) ExpectedBucketOwner() pulumi.StringPtrOutput {
   805  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput)
   806  }
   807  
   808  // Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error.
   809  func (o ObjectCopyOutput) ExpectedSourceBucketOwner() pulumi.StringPtrOutput {
   810  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.ExpectedSourceBucketOwner }).(pulumi.StringPtrOutput)
   811  }
   812  
   813  // If the object expiration is configured, this attribute will be set.
   814  func (o ObjectCopyOutput) Expiration() pulumi.StringOutput {
   815  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Expiration }).(pulumi.StringOutput)
   816  }
   817  
   818  // Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   819  func (o ObjectCopyOutput) Expires() pulumi.StringPtrOutput {
   820  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.Expires }).(pulumi.StringPtrOutput)
   821  }
   822  
   823  // 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.
   824  func (o ObjectCopyOutput) ForceDestroy() pulumi.BoolPtrOutput {
   825  	return o.ApplyT(func(v *ObjectCopy) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput)
   826  }
   827  
   828  // Configuration block for header grants. Documented below. Conflicts with `acl`.
   829  func (o ObjectCopyOutput) Grants() ObjectCopyGrantArrayOutput {
   830  	return o.ApplyT(func(v *ObjectCopy) ObjectCopyGrantArrayOutput { return v.Grants }).(ObjectCopyGrantArrayOutput)
   831  }
   832  
   833  // Name of the object once it is in the bucket.
   834  func (o ObjectCopyOutput) Key() pulumi.StringOutput {
   835  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Key }).(pulumi.StringOutput)
   836  }
   837  
   838  // Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.
   839  func (o ObjectCopyOutput) KmsEncryptionContext() pulumi.StringOutput {
   840  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.KmsEncryptionContext }).(pulumi.StringOutput)
   841  }
   842  
   843  // Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn`
   844  func (o ObjectCopyOutput) KmsKeyId() pulumi.StringOutput {
   845  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.KmsKeyId }).(pulumi.StringOutput)
   846  }
   847  
   848  // Returns the date that the object was last modified, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8).
   849  func (o ObjectCopyOutput) LastModified() pulumi.StringOutput {
   850  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.LastModified }).(pulumi.StringOutput)
   851  }
   852  
   853  // 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).
   854  func (o ObjectCopyOutput) Metadata() pulumi.StringMapOutput {
   855  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringMapOutput { return v.Metadata }).(pulumi.StringMapOutput)
   856  }
   857  
   858  // Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`.
   859  func (o ObjectCopyOutput) MetadataDirective() pulumi.StringPtrOutput {
   860  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.MetadataDirective }).(pulumi.StringPtrOutput)
   861  }
   862  
   863  // The [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`.
   864  func (o ObjectCopyOutput) ObjectLockLegalHoldStatus() pulumi.StringOutput {
   865  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ObjectLockLegalHoldStatus }).(pulumi.StringOutput)
   866  }
   867  
   868  // 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`.
   869  func (o ObjectCopyOutput) ObjectLockMode() pulumi.StringOutput {
   870  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ObjectLockMode }).(pulumi.StringOutput)
   871  }
   872  
   873  // 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).
   874  func (o ObjectCopyOutput) ObjectLockRetainUntilDate() pulumi.StringOutput {
   875  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ObjectLockRetainUntilDate }).(pulumi.StringOutput)
   876  }
   877  
   878  // If present, indicates that the requester was successfully charged for the request.
   879  func (o ObjectCopyOutput) RequestCharged() pulumi.BoolOutput {
   880  	return o.ApplyT(func(v *ObjectCopy) pulumi.BoolOutput { return v.RequestCharged }).(pulumi.BoolOutput)
   881  }
   882  
   883  // Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`.
   884  func (o ObjectCopyOutput) RequestPayer() pulumi.StringPtrOutput {
   885  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.RequestPayer }).(pulumi.StringPtrOutput)
   886  }
   887  
   888  // Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`.
   889  func (o ObjectCopyOutput) ServerSideEncryption() pulumi.StringOutput {
   890  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ServerSideEncryption }).(pulumi.StringOutput)
   891  }
   892  
   893  // Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`.
   894  //
   895  // The following arguments are optional:
   896  func (o ObjectCopyOutput) Source() pulumi.StringOutput {
   897  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Source }).(pulumi.StringOutput)
   898  }
   899  
   900  // Specifies the algorithm to use when decrypting the source object (for example, AES256).
   901  func (o ObjectCopyOutput) SourceCustomerAlgorithm() pulumi.StringPtrOutput {
   902  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.SourceCustomerAlgorithm }).(pulumi.StringPtrOutput)
   903  }
   904  
   905  // Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created.
   906  func (o ObjectCopyOutput) SourceCustomerKey() pulumi.StringPtrOutput {
   907  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.SourceCustomerKey }).(pulumi.StringPtrOutput)
   908  }
   909  
   910  // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.
   911  func (o ObjectCopyOutput) SourceCustomerKeyMd5() pulumi.StringPtrOutput {
   912  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.SourceCustomerKeyMd5 }).(pulumi.StringPtrOutput)
   913  }
   914  
   915  // Version of the copied object in the source bucket.
   916  func (o ObjectCopyOutput) SourceVersionId() pulumi.StringOutput {
   917  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.SourceVersionId }).(pulumi.StringOutput)
   918  }
   919  
   920  // Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`.
   921  func (o ObjectCopyOutput) StorageClass() pulumi.StringOutput {
   922  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.StorageClass }).(pulumi.StringOutput)
   923  }
   924  
   925  // Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`.
   926  func (o ObjectCopyOutput) TaggingDirective() pulumi.StringPtrOutput {
   927  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.TaggingDirective }).(pulumi.StringPtrOutput)
   928  }
   929  
   930  // 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.
   931  func (o ObjectCopyOutput) Tags() pulumi.StringMapOutput {
   932  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   933  }
   934  
   935  // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   936  //
   937  // Deprecated: Please use `tags` instead.
   938  func (o ObjectCopyOutput) TagsAll() pulumi.StringMapOutput {
   939  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   940  }
   941  
   942  // Version ID of the newly created copy.
   943  func (o ObjectCopyOutput) VersionId() pulumi.StringOutput {
   944  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.VersionId }).(pulumi.StringOutput)
   945  }
   946  
   947  // Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
   948  func (o ObjectCopyOutput) WebsiteRedirect() pulumi.StringOutput {
   949  	return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.WebsiteRedirect }).(pulumi.StringOutput)
   950  }
   951  
   952  type ObjectCopyArrayOutput struct{ *pulumi.OutputState }
   953  
   954  func (ObjectCopyArrayOutput) ElementType() reflect.Type {
   955  	return reflect.TypeOf((*[]*ObjectCopy)(nil)).Elem()
   956  }
   957  
   958  func (o ObjectCopyArrayOutput) ToObjectCopyArrayOutput() ObjectCopyArrayOutput {
   959  	return o
   960  }
   961  
   962  func (o ObjectCopyArrayOutput) ToObjectCopyArrayOutputWithContext(ctx context.Context) ObjectCopyArrayOutput {
   963  	return o
   964  }
   965  
   966  func (o ObjectCopyArrayOutput) Index(i pulumi.IntInput) ObjectCopyOutput {
   967  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ObjectCopy {
   968  		return vs[0].([]*ObjectCopy)[vs[1].(int)]
   969  	}).(ObjectCopyOutput)
   970  }
   971  
   972  type ObjectCopyMapOutput struct{ *pulumi.OutputState }
   973  
   974  func (ObjectCopyMapOutput) ElementType() reflect.Type {
   975  	return reflect.TypeOf((*map[string]*ObjectCopy)(nil)).Elem()
   976  }
   977  
   978  func (o ObjectCopyMapOutput) ToObjectCopyMapOutput() ObjectCopyMapOutput {
   979  	return o
   980  }
   981  
   982  func (o ObjectCopyMapOutput) ToObjectCopyMapOutputWithContext(ctx context.Context) ObjectCopyMapOutput {
   983  	return o
   984  }
   985  
   986  func (o ObjectCopyMapOutput) MapIndex(k pulumi.StringInput) ObjectCopyOutput {
   987  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ObjectCopy {
   988  		return vs[0].(map[string]*ObjectCopy)[vs[1].(string)]
   989  	}).(ObjectCopyOutput)
   990  }
   991  
   992  func init() {
   993  	pulumi.RegisterInputType(reflect.TypeOf((*ObjectCopyInput)(nil)).Elem(), &ObjectCopy{})
   994  	pulumi.RegisterInputType(reflect.TypeOf((*ObjectCopyArrayInput)(nil)).Elem(), ObjectCopyArray{})
   995  	pulumi.RegisterInputType(reflect.TypeOf((*ObjectCopyMapInput)(nil)).Elem(), ObjectCopyMap{})
   996  	pulumi.RegisterOutputType(ObjectCopyOutput{})
   997  	pulumi.RegisterOutputType(ObjectCopyArrayOutput{})
   998  	pulumi.RegisterOutputType(ObjectCopyMapOutput{})
   999  }