terraform aws s3 bucket
v4.2.2
Terraform模塊在Terraform AWS提供商提供的所有(或幾乎所有)功能的AWS上創建S3存儲桶。
支持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不允許在module
塊內使用count
,因此解決方案是指定參數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 }
Terragrunt中有一個錯誤#1211與將any
類型變量傳遞給Terraform的方式有關。
此模塊除了預期類型( list
或map
)外支持jsonencode()
- 弦來解決此問題。
在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模塊的用戶可以在module
塊中使用for_each
meta-argument創建多個類似的資源,該模塊塊中可在Terraform 0.13中使用。
Terragrunt的用戶可以使用包裝器目錄中提供的模塊(如果他們更喜歡減少配置文件量)來實現相似的結果。
姓名 | 版本 |
---|---|
Terraform | > = 1.0 |
AWS | > = 5.70 |
姓名 | 版本 |
---|---|
AWS | > = 5.70 |
沒有模塊。
姓名 | 類型 |
---|---|
aws_s3_bucket.this | 資源 |
aws_s3_bucket_accelerate_configuration.this | 資源 |
aws_s3_bucket_acl.this | 資源 |
aws_s3_bucket_analytics_configuration.this | 資源 |
aws_s3_bucket_cors_configuration.this | 資源 |
aws_s3_bucket_intelligent_tiering_configuration.this | 資源 |
aws_s3_bucket_inventory.this | 資源 |
aws_s3_bucket_lifecycle_configuration.this | 資源 |
aws_s3_bucket_logging.this | 資源 |
aws_s3_bucket_metric.this | 資源 |
aws_s3_bucket_object_lock_configuration.this | 資源 |
aws_s3_bucket_ownhips_controls.this | 資源 |
aws_s3_bucket_policy.this | 資源 |
aws_s3_bucket_public_access_block.this | 資源 |
aws_s3_bucket_replication_configuration.this | 資源 |
aws_s3_bucket_request_payment_configuration.this | 資源 |
AWS_S3_BUCKET_SERVER_SIDE_ENCRYPTINE_CONFIGURATION.THIS | 資源 |
aws_s3_bucket_versioning.this | 資源 |
aws_s3_bucket_website_configuration.this | 資源 |
AWS_CALLER_IDENTITY.CURRENT | 數據源 |
aws_canonical_user_id.this | 數據源 |
aws_iam_policy_document.access_log_delivery | 數據源 |
aws_iam_policy_document.combined | 數據源 |
AWS_IAM_POLICY_DOCUMEMER.DENY_INCORRECT_ENCRYPTINT_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帳戶ID的列表將訪問日誌傳遞到此存儲桶。 | list(string) | [] | 不 |
access_log_delivery_policy_source_buckets | (可選)S3存儲桶ARN的列表,應允許將訪問日誌傳遞到此存儲桶。 | list(string) | [] | 不 |
ACL | (可選)罐裝ACL塗抹。與grant 發生衝突 | string | null | 不 |
允許的_kms_key_arn | 應該在PutoBject中允許的KMS密鑰的Arn | string | null | 不 |
Analytics_configuration | 包含Bucket Analytics配置的地圖。 | any | {} | 不 |
Analytics_sers_source_destination | 分析源存儲桶是否也是目標存儲桶。 | bool | false | 不 |
Analytics_source_account_id | 分析源帳戶ID。 | string | null | 不 |
Analytics_source_bucket_arn | 分析源存儲桶ARN。 | string | null | 不 |
tacte_access_log_delivery_policy | 控件是否應隨附S3訪問日誌傳遞策略 | bool | false | 不 |
tacter_analytics_destination_policy | 控制是否應附上S3存儲桶分析目標策略。 | bool | false | 不 |
tacter_deny_incorrect_encryption_headers | 控制是否應拒絕附加不正確的加密標題策略。 | bool | false | 不 |
tacter_deny_incorrect_kms_key_sse | 控制是否應拒絕使用不正確的KMS密鑰SSE的使用。 | bool | false | 不 |
thack_deny_insecure_transport_policy | 控制S3存儲桶是否應拒絕附加非SSL運輸政策 | bool | false | 不 |
tacte_deny_unencrypted_object_uploads | 控制S3存儲桶是否應拒絕未加密的對像上傳策略。 | bool | false | 不 |
tacte_elb_log_delivery_policy | 控件是否應附上ELB日誌交付策略 | bool | false | 不 |
tacter_inventory_destination_policy | 控制S3存儲桶是否應附上存儲庫庫存策略。 | bool | false | 不 |
tacte_lb_log_delivery_policy | 控件是否應隨附ALB/NLB日誌交付策略 | bool | false | 不 |
tacte_policy | 控制S3存儲桶是否應附有存儲桶策略(將policy 的價值作為存儲措施策略設置為true ) | bool | false | 不 |
tacte_public_policy | 控件是否將附加用戶定義的公共存儲桶策略(設置為false 以允許上游將默認值應用於存儲桶) | bool | true | 不 |
tacte_require_latest_tls_policy | 控制是否需要S3存儲桶,需要最新版本的TLS | bool | false | 不 |
block_public_acls | 亞馬遜S3是否應該阻止此存儲桶的公共ACL。 | bool | true | 不 |
block_public_policy | 亞馬遜S3是否應阻止此存儲桶的公共水桶政策。 | bool | true | 不 |
桶 | (可選,強制新資源)存儲桶的名稱。如果省略,Terraform將分配一個隨機的唯一名稱。 | string | null | 不 |
bucket_prefix | (可選,強制新資源)創建一個獨特的存儲桶名,從指定的前綴開始。與水桶發生衝突。 | string | null | 不 |
control_object_ownership | 是否要在此存儲桶上管理S3存儲桶所有權控件。 | bool | false | 不 |
cors_rule | 包含跨原始資源共享規則的地圖列表。 | any | [] | 不 |
create_bucket | 控制是否應該創建S3存儲桶 | bool | true | 不 |
Expect_bucket_owner | 預期存儲桶所有者的帳戶ID | string | null | 不 |
force_destroy | (可選,默認值:false)指示所有對象的布爾值應從桶中刪除,以便可以在沒有錯誤的情況下銷毀存儲桶。這些對像是無法恢復的。 | bool | false | 不 |
授予 | ACL政策贈款。與acl 衝突 | any | [] | 不 |
ignore_public_acls | 亞馬遜S3是否應該忽略該水庫的公共ACL。 | bool | true | 不 |
imployt_tiering | 包含智能分層配置的地圖。 | any | {} | 不 |
inventory_configuration | 包含S3庫存配置的地圖。 | any | {} | 不 |
stumpory_sers_source_destination | 庫存源存儲庫是否也是目標存儲庫。 | bool | false | 不 |
stumpory_source_account_id | 庫存源帳戶ID。 | string | null | 不 |
stabtory_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”:ACL被禁用,並且存儲桶所有者自動擁有並對存儲桶中的每個對象具有完全控制。 “ bucketownerpreferred”:如果對像被上傳到Bucket-Allow-Full-Control-Control罐頭ACL,則將對像上傳到存儲桶所有權。 “ ObjectWriter”:如果對象與Bucket-Allow-Full-Control ACL罐裝ACL上傳,則上傳帳戶將擁有對象。 | string | "BucketOwnerEnforced" | 不 |
所有者 | 存儲業所有者的顯示名稱和ID。與acl 衝突 | map(string) | {} | 不 |
政策 | (可選)有效的存儲策略JSON文檔。請注意,如果策略文件不夠具體(但仍然有效),那麼Terraform可能會在Terraform計劃中不斷變化。在這種情況下,請確保您使用策略的詳細/特定版本。有關使用Terraform構建AWS IAM政策文件的更多信息,請參見《 AWS IAM政策文件指南》。 | string | null | 不 |
putin_khuylo | 您是否同意普京不尊重烏克蘭的主權和領土完整?更多信息:https://en.wikipedia.org/wiki/putin_khuylo! | bool | true | 不 |
replication_configuration | 包含跨區域複製配置的地圖。 | any | {} | 不 |
request_payer | (可選)指定誰應承擔亞馬遜S3數據傳輸的成本。可以是存儲者或請求者。默認情況下,S3存儲桶的所有者將產生任何數據傳輸的成本。有關更多信息,請參見請求者支付存儲桶開發人員指南。 | string | null | 不 |
drillct_public_buckets | 亞馬遜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_rigional_domain_name | 鏟斗區域特定域名。包含區域名稱的存儲域名名稱,請參閱此處的格式。注意:AWS CloudFront允許在創建S3 Origin時指定S3區域特定端點,它將防止從CloudFront到S3 Origin URL重定向問題。 |
s3_bucket_hosted_zone_id | 53號公路託管了該水桶區域的區域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許可。有關詳細信息,請參見許可證。