Terraform 0.11

aws_s3_bucket




terraform

aws_s3_bucket

एक S3 बाल्टी संसाधन प्रदान करता है।

उदाहरण उपयोग

निजी बाल्टी w / टैग

resource "aws_s3_bucket" "b" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  tags {
    Name        = "My bucket"
    Environment = "Dev"
  }
}

स्टेटिक वेबसाइट होस्टिंग

resource "aws_s3_bucket" "b" {
  bucket = "s3-website-test.hashicorp.com"
  acl    = "public-read"
  policy = "${file("policy.json")}"

  website {
    index_document = "index.html"
    error_document = "error.html"

    routing_rules = <<EOF
[{
    "Condition": {
        "KeyPrefixEquals": "docs/"
    },
    "Redirect": {
        "ReplaceKeyPrefixWith": "documents/"
    }
}]
EOF
  }
}

कोर का उपयोग करना

resource "aws_s3_bucket" "b" {
  bucket = "s3-website-test.hashicorp.com"
  acl    = "public-read"

  cors_rule {
    allowed_headers = ["*"]
    allowed_methods = ["PUT", "POST"]
    allowed_origins = ["https://s3-website-test.hashicorp.com"]
    expose_headers  = ["ETag"]
    max_age_seconds = 3000
  }
}

वर्जनिंग का उपयोग करना

resource "aws_s3_bucket" "b" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  versioning {
    enabled = true
  }
}

लॉगिंग करने देना

resource "aws_s3_bucket" "log_bucket" {
  bucket = "my-tf-log-bucket"
  acl    = "log-delivery-write"
}

resource "aws_s3_bucket" "b" {
  bucket = "my-tf-test-bucket"
  acl    = "private"

  logging {
    target_bucket = "${aws_s3_bucket.log_bucket.id}"
    target_prefix = "log/"
  }
}

ऑब्जेक्ट जीवनचक्र का उपयोग करना

resource "aws_s3_bucket" "bucket" {
  bucket = "my-bucket"
  acl    = "private"

  lifecycle_rule {
    id      = "log"
    enabled = true

    prefix  = "log/"
    tags {
      "rule"      = "log"
      "autoclean" = "true"
    }

    transition {
      days = 15
      storage_class = "ONEZONE_IA"
    }

    transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    transition {
      days          = 60
      storage_class = "GLACIER"
    }

    expiration {
      days = 90
    }
  }

  lifecycle_rule {
    id      = "tmp"
    prefix  = "tmp/"
    enabled = true

    expiration {
      date = "2016-01-12"
    }
  }
}

resource "aws_s3_bucket" "versioning_bucket" {
  bucket = "my-versioning-bucket"
  acl    = "private"

  versioning {
    enabled = true
  }

  lifecycle_rule {
    prefix  = "config/"
    enabled = true

    noncurrent_version_transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    noncurrent_version_transition {
      days          = 60
      storage_class = "GLACIER"
    }

    noncurrent_version_expiration {
      days = 90
    }
  }
}

प्रतिकृति कॉन्फ़िगरेशन का उपयोग करना

provider "aws" {
  region = "eu-west-1"
}

provider "aws" {
  alias  = "central"
  region = "eu-central-1"
}

resource "aws_iam_role" "replication" {
  name = "tf-iam-role-replication-12345"

  assume_role_policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
POLICY
}

resource "aws_iam_policy" "replication" {
  name = "tf-iam-role-policy-replication-12345"

  policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:GetReplicationConfiguration",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "${aws_s3_bucket.bucket.arn}"
      ]
    },
    {
      "Action": [
        "s3:GetObjectVersion",
        "s3:GetObjectVersionAcl"
      ],
      "Effect": "Allow",
      "Resource": [
        "${aws_s3_bucket.bucket.arn}/*"
      ]
    },
    {
      "Action": [
        "s3:ReplicateObject",
        "s3:ReplicateDelete"
      ],
      "Effect": "Allow",
      "Resource": "${aws_s3_bucket.destination.arn}/*"
    }
  ]
}
POLICY
}

resource "aws_iam_policy_attachment" "replication" {
  name       = "tf-iam-role-attachment-replication-12345"
  roles      = ["${aws_iam_role.replication.name}"]
  policy_arn = "${aws_iam_policy.replication.arn}"
}

resource "aws_s3_bucket" "destination" {
  bucket   = "tf-test-bucket-destination-12345"
  region   = "eu-west-1"

  versioning {
    enabled = true
  }
}

resource "aws_s3_bucket" "bucket" {
  provider = "aws.central"
  bucket   = "tf-test-bucket-12345"
  acl      = "private"
  region   = "eu-central-1"

  versioning {
    enabled = true
  }

  replication_configuration {
    role = "${aws_iam_role.replication.arn}"

    rules {
      id     = "foobar"
      prefix = "foo"
      status = "Enabled"

      destination {
        bucket        = "${aws_s3_bucket.destination.arn}"
        storage_class = "STANDARD"
      }
    }
  }
}

डिफ़ॉल्ट सर्वर साइड एन्क्रिप्शन सक्षम करें

resource "aws_kms_key" "mykey" {
  description             = "This key is used to encrypt bucket objects"
  deletion_window_in_days = 10
}

resource "aws_s3_bucket" "mybucket" {
  bucket = "mybucket"
  server_side_encryption_configuration {
    rule {
      apply_server_side_encryption_by_default {
        kms_master_key_id = "${aws_kms_key.mykey.arn}"
        sse_algorithm     = "aws:kms"
      }
    }
  }
}

तर्क संदर्भ

निम्नलिखित तर्क समर्थित हैं:

  • bucket - (वैकल्पिक, नए संसाधन बल) बाल्टी का नाम। यदि छोड़ दिया जाता है, तो Terraform एक यादृच्छिक, अद्वितीय नाम निर्दिष्ट करेगा।
  • bucket_prefix - (वैकल्पिक, नए संसाधन) निर्दिष्ट उपसर्ग के साथ शुरुआत करने वाला एक अद्वितीय बाल्टी नाम बनाता है। bucket साथ संघर्ष।
  • acl - (वैकल्पिक) डिब्बाबंद एसीएल को लागू करने के लिए। "निजी" के लिए चूक।
  • policy - (वैकल्पिक) एक वैध बाल्टी नीति JSON दस्तावेज़। ध्यान दें कि यदि पॉलिसी दस्तावेज़ पर्याप्त विशिष्ट नहीं है (लेकिन अभी भी मान्य है), टेराफ़ॉर्म पॉलिसी को terraform plan में लगातार बदलते हुए देख सकता है। इस मामले में, कृपया सुनिश्चित करें कि आप नीति के वर्बोज़ / विशिष्ट संस्करण का उपयोग करते हैं।

  • tags - (वैकल्पिक) बाल्टी को असाइन करने के लिए टैग की मैपिंग।

  • force_destroy - (वैकल्पिक, डिफ़ॉल्ट: गलत) एक बूलियन जो इंगित करता है कि सभी वस्तुओं को बाल्टी से हटा दिया जाना चाहिए ताकि बाल्टी को बिना त्रुटि के नष्ट किया जा सके। ये ऑब्जेक्ट पुनर्प्राप्त करने योग्य नहीं हैं।

  • website - (वैकल्पिक) एक वेबसाइट ऑब्जेक्ट (नीचे दस्तावेज)।

  • cors_rule - (वैकल्पिक) क्रॉस- cors_rule रिसोर्स शेयरिंग (नीचे प्रलेखित) का नियम।

  • versioning - (ऑप्शनल) versioning की एक अवस्था (नीचे दस्तावेज)

  • logging - (वैकल्पिक) बाल्टी लॉगिंग की एक सेटिंग (नीचे दस्तावेज)।

  • lifecycle_rule - (वैकल्पिक) ऑब्जेक्ट जीवनचक्र प्रबंधन (नीचे प्रलेखित) का विन्यास।

  • acceleration_status - (वैकल्पिक) एक मौजूदा बाल्टी के त्वरण विन्यास को सेट करता है। Enabled या Suspended किया जा सकता है।

  • region - (वैकल्पिक) यदि निर्दिष्ट किया गया है, तो AWS क्षेत्र को इस बाल्टी में निवास करना चाहिए। अन्यथा, केली द्वारा उपयोग किया जाने वाला क्षेत्र।

  • request_payer - (वैकल्पिक) निर्दिष्ट करता है कि किसे अमेजन S3 डेटा ट्रांसफर का खर्च वहन करना चाहिए। BucketOwner या BucketOwner हो सकता है। डिफ़ॉल्ट रूप से, S3 बाल्टी का मालिक किसी भी डेटा ट्रांसफर की लागतों को उठाना होगा। अधिक जानकारी के लिए रिक्वेस्ट पेकर्स बकेट डेवलपर गाइड देखें।

  • replication_configuration - (वैकल्पिक) प्रतिकृति कॉन्फ़िगरेशन का एक कॉन्फ़िगरेशन (नीचे दस्तावेज़)।

  • server_side_encryption_configuration एन्क्रिप्शन_configuration - (वैकल्पिक) सर्वर-साइड एन्क्रिप्शन कॉन्फ़िगरेशन का एक कॉन्फ़िगरेशन (नीचे दस्तावेज)

website ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • index_document - (आवश्यक है, जब तक कि redirect_all_requests_to का उपयोग करके) अमेज़न S3 इस इंडेक्स डॉक्यूमेंट को तब लौटाता है जब रूट डोमेन या किसी सबफ़ोल्डर से अनुरोध किया जाता है।
  • error_document - (वैकल्पिक) 4XX त्रुटि के मामले में वापस जाने के लिए दस्तावेज़ का एक पूर्ण पथ।
  • redirect_all_requests_to - (वैकल्पिक) इस बाल्टी के लिए सभी वेबसाइट अनुरोधों को पुनर्निर्देशित करने के लिए एक होस्टनाम। होस्टनाम वैकल्पिक रूप से एक प्रोटोकॉल ( http:// या https:// ) के साथ उपसर्ग किया जा सकता है जब अनुरोधों को पुनर्निर्देशित किया जाता है। डिफ़ॉल्ट प्रोटोकॉल है जो मूल अनुरोध में उपयोग किया जाता है।
  • routing_rules - (वैकल्पिक) एक json सरणी जिसमें रूटिंग नियम होते हैं जो पुनर्निर्देशित व्यवहार का वर्णन करते हैं और जब पुनर्निर्देश लागू होते हैं।

CORS ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • allowed_headers (वैकल्पिक) निर्दिष्ट करता है कि कौन से हेडर की अनुमति है।
  • allowed_methods (आवश्यक) निर्दिष्ट करता है कि कौन से तरीकों की अनुमति है। GET , PUT , POST , DELETE या HEAD
  • allowed_origins (आवश्यक) निर्दिष्ट करता है कि कौन से मूल की अनुमति है।
  • expose_headers (वैकल्पिक) प्रतिक्रिया में expose_headers हेडर को निर्दिष्ट करता है।
  • max_age_seconds (वैकल्पिक) सेकंड में समय निर्दिष्ट करता है जो ब्राउज़र max_age_seconds अनुरोध के लिए प्रतिक्रिया को कैश कर सकता है।

versioning वस्तु निम्नलिखित का समर्थन करती है:

  • enabled - (वैकल्पिक) वर्जनिंग सक्षम करें। एक बार जब आप एक बाल्टी को संस्करण-सक्षम कर लेते हैं, तो यह कभी भी बिना पढ़े नहीं लौट सकता। हालाँकि, आप उस बाल्टी पर संस्करण को निलंबित कर सकते हैं।
  • mfa_delete - (वैकल्पिक) MFA हटाने के लिए सक्षम करें या तो Change the versioning state of your bucket या Permanently delete an object version । डिफ़ॉल्ट false

logging ऑब्जेक्ट निम्न का समर्थन करता है:

  • target_bucket - (आवश्यक) बाल्टी का नाम जो लॉग ऑब्जेक्ट प्राप्त करेगा।
  • target_prefix - (वैकल्पिक) लॉग ऑब्जेक्ट्स के लिए एक महत्वपूर्ण उपसर्ग निर्दिष्ट करने के लिए।

lifecycle_rule ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • id - (वैकल्पिक) नियम के लिए विशिष्ट पहचानकर्ता।
  • prefix - (वैकल्पिक) एक या एक से अधिक वस्तुओं की पहचान करने के लिए वस्तु प्रधान उपसर्ग जिसमें नियम लागू होता है।
  • tags - (वैकल्पिक) ऑब्जेक्ट टैग कुंजी और मूल्य निर्दिष्ट करता है।
  • enabled - (आवश्यक) जीवनचक्र नियम स्थिति को निर्दिष्ट करता है।
  • abort_incomplete_multipart_upload_days (वैकल्पिक) मल्टीपार्ट अपलोड आरंभ करने के बाद दिनों की संख्या निर्दिष्ट करता है जब मल्टीपार्ट अपलोड पूरा होना चाहिए।
  • expiration - (वैकल्पिक) वस्तु की अवधि समाप्त होने की अवधि निर्दिष्ट करता है (नीचे प्रलेखित)।
  • transition - (वैकल्पिक) वस्तु के परिवर्तन में एक अवधि निर्दिष्ट करता है (नीचे दस्तावेज)।
  • noncurrent_version_expiration - (वैकल्पिक) निर्दिष्ट करता है जब noncurrent ऑब्जेक्ट संस्करण समाप्त हो जाते हैं (नीचे दस्तावेज़ में)।
  • noncurrent_version_transition - (वैकल्पिक) निर्दिष्ट करता है कि जब noncurrent ऑब्जेक्ट संस्करण परिवर्तन (नीचे दस्तावेज किया गया हो)।

कम से कम एक expiration , transition , noncurrent_version_expiration , noncurrent_version_transition निर्दिष्ट होना चाहिए।

expiration वस्तु निम्नलिखित का समर्थन करती है

  • date (वैकल्पिक) वह तिथि निर्दिष्ट करता है जिसके बाद आप प्रभावी कार्रवाई करना चाहते हैं।
  • days (वैकल्पिक) वस्तु निर्माण के बाद दिनों की संख्या को निर्दिष्ट करता है जब विशिष्ट नियम कार्रवाई प्रभावी होती है।
  • समय सीमा समाप्त हो चुकी एक बाल्टी (संस्करण-सक्षम या संस्करण-निलंबित बाल्टी) पर, आप इस तत्व को जीवनचक्र विन्यास में जोड़ सकते हैं, जो समाप्त हो चुके ऑब्जेक्ट डिलीट मार्करों को हटाने के लिए अमेज़ॅन एस 3 को निर्देशित करते हैं।

transition वस्तु निम्नलिखित का समर्थन करती है

  • date (वैकल्पिक) वह तिथि निर्दिष्ट करता है जिसके बाद आप प्रभावी कार्रवाई करना चाहते हैं।
  • days (वैकल्पिक) वस्तु निर्माण के बाद दिनों की संख्या को निर्दिष्ट करता है जब विशिष्ट नियम कार्रवाई प्रभावी होती है।
  • storage_class (आवश्यक) अमेज़ॅन S3 संग्रहण वर्ग को निर्दिष्ट करता है जिससे आप संक्रमण के लिए ऑब्जेक्ट चाहते हैं। ONEZONE_IA , STANDARD_IA या GLACIER

noncurrent_version_expiration वस्तु निम्नलिखित का समर्थन करती है

  • days (आवश्यक) निर्दिष्ट करता है कि एक वस्तु कितने दिनों तक गैर-समांतर ऑब्जेक्ट संस्करण समाप्त होती है।

noncurrent_version_transition ऑब्जेक्ट निम्न का समर्थन करता है

  • days (आवश्यक) निर्दिष्ट करता है कि एक वस्तु कितने दिनों तक गैर-समांतर ऑब्जेक्ट संस्करण समाप्त होती है।
  • storage_class (आवश्यक) अमेज़ॅन S3 संग्रहण वर्ग को निर्दिष्ट करता है जिससे आप संक्रमण के लिए गैर-संस्करण संस्करणों को चाहते हैं। ONEZONE_IA , STANDARD_IA या GLACIER

replication_configuration ऑब्जेक्ट निम्न का समर्थन करता है:

  • role - (आवश्यक) वस्तुओं की प्रतिकृति बनाते समय अमेज़न S3 के लिए IAM भूमिका का ARN।
  • rules - (आवश्यक) प्रतिकृति के प्रबंधन के नियम निर्दिष्ट करता है (नीचे दस्तावेज)।

rules ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • id - (वैकल्पिक) नियम के लिए विशिष्ट पहचानकर्ता।
  • destination - (आवश्यक) नियम के लिए गंतव्य निर्दिष्ट करता है (नीचे दस्तावेज)।
  • source_selection_criteria - (वैकल्पिक) विशेष वस्तु चयन मानदंड (नीचे प्रलेखित) निर्दिष्ट करता है।
  • prefix - (आवश्यक) वस्तु कीनेम उपसर्ग एक या एक से अधिक वस्तुओं की पहचान करने के लिए जो नियम लागू होता है। पूरे बाल्टी को दोहराने के लिए एक खाली स्ट्रिंग के रूप में सेट करें।
  • status - (आवश्यक) नियम की स्थिति। या तो Enabled या Disabled । यदि स्थिति सक्षम नहीं है तो नियम की अनदेखी की जाती है।

destination वस्तु निम्नलिखित का समर्थन करती है:

  • bucket - (आवश्यक) S3 बाल्टी का ARN, जहाँ आप चाहते हैं कि अमेज़न S3 नियम द्वारा पहचानी गई वस्तु की प्रतिकृतियों को संग्रहीत करे।
  • storage_class - (वैकल्पिक) ऑब्जेक्ट को संग्रहीत करने के लिए उपयोग किए जाने वाले संग्रहण का वर्ग।
  • SSE-KMS प्रतिकृति के लिए replica_kms_key_id - (वैकल्पिक) गंतव्य KMS एन्क्रिप्शन कुंजी ARN। स्रोत चयन मानदंड sse_kms_encrypted_objects के साथ संयोजन में उपयोग किया जाना चाहिए।

source_selection_criteria ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • sse_kms_encrypted_objects - (वैकल्पिक) SSE-KMS एन्क्रिप्टेड ऑब्जेक्ट्स (नीचे दस्तावेज)। यदि निर्दिष्ट किया गया है, replica_kms_key_id destination में replica_kms_key_id को भी निर्दिष्ट किया जाना चाहिए।

sse_kms_encrypted_objects ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • enabled - (आवश्यक) बूलियन जो इंगित करता है कि यह मानदंड सक्षम है।

server_side_encryption_configuration ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • rule - (आवश्यक) डिफ़ॉल्ट कॉन्फ़िगरेशन द्वारा सर्वर-साइड एन्क्रिप्शन के लिए एक एकल ऑब्जेक्ट। (नीचे दस्तावेज)

rule ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • apply_server_side_encryption_by_default - (आवश्यक) डिफ़ॉल्ट रूप से सर्वर-साइड एन्क्रिप्शन सेट करने के लिए एक एकल ऑब्जेक्ट। (नीचे दस्तावेज)

apply_server_side_encryption_by_default ऑब्जेक्ट निम्नलिखित का समर्थन करता है:

  • sse_algorithm - (आवश्यक) सर्वर-साइड एन्क्रिप्शन एल्गोरिथ्म का उपयोग करने के लिए। मान्य मूल्य AES256 और aws:kms
  • kms_master_key_id - (वैकल्पिक) SSE-KMS एन्क्रिप्शन के लिए AWS KMS मास्टर कुंजी ID का उपयोग किया जाता है। इसका उपयोग केवल तब किया जा सकता है जब आप sse_algorithm aws:kms रूप में sse_algorithm का मान सेट करते हैं। डिफ़ॉल्ट तत्व a aws/s3 AWS KMS मास्टर कुंजी का उपयोग किया जाता है यदि यह तत्व अनुपस्थित है, जबकि sse_algorithm aws:kms

संदर्भ संदर्भित करता है

उपरोक्त सभी तर्कों के अलावा, निम्नलिखित विशेषताएँ निर्यात की जाती हैं:

  • id - बाल्टी का नाम।
  • arn - बाल्टी का ARN। प्रारूप arn:aws:s3:::bucketname
  • bucket_domain_name - बाल्टी डोमेन नाम। bucketname.s3.amazonaws.com
  • bucket_regional_domain_name - बाल्टी क्षेत्र-विशिष्ट डोमेन नाम। क्षेत्र नाम सहित बाल्टी डोमेन नाम, प्रारूप के लिए कृपया here देखें। नोट: AWS CloudFront S3 मूल-विशिष्ट समापन बिंदु को S3 मूल बनाते समय निर्दिष्ट करने की अनुमति देता है, यह CloudFront से S3 मूल URL पर पुनर्निर्देशित समस्याओं को रोक देगा।
  • hosted_zone_id - इस बकेट के क्षेत्र के लिए रूट 53 होस्टेड ज़ोन आईडी
  • region - AWS क्षेत्र इस बाल्टी में रहता है।
  • website_endpoint - वेबसाइट एंडपॉइंट, अगर बाल्टी को वेबसाइट से कॉन्फ़िगर किया गया है। यदि नहीं, तो यह एक रिक्त स्ट्रिंग होगी।
  • website_domain - यदि वेबसाइट किसी वेबसाइट के साथ कॉन्फ़िगर की जाती है, तो वेबसाइट का डोमेन समापन बिंदु होता है। यदि नहीं, तो यह एक रिक्त स्ट्रिंग होगी। इसका उपयोग रूट 53 उर्फ ​​रिकॉर्ड बनाने के लिए किया जाता है।

आयात

S3 बाल्टी को बाल्टी का उपयोग करके आयात किया जा सकता है, जैसे

$ terraform import aws_s3_bucket.bucket bucket-name