โมดูล Terraform ซึ่งสร้าง Bucket S3 บน AWS ด้วยคุณสมบัติทั้งหมด (หรือเกือบทั้งหมด) ที่จัดทำโดยผู้ให้บริการ Terraform AWS
คุณสมบัติของการกำหนดค่าถัง S3 เหล่านี้ได้รับการสนับสนุน:
module "s3_bucket" {
source = " terraform-aws-modules/s3-bucket/aws "
bucket = " my-s3-bucket "
acl = " private "
control_object_ownership = true
object_ownership = " ObjectWriter "
versioning = {
enabled = true
}
}
module "s3_bucket_for_logs" {
source = " terraform-aws-modules/s3-bucket/aws "
bucket = " my-s3-bucket-for-logs "
acl = " log-delivery-write "
# Allow deletion of non-empty bucket
force_destroy = true
control_object_ownership = true
object_ownership = " ObjectWriter "
attach_elb_log_delivery_policy = true
}
module "s3_bucket_for_logs" {
source = " terraform-aws-modules/s3-bucket/aws "
bucket = " my-s3-bucket-for-logs "
acl = " log-delivery-write "
# Allow deletion of non-empty bucket
force_destroy = true
control_object_ownership = true
object_ownership = " ObjectWriter "
attach_elb_log_delivery_policy = true # Required for ALB logs
attach_lb_log_delivery_policy = true # Required for ALB/NLB logs
}
บางครั้งคุณต้องมีวิธีสร้างทรัพยากร S3 อย่างมีเงื่อนไข แต่ Terraform ไม่อนุญาตให้ใช้ count
ภายในบล็อก module
ดังนั้นวิธีแก้ปัญหาคือการระบุอาร์กิวเมนต์ create_bucket
# This S3 bucket will not be created
module "s3_bucket" {
source = " terraform-aws-modules/s3-bucket/aws "
create_bucket = false
# ... omitted
}
variable "..." { type = any }
มีข้อผิดพลาด #1211 ใน Terragrunt ที่เกี่ยวข้องกับวิธีการที่ตัวแปรประเภท any
ถูกส่งผ่านไปยัง Terraform
โมดูลนี้แก้ปัญหานี้ได้โดยสนับสนุน jsonencode()
-String นอกเหนือจากประเภทที่คาดหวัง ( list
หรือ map
)
ใน terragrunt.hcl
คุณสามารถเขียน:
inputs = {
bucket = " foobar " # `bucket` has type `string`, no need to jsonencode()
cors_rule = jsonencode ([ ... ]) # `cors_rule` has type `any`, so `jsonencode()` is required
}
ผู้ใช้โมดูล Terraform นี้สามารถสร้างทรัพยากรที่คล้ายกันหลายอย่างโดยใช้ for_each
meta-argument ภายในบล็อก module
ซึ่งมีอยู่ใน Terraform 0.13
ผู้ใช้ Terragrunt สามารถบรรลุผลลัพธ์ที่คล้ายกันโดยใช้โมดูลที่มีให้ในไดเรกทอรี Wrappers หากพวกเขาต้องการลดจำนวนไฟล์การกำหนดค่า
ชื่อ | รุ่น |
---|---|
รูปปั้น | > = 1.0 |
aws | > = 5.70 |
ชื่อ | รุ่น |
---|---|
aws | > = 5.70 |
ไม่มีโมดูล
ชื่อ | พิมพ์ |
---|---|
aws_s3_bucket. นี้ | ทรัพยากร |
AWS_S3_BUCKET_ACCELETER_CONFIGURATION นี่ | ทรัพยากร |
AWS_S3_BUCKET_ACL.HIS | ทรัพยากร |
AWS_S3_BUCKET_ANALYTICS_CONFIGURATION นี้ | ทรัพยากร |
aws_s3_bucket_cors_configuration.his | ทรัพยากร |
AWS_S3_BUCKET_INTELLIGING_TIERING_CONFIGURATION นี้ | ทรัพยากร |
aws_s3_bucket_inventory.his | ทรัพยากร |
AWS_S3_BUCKET_LIFECYCLE_CONFIGURATION นี้ | ทรัพยากร |
aws_s3_bucket_logging.his | ทรัพยากร |
AWS_S3_BUCKET_METRIC. นี้ | ทรัพยากร |
AWS_S3_BUCKET_OBJECT_LOCK_CONFIGURATION นี้ | ทรัพยากร |
aws_s3_bucket_ownership_controls.his | ทรัพยากร |
AWS_S3_BUCKET_POLICY.HIS | ทรัพยากร |
AWS_S3_BUCKET_PUBLIC_ACCESS_BLOCK.HIS | ทรัพยากร |
aws_s3_bucket_replication_configuration.his | ทรัพยากร |
aws_s3_bucket_request_payment_configuration.his | ทรัพยากร |
aws_s3_bucket_server_side_encryption_configuration.his | ทรัพยากร |
aws_s3_bucket_versioning.his | ทรัพยากร |
AWS_S3_BUCKET_WEBSITE_CONFIGURATION นี่ | ทรัพยากร |
aws_caller_identity.current | แหล่งข้อมูล |
aws_canonical_user_id.his | แหล่งข้อมูล |
aws_iam_policy_document.access_log_delivery | แหล่งข้อมูล |
aws_iam_policy_document.combined | แหล่งข้อมูล |
aws_iam_policy_document.deny_incorrect_encryption_headers | แหล่งข้อมูล |
aws_iam_policy_document.deny_incorrect_kms_key_sse | แหล่งข้อมูล |
aws_iam_policy_document.deny_insecure_transport | แหล่งข้อมูล |
aws_iam_policy_document.deny_unencrypted_object_uploads | แหล่งข้อมูล |
aws_iam_policy_document.elb_log_delivery | แหล่งข้อมูล |
aws_iam_policy_document.inventory_and_analytics_destination_policy | แหล่งข้อมูล |
aws_iam_policy_document.lb_log_delivery | แหล่งข้อมูล |
aws_iam_policy_document.require_latest_tls | แหล่งข้อมูล |
aws_partition.current | แหล่งข้อมูล |
aws_region.current | แหล่งข้อมูล |
ชื่อ | คำอธิบาย | พิมพ์ | ค่าเริ่มต้น | ที่จำเป็น |
---|---|---|---|---|
Acceleration_status | (ไม่บังคับ) ตั้งค่าการกำหนดค่าเร่งความเร็วของถังที่มีอยู่ สามารถเปิดใช้งานหรือระงับ | string | null | เลขที่ |
access_log_delivery_policy_source_accounts | (ไม่บังคับ) รายการรหัสบัญชี AWS ควรได้รับอนุญาตให้ส่งบันทึกการเข้าถึงไปยังถังนี้ | list(string) | [] | เลขที่ |
access_log_delivery_policy_source_buckets | (ไม่บังคับ) รายการ S3 Bucket Arns ซึ่งควรได้รับอนุญาตให้ส่งบันทึกการเข้าถึงไปยังถังนี้ | list(string) | [] | เลขที่ |
ACL | (ไม่บังคับ) ACL กระป๋องที่จะใช้ ความขัดแย้งกับ grant | string | null | เลขที่ |
อนุญาต _kms_key_arn | คีย์ Arn of KMS ซึ่งควรได้รับอนุญาตใน Putobject | string | null | เลขที่ |
analytics_configuration | แผนที่ที่มีการกำหนดค่าการวิเคราะห์ถัง | any | {} | เลขที่ |
analytics_self_source_destination | ไม่ว่าจะเป็นถังแหล่งวิเคราะห์หรือไม่ก็เป็นถังปลายทาง | bool | false | เลขที่ |
analytics_source_account_id | รหัสบัญชีแหล่งวิเคราะห์ | string | null | เลขที่ |
analytics_source_bucket_arn | Bucket Source Arn แหล่งวิเคราะห์ | string | null | เลขที่ |
แนบ _access_log_delivery_policy | ควบคุมหากมีการแนบนโยบายการจัดส่งบันทึกการเข้าถึง S3 | bool | false | เลขที่ |
แนบ _analytics_destination_policy | การควบคุมหาก S3 Bucket ควรมีนโยบายปลายทางการวิเคราะห์ถัง | bool | false | เลขที่ |
attach_deny_incorrect_encryption_headers | การควบคุมหากถัง S3 ควรปฏิเสธนโยบายส่วนหัวการเข้ารหัสที่ไม่ถูกต้อง | bool | false | เลขที่ |
attach_deny_incorrect_kms_key_sse | ควบคุมหากนโยบายถัง S3 ควรปฏิเสธการใช้งาน KMS KY ที่ไม่ถูกต้อง SSE | bool | false | เลขที่ |
แนบ _deny_insecure_transport_policy | การควบคุมหาก S3 Bucket ควรปฏิเสธนโยบายการขนส่งที่ไม่ใช่ SSL | bool | false | เลขที่ |
attach_deny_unencrypted_object_uploads | การควบคุมหากถัง S3 ควรปฏิเสธนโยบายอัพโหลดวัตถุที่ไม่ได้เข้ารหัส | bool | false | เลขที่ |
attach_elb_log_delivery_policy | ควบคุมหากมีการแนบนโยบายการจัดส่งบันทึก ELB | bool | false | เลขที่ |
แนบ _inventory_destination_policy | การควบคุมหาก S3 Bucket ควรมีนโยบายปลายทางสินค้าคงคลังที่แนบมา | bool | false | เลขที่ |
แนบ _lb_log_delivery_policy | การควบคุมหาก S3 Bucket ควรมีนโยบายการจัดส่งบันทึก ALB/NLB | bool | false | เลขที่ |
แนบ _policy | การควบคุมหาก S3 Bucket ควรมีนโยบายที่เก็บข้อมูล (ตั้งค่าเป็น true เพื่อใช้มูลค่าของ policy เป็นนโยบาย Bucket) | bool | false | เลขที่ |
แนบ _public_policy | การควบคุมหากผู้ใช้กำหนดนโยบายสาธารณะสาธารณะที่กำหนดไว้ (ตั้งค่าเป็น false เพื่อให้อัปสตรีมใช้ค่าเริ่มต้นกับถัง) | bool | true | เลขที่ |
แนบ _require_latest_tls_policy | ควบคุมหาก Bucket S3 ควรต้องการ TLS เวอร์ชันล่าสุด | bool | false | เลขที่ |
block_public_acls | ไม่ว่าจะเป็น Amazon S3 ควรบล็อก ACL สาธารณะสำหรับถังนี้หรือไม่ | bool | true | เลขที่ |
block_public_policy | ไม่ว่าจะเป็น Amazon S3 ควรปิดกั้นนโยบายสาธารณะสำหรับถังนี้หรือไม่ | bool | true | เลขที่ |
ถัง | (ไม่บังคับบังคับทรัพยากรใหม่) ชื่อของถัง หากละเว้น Terraform จะกำหนดชื่อแบบสุ่มและไม่ซ้ำกัน | string | null | เลขที่ |
bucket_prefix | (ไม่บังคับบังคับทรัพยากรใหม่) สร้างชื่อถังที่ไม่ซ้ำกันซึ่งเริ่มต้นด้วยคำนำหน้าที่ระบุ ความขัดแย้งกับถัง | string | null | เลขที่ |
control_object_ownership | ไม่ว่าจะจัดการการควบคุมความเป็นเจ้าของถัง S3 บนถังนี้หรือไม่ | bool | false | เลขที่ |
cors_rule | รายการแผนที่ที่มีกฎสำหรับการแบ่งปันทรัพยากรข้ามต้น | any | [] | เลขที่ |
create_bucket | ควบคุมหากควรสร้างถัง S3 | bool | true | เลขที่ |
คาดหวัง _bucket_owner | รหัสบัญชีของเจ้าของถังที่คาดหวัง | string | null | เลขที่ |
force_destroy | (เป็นทางเลือก, ค่าเริ่มต้น: เท็จ) บูลีนที่ระบุวัตถุทั้งหมดควรถูกลบออกจากถังเพื่อให้สามารถทำลายถังโดยไม่มีข้อผิดพลาด วัตถุเหล่านี้ไม่สามารถกู้คืนได้ | bool | false | เลขที่ |
ยินยอม | การให้นโยบาย ACL ความขัดแย้งกับ acl | any | [] | เลขที่ |
ไม่สนใจ _public_acls | ไม่ว่า Amazon S3 ควรเพิกเฉยต่อ ACL สาธารณะสำหรับถังนี้หรือไม่ | bool | true | เลขที่ |
Intelligent_Tiering | แผนที่ที่มีการกำหนดค่าระดับอัจฉริยะ | any | {} | เลขที่ |
Inventory_configuration | แผนที่ที่มีการกำหนดค่าสินค้าคงคลัง S3 | any | {} | เลขที่ |
Inventory_self_source_destination | ไม่ว่าจะเป็นถังแหล่งสินค้าคงคลังหรือไม่ก็เป็นถังปลายทาง | bool | false | เลขที่ |
Inventory_source_account_id | รหัสบัญชีแหล่งข้อมูลสินค้าคงคลัง | string | null | เลขที่ |
Inventory_source_bucket_arn | แหล่งข้อมูลสินค้าคงคลัง ARN | string | null | เลขที่ |
lifecycle_rule | รายการแผนที่ที่มีการกำหนดค่าการจัดการวงจรชีวิตวัตถุ | any | [] | เลขที่ |
การตัดไม้ | แผนที่ที่มีการกำหนดค่าการบันทึกการเข้าถึงที่เก็บข้อมูล | any | {} | เลขที่ |
Metric_configuration | แผนที่ที่มีการกำหนดค่าตัวชี้วัดแบบถัง | any | [] | เลขที่ |
object_lock_configuration | แผนที่ที่มีการกำหนดค่าการล็อควัตถุ S3 | any | {} | เลขที่ |
object_lock_enabled | ไม่ว่าจะเปิดใช้งานถัง S3 ที่เปิดใช้งานการล็อควัตถุหรือไม่ | bool | false | เลขที่ |
Object_ownership | การเป็นเจ้าของวัตถุ ค่าที่ถูกต้อง: BucketOwnerEnforced, BucketownerPreferred หรือ Objectwriter 'Bucketownerenforced': ACLs ถูกปิดใช้งานและเจ้าของถังเป็นเจ้าของโดยอัตโนมัติและสามารถควบคุมวัตถุทุกชิ้นในถังได้อย่างเต็มที่ 'BucketOwnerPreferred': วัตถุที่อัปโหลดไปยังการเปลี่ยนความเป็นเจ้าของของ Bucket ไปยังเจ้าของ Bucket หากวัตถุถูกอัปโหลดด้วย ACL กระป๋องของเจ้าของถัง 'ObjectWriter': บัญชีการอัปโหลดจะเป็นเจ้าของวัตถุหากวัตถุถูกอัปโหลดด้วย ACL กระป๋องที่เป็นเจ้าของที่มีการควบคุม | string | "BucketOwnerEnforced" | เลขที่ |
เจ้าของ | ชื่อที่แสดงและ ID ของเจ้าของถัง ความขัดแย้งกับ acl | map(string) | {} | เลขที่ |
นโยบาย | (ไม่บังคับ) เอกสารนโยบาย JSON ที่ถูกต้อง โปรดทราบว่าหากเอกสารนโยบายไม่เฉพาะเจาะจง (แต่ยังคงใช้ได้) Terraform อาจดูนโยบายว่ามีการเปลี่ยนแปลงอย่างต่อเนื่องในแผน Terraform ในกรณีนี้โปรดตรวจสอบให้แน่ใจว่าคุณใช้นโยบาย verbose/เฉพาะของนโยบาย สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างเอกสารนโยบาย AWS IAM ด้วย Terraform โปรดดูคู่มือเอกสารนโยบาย AWS IAM | string | null | เลขที่ |
putin_khuylo | คุณเห็นด้วยหรือไม่ว่าปูตินไม่เคารพอำนาจอธิปไตยของยูเครนและความสมบูรณ์ของดินแดน? ข้อมูลเพิ่มเติม: https://en.wikipedia.org/wiki/putin_khuylo! | bool | true | เลขที่ |
การจำลองแบบ _configuration | แผนที่ที่มีการกำหนดค่าการจำลองแบบข้ามภูมิภาค | any | {} | เลขที่ |
request_payer | (ไม่บังคับ) ระบุว่าใครควรแบกรับค่าใช้จ่ายในการถ่ายโอนข้อมูล Amazon S3 สามารถเป็นทั้ง Bucketowner หรือผู้ร้องขอ โดยค่าเริ่มต้นเจ้าของถัง S3 จะต้องเสียค่าใช้จ่ายในการถ่ายโอนข้อมูลใด ๆ ดูที่ผู้ร้องขอจ่ายคู่มือนักพัฒนา Buckets สำหรับข้อมูลเพิ่มเติม | string | null | เลขที่ |
จำกัด _public_buckets | ไม่ว่าจะเป็น Amazon S3 ควร จำกัด นโยบายถังสาธารณะสำหรับถังนี้หรือไม่ | bool | true | เลขที่ |
server_side_encryption_configuration | แผนที่ที่มีการกำหนดค่าการเข้ารหัสฝั่งเซิร์ฟเวอร์ | any | {} | เลขที่ |
แท็ก | (ไม่บังคับ) การแมปของแท็กเพื่อกำหนดให้กับถัง | map(string) | {} | เลขที่ |
transition_default_minimum_object_size | พฤติกรรมขนาดวัตถุขั้นต่ำเริ่มต้นที่ใช้กับการกำหนดค่าวงจรชีวิต ค่าที่ถูกต้อง: all_storage_classes_128k (ค่าเริ่มต้น), varies_by_storage_class | string | null | เลขที่ |
การกำหนดเวอร์ชัน | แผนที่ที่มีการกำหนดค่าเวอร์ชัน | map(string) | {} | เลขที่ |
เว็บไซต์ | แผนที่ที่มีโฮสติ้งเว็บไซต์แบบคงที่หรือเปลี่ยนเส้นทางการกำหนดค่า | any | {} | เลขที่ |
ชื่อ | คำอธิบาย |
---|---|
s3_bucket_arn | อาร์นของถัง จะเป็นรูปแบบ arn: aws: s3 ::: bucketname |
s3_bucket_bucket_domain_name | ชื่อโดเมนถัง จะเป็นรูปแบบ bucketName.s3.amazonaws.com |
s3_bucket_bucket_regional_domain_name | ชื่อโดเมนเฉพาะภูมิภาคของถัง ชื่อโดเมนที่เก็บข้อมูลรวมถึงชื่อภูมิภาคโปรดอ้างอิงที่นี่สำหรับรูปแบบ หมายเหตุ: AWS CloudFront อนุญาตให้ระบุจุดสิ้นสุดเฉพาะภูมิภาค S3 เมื่อสร้างต้นกำเนิด S3 มันจะป้องกันการเปลี่ยนเส้นทางจาก CloudFront ไปยัง URL Origin S3 |
s3_bucket_hosted_zone_id | Route 53 Hosted Zone ID สำหรับภูมิภาคของถังนี้ |
s3_bucket_id | ชื่อของถัง |
s3_bucket_lifecycle_configuration_rules | กฎวงจรชีวิตของถังหากมีการกำหนดค่าถังด้วยกฎวงจรชีวิต ถ้าไม่นี่จะเป็นสตริงที่ว่างเปล่า |
s3_bucket_policy | นโยบายของถังหากมีการกำหนดค่าถังด้วยนโยบาย ถ้าไม่นี่จะเป็นสตริงที่ว่างเปล่า |
s3_bucket_region | ภูมิภาค AWS ถังนี้อยู่ใน |
s3_bucket_website_domain | โดเมนของจุดสิ้นสุดของเว็บไซต์หากมีการกำหนดค่าถังด้วยเว็บไซต์ ถ้าไม่นี่จะเป็นสตริงที่ว่างเปล่า สิ่งนี้ใช้เพื่อสร้างเร็กคอร์ดนามแฝงเส้นทาง 53 |
s3_bucket_website_endpoint | จุดสิ้นสุดของเว็บไซต์หากมีการกำหนดค่าถังด้วยเว็บไซต์ ถ้าไม่นี่จะเป็นสตริงที่ว่างเปล่า |
โมดูลได้รับการดูแลโดย Anton Babenko ด้วยความช่วยเหลือจากผู้มีส่วนร่วมที่ยอดเยี่ยมเหล่านี้
Apache 2 ได้รับใบอนุญาต ดูใบอนุญาตสำหรับรายละเอียดทั้งหมด