Provides a S3 bucket object resource.

Example Usage

Uploading a file to a bucket

resource "aws_s3_bucket_object" "object" {
    bucket = "your_bucket_name"
    key = "new_object_key"
    source = "path/to/file"
    etag = "${md5(file("path/to/file"))}"

Encrypting with KMS Key

resource "aws_kms_key" "examplekms" {
  description             = "KMS key 1"
  deletion_window_in_days = 7

resource "aws_s3_bucket" "examplebucket" {
  bucket = "examplebuckettftest"
  acl    = "private"

resource "aws_s3_bucket_object" "examplebucket_object" {
  key        = "someobject"
  bucket     = "${aws_s3_bucket.examplebucket.bucket}"
  source     = "index.html"
  kms_key_id = "${aws_kms_key.examplekms.arn}"

Argument Reference

The following arguments are supported:

  • bucket - (Required) The name of the bucket to put the file in.
  • key - (Required) The name of the object once it is in the bucket.
  • source - (Required) The path to the source file being uploaded to the bucket.
  • content - (Required unless source given) The literal content being uploaded to the bucket.
  • acl - (Optional) The canned ACL to apply. Defaults to "private".
  • cache_control - (Optional) Specifies caching behavior along the request/reply chain Read w3c cache_control for further details.
  • content_disposition - (Optional) Specifies presentational information for the object. Read wc3 content_disposition for further information.
  • content_encoding - (Optional) 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 for further information.
  • content_language - (Optional) The language the content is in e.g. en-US or en-GB.
  • content_type - (Optional) A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input.
  • storage_class - (Optional) Specifies the desired Storage Class for the object. Can be either "STANDARD", "REDUCED_REDUNDANCY", or "STANDARD_IA". Defaults to "STANDARD".
  • etag - (Optional) Used to trigger updates. The only meaningful value is ${md5(file("path/to/file"))}. This attribute is not compatible with kms_key_id
  • kms_key_id - (Optional) Specifies the AWS KMS Key ID to use for object encryption. This value is a fully qualified ARN of the KMS Key. If using aws_kms_key, use the exported arn attribute:
    `kms_key_id = "${}"`

Either source or content must be provided to specify the bucket content. These two arguments are mutually-exclusive.

Attributes Reference

The following attributes are exported

  • id - the key of the resource supplied above
  • etag - the ETag generated for the object (an MD5 sum of the object content).
  • version_id - A unique version ID value for the object, if bucket versioning is enabled.