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许可。有关详细信息,请参见许可证。