Módulo Terraform que crea S3 Bucket en AWS con todas (o casi todas) características proporcionadas por el proveedor de Terraform AWS.
Se admiten estas características de las configuraciones de cubo 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
}
A veces debe tener una forma de crear recursos S3 condicionalmente, pero Terraform no permite usar el bloque module
count
Inside, por lo que la solución es especificar el argumento 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 }
Hay un error #1211 en TerraGrunt relacionado con la forma en que las variables de any
se pasan a Terraform.
Este módulo resuelve este problema al admitir jsonencode()
-String además del tipo esperado ( list
o map
).
En terragrunt.hcl
puedes escribir:
inputs = {
bucket = " foobar " # `bucket` has type `string`, no need to jsonencode()
cors_rule = jsonencode ([ ... ]) # `cors_rule` has type `any`, so `jsonencode()` is required
}
Los usuarios de este módulo de Terraform pueden crear múltiples recursos similares utilizando el meta-argumento for_each
dentro del bloque module
que estuvo disponible en Terraform 0.13.
Los usuarios de TerraGrunt pueden lograr resultados similares mediante el uso de módulos proporcionados en el directorio de envoltorios, si prefieren reducir la cantidad de archivos de configuración.
Nombre | Versión |
---|---|
terraformado | > = 1.0 |
AWS | > = 5.70 |
Nombre | Versión |
---|---|
AWS | > = 5.70 |
Sin módulos.
Nombre | Tipo |
---|---|
AWS_S3_BUCKET.THIS | recurso |
AWS_S3_BUCKET_ACCELATE_CONFIGURATION.THIS | recurso |
AWS_S3_BUCKET_ACL.THIS | recurso |
aws_s3_bucket_analytics_configuration.THIS | recurso |
AWS_S3_BUCKET_CORS_CONFIGURATION.THIS | recurso |
aws_s3_bucket_intelligent_tiering_configuration.THIS | recurso |
aws_s3_bucket_inventory.THIS | recurso |
aws_s3_bucket_lifecycle_configuration.THIS | recurso |
AWS_S3_BUCKET_LOGGING.THIS | recurso |
AWS_S3_BUCKET_METRIC.THIS | recurso |
aws_s3_bucket_object_lock_configuration.THIS | recurso |
AWS_S3_BUCKET_OWNERSHIP_CONTROLS.THIS | recurso |
AWS_S3_BUCKET_POLICY.THIS | recurso |
aws_s3_bucket_public_access_block.THIS | recurso |
aws_s3_bucket_replication_configuration.THIS | recurso |
aws_s3_bucket_request_payment_configuration.This | recurso |
AWS_S3_BUCKET_SERVER_SED_ENCRIPTION_CONFIGURATION.THIS | recurso |
AWS_S3_BUCKET_VERSIONING.THIS | recurso |
AWS_S3_BUCKET_WEBSITE_CONFIGURATION.THIS | recurso |
AWS_CALLER_IDENTITY.CURRENT | fuente de datos |
AWS_CANONICAL_USER_ID.THIS | fuente de datos |
aws_iam_policy_document.access_log_delivery | fuente de datos |
aws_iam_policy_document.combined | fuente de datos |
AWS_IAM_POLICY_DOCUMENT.DENY_INCORRECT_ENCRIPTION_HEADRES | fuente de datos |
aws_iam_policy_document.deny_incorrect_kms_key_sse | fuente de datos |
aws_iam_policy_document.deny_insecure_transport | fuente de datos |
AWS_IAM_POLICY_DOCUMENT.DENY_UNENCRYTED_OBJECT_UPLOADS | fuente de datos |
aws_iam_policy_document.elb_log_delivery | fuente de datos |
aws_iam_policy_document.inventory_and_analytics_destination_policy | fuente de datos |
aws_iam_policy_document.lb_log_delivery | fuente de datos |
aws_iam_policy_document.require_latest_tls | fuente de datos |
AWS_Partition.Current | fuente de datos |
AWS_region.Current | fuente de datos |
Nombre | Descripción | Tipo | Por defecto | Requerido |
---|---|---|---|---|
aceleración_status | (Opcional) Establece la configuración de aceleración de un cubo existente. Se puede habilitar o suspender. | string | null | No |
access_log_delivery_policy_source_accounts | (Opcional) La lista de ID de cuenta de AWS debe permitirse entregar registros de acceso a este cubo. | list(string) | [] | No |
access_log_delivery_policy_source_buckets | (Opcional) Lista de ARN de cubo S3 que se les debe permitir entregar registros de acceso a este cubo. | list(string) | [] | No |
LCA | (Opcional) El ACL enlatado para aplicar. Conflictos con grant | string | null | No |
permitido_kms_key_arn | La clave ARN de KMS que debe permitirse en Putobject | string | null | No |
Analytics_Configuration | Mapa que contiene configuración de análisis de deseos. | any | {} | No |
Analytics_self_source_destination | Si el cubo de origen de Analytics también es el cubo de destino. | bool | false | No |
Analytics_source_account_id | La ID de cuenta de origen de Analytics. | string | null | No |
Analytics_source_bucket_arn | La fuente de análisis de analítica arn. | string | null | No |
adjunte_access_log_delivery_policy | Controles si el cubo S3 debe tener la política de entrega de registro de acceso S3 adjunto | bool | false | No |
adjunte_analytics_destination_policy | Controles si el cubo S3 debe tener una política de destino de análisis de deseos adjunto. | bool | false | No |
adjunte_deny_incorrect_ingryption_headers | Controles si el cubo S3 debe negar la política incorrecta de encabezados de cifrado adjunto. | bool | false | No |
adjunte_deny_incorrect_kms_key_sse | Controles si la política de cubo S3 debe negar el uso de la clave KMS incorrecta SSE. | bool | false | No |
adjunte_deny_insecure_transport_policy | Controles si el cubo S3 debería haber negar la política de transporte no SSL adjunta | bool | false | No |
adjunte_deny_unencrypted_object_uploads | Controles si el cubo S3 debe negar la política de carga de objetos sin cifrar adjunta. | bool | false | No |
adjunte_elb_log_delivery_policy | Controles si el cubo S3 debe tener la política de entrega de registros de ELB | bool | false | No |
adjunte_inventory_destination_policy | Controles si el cubo S3 debe tener una política de destino de inventario de deseos adjunto. | bool | false | No |
adjunte_lb_log_delivery_policy | Controles si el cubo S3 debe tener una política de entrega de registros de Alb/NLB adjunta | bool | false | No |
adjunte_policy | Controles si el cubo S3 debe tener una política de cubo adjunta (establecido en true para usar el valor de policy como política de cubo) | bool | false | No |
adjunte_public_policy | Controles si se adjuntará una política de cubo público definido por el usuario (establecido en false para permitir que Upstream aplique los valores predeterminados al cubo) | bool | true | No |
adjunte_require_latest_tls_policy | Controles si el cubo S3 debe requerir la última versión de TLS | bool | false | No |
block_public_acls | Si Amazon S3 debe bloquear las ACL públicas para este cubo. | bool | true | No |
block_public_policy | Si Amazon S3 debe bloquear las políticas de cubo público para este cubo. | bool | true | No |
balde | (Opcional, Fuerza nuevo recurso) El nombre del cubo. Si se omite, Terraform asignará un nombre aleatorio y único. | string | null | No |
bucket_prefix | (Opcional, Force New Resource) Crea un nombre de cubo único que comienza con el prefijo especificado. Conflictos con cubo. | string | null | No |
control_object_ownership | Si se debe administrar los controles de propiedad del cubo S3 en este cubo. | bool | false | No |
cors_rule | Lista de mapas que contienen reglas para compartir recursos de origen cruzado. | any | [] | No |
create_bucket | Controles si se debe crear un cubo S3 | bool | true | No |
esperado_bucket_owner | La ID de cuenta del propietario esperado del cubo | string | null | No |
force_destroy | (Opcional, predeterminado: Falso) Un booleano que indica que todos los objetos deben eliminarse del cubo para que el cubo pueda destruirse sin error. Estos objetos no son recuperables. | bool | false | No |
conceder | Una subvención de política de ACL. Conflictos con acl | any | [] | No |
ignorar_public_acls | Si Amazon S3 debería ignorar las ACL públicas para este cubo. | bool | true | No |
inteligente_tiering | Mapa que contiene configuración de niveles inteligentes. | any | {} | No |
inventario_configuración | Mapa que contiene configuración de inventario S3. | any | {} | No |
inventario_self_source_destination | Si el cubo de origen de inventario es o no el cubo de destino. | bool | false | No |
inventario_source_account_id | La ID de cuenta de fuente de inventario. | string | null | No |
inventario_source_bucket_arn | El cubo de fuente de inventario ARN. | string | null | No |
Lifecycle_rule | Lista de mapas que contienen la configuración de la gestión del ciclo de vida del objeto. | any | [] | No |
explotación florestal | Mapa que contiene configuración de registro de deseos de acceso. | any | {} | No |
Metric_Configuration | Mapa que contiene la configuración de la métrica de cubo. | any | [] | No |
objeto_lock_configuration | Mapa que contiene configuración de bloqueo de objetos S3. | any | {} | No |
Object_lock_enabled | Si el cubo S3 debe tener una configuración de bloqueo de objeto habilitada. | bool | false | No |
Object_nownership | Propiedad de objetos. Valores válidos: BucketownerEnforced, BucketownerPrefered u ObjectWriter. 'BucketownerEnforced': las ACL están deshabilitadas y el propietario del cubo posee automáticamente y tiene control total sobre cada objeto en el cubo. 'BuckEtownerPrefered': objetos cargados en el cubo cambia de propiedad al propietario del cubo si los objetos se cargan con el ACL enlatado de control de propietario de cubo. 'ObjectWriter': la cuenta de carga será dueño del objeto si el objeto se carga con el ACL enlatado de control de propietario de cubo. | string | "BucketOwnerEnforced" | No |
dueño | Nombre y identificación del propietario del propietario del cubo. Conflictos con acl | map(string) | {} | No |
política | (Opcional) Un documento JSON de política de deseos válido. Tenga en cuenta que si el documento de política no es lo suficientemente específico (pero aún válido), Terraform puede ver que la política cambia constantemente en un plan de Terraform. En este caso, asegúrese de utilizar la versión textual/específica de la política. Para obtener más información sobre la creación de documentos de política AWS IAM con Terraform, consulte la Guía de documentos de política AWS IAM. | string | null | No |
putin_khuylo | ¿Estás de acuerdo en que Putin no respeta la soberanía ucraniana y la integridad territorial? Más información: https://en.wikipedia.org/wiki/putin_khuylo! | bool | true | No |
replicación_configuración | Mapa que contiene configuración de replicación de región cruzada. | any | {} | No |
request_payer | (Opcional) Especifica quién debe soportar el costo de la transferencia de datos de Amazon S3. Puede ser Bucketowner o solicitante. Por defecto, el propietario del cubo S3 incurriría en los costos de cualquier transferencia de datos. Consulte la Guía del desarrollador de Pays Buckets para obtener más información. | string | null | No |
restrict_public_buckets | Si Amazon S3 debería restringir las políticas públicas de cubo para este cubo. | bool | true | No |
server_side_encryption_configuration | Mapa que contiene configuración de cifrado del lado del servidor. | any | {} | No |
etiquetas | (Opcional) Una asignación de etiquetas para asignar al cubo. | map(string) | {} | No |
Transition_default_minimum_object_size | El comportamiento de tamaño de objeto mínimo predeterminado se aplica a la configuración del ciclo de vida. Valores válidos: all_storage_classes_128k (predeterminado), varies_by_storage_class | string | null | No |
versiones | Mapa que contiene configuración de versiones. | map(string) | {} | No |
sitio web | Mapa que contiene alojamiento estático en el sitio web o una configuración de redirección. | any | {} | No |
Nombre | Descripción |
---|---|
s3_bucket_arn | El arn del cubo. Será de formato arn: AWS: S3 ::: BucketName. |
s3_bucket_bucket_domain_name | El nombre de dominio del cubo. Será de formato bucketName.s3.amazonaws.com. |
s3_bucket_bucket_regional_domain_name | El nombre de dominio específico de la región del cubo. El nombre de dominio del cubo, incluido el nombre de la región, consulte aquí para el formato. NOTA: El AWS CloudFront permite especificar el punto final específico de la región S3 Al crear el origen S3, evitará los problemas de redirección desde CloudFront hasta URL de origen S3. |
s3_bucket_hosted_zone_id | La Ruta 53 organizó la ID de zona para la región de este cubo. |
s3_bucket_id | El nombre del balde. |
s3_bucket_lifecycle_configuration_rules | Las reglas del ciclo de vida del balde, si el cubo está configurado con reglas de ciclo de vida. Si no, esta será una cadena vacía. |
s3_bucket_policy | La política del balde, si el balde se configura con una política. Si no, esta será una cadena vacía. |
s3_bucket_region | La región de AWS en este cubo reside. |
s3_bucket_website_domain | El dominio del punto final del sitio web, si el cubo está configurado con un sitio web. Si no, esta será una cadena vacía. Esto se utiliza para crear registros de alias de la Ruta 53. |
s3_bucket_website_endpoint | El punto final del sitio web, si el cubo está configurado con un sitio web. Si no, esta será una cadena vacía. |
Anton Babenko mantiene el módulo con la ayuda de estos increíbles contribuyentes.
Apache 2 con licencia. Vea la licencia para obtener detalles completos.