Con el elemento de tecnología de la información encontrando sus raíces en cada organización financiera y en todas las industrias, una capacidad de almacenamiento sólida forma la columna vertebral para la disponibilidad, durabilidad y escalabilidad. Entre estos, Amazon S3 es uno de los servicios más populares para satisfacer estas necesidades. A medida que las empresas se expanden geográficamente, comienza a sentirse significativamente la necesidad de replicación de datos entre ubicaciones. Por lo tanto, surgió la necesidad de desarrollar Replicación entre Regiones en Amazon S3, donde se permite la replicación de datos entre un bucket proveniente de una región de AWS a otro bucket en una región de AWS diferente.
El artículo describirá cómo configurar la Replicación entre Regiones en Amazon S3 utilizando Terraform, un software de IaC. Da una visión general de cómo establecer SLAs, discute por qué alguien implementaría la replicación entre regiones y muestra cómo poner en marcha una prueba de concepto.
¿Qué es la Replicación entre Regiones?
CRR significa Replicación entre Regiones, una característica de Amazon S3 que replica objetos de un bucket a otro bucket en una región diferente. Esta replicación ayuda con las regulaciones de cumplimiento, la recuperación ante desastres y la optimización del rendimiento al almacenar datos más cerca de los usuarios.
Características clave de CRR
- Replica automáticamente objetos entre buckets.
- Las regiones son independientes; es decir, los buckets de origen y destino pueden ser de diferentes regiones.
- Reglas: Esto permite un control granular sobre qué se replica.
- Soporte de cifrado y etiquetado: admite la replicación de datos cifrados y etiquetas de objetos.
¿Por qué usar Terraform para CRR?
Terraform permite la gestión de recursos en la nube a través de una configuración declarativa. Mientras que la Consola de Administración de AWS tiene políticas de replicación predeterminadas, Terraform permite plantillas controladas por versión.
Beneficios de Terraform
- Consistencia. El proceso reduce las posibilidades de variaciones en la configuración.
- Automatización. Permite una implementación, actualización y desmontaje rápidos.
- Control de versiones. Simplifica los retrocesos y el seguimiento del historial.
Prerrequisitos
Antes de configurar CRR con Terraform, lo siguiente debe estar en su lugar:
- Una cuenta de AWS con permisos de S3 e IAM
- Terraform instalado localmente
- Configuración de AWS CLI para usar en la autenticación
Implementación
Paso 1: Definir sus Buckets de S3
Debe crear al menos dos buckets: buckets de origen y destino.
resource "aws_s3_bucket" "source_bucket" {
bucket = "my-source-bucket-example"
acl = "private"
versioning {
enabled = true
}
tags = {
Name = "SourceBucket"
Environment = "Production"
}
}
resource "aws_s3_bucket" "destination_bucket" {
bucket = "my-destination-bucket-example"
acl = "private"
versioning {
enabled = true
}
tags = {
Name = "DestinationBucket"
Environment = "Production"
}
}
Paso 2: Crear un Rol de IAM para la Replicación
Para usar CRR, debe existir un rol de IAM con los privilegios que CRR requiere. Creemos uno:
resource "aws_iam_role" "replication_role" {
name = "s3-replication-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Principal = {
Service = "s3.amazonaws.com"
}
}
]
})
}
resource "aws_iam_policy" "replication_policy" {
name = "s3-replication-policy"
description = "Allows S3 to replicate objects"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"s3:GetObject",
"s3:ListBucket",
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"
]
Effect = "Allow"
Resource = [
"arn:aws:s3:::my-source-bucket-example/*",
"arn:aws:s3:::my-source-bucket-example"
]
},
{
Action = "s3:PutObject"
Effect = "Allow"
Resource = "arn:aws:s3:::my-destination-bucket-example/*"
}
]
})
}
resource "aws_iam_role_policy_attachment" "replication_role_attachment" {
role = aws_iam_role.replication_role.name
policy_arn = aws_iam_policy.replication_policy.arn
}
Paso 3: Configuración de Replicación de S3
Configure una configuración de replicación para asociar los buckets de origen y destino.
resource "aws_s3_bucket_replication_configuration" "replication_config" {
bucket = aws_s3_bucket.source_bucket.id
role = aws_iam_role.replication_role.arn
rule {
id = "ReplicationRule1"
status = "Enabled"
filter {
prefix = ""
}
destination {
bucket = aws_s3_bucket.destination_bucket.arn
storage_class = "STANDARD"
}
}
}
Paso 4: Iniciar y Aplicar la Configuración
Ejecuta la configuración de Terraform usando estos comandos:
terraform init
terraform apply
Durante la ejecución de terraform apply
, simplemente revisa el plan y confirma su ejecución.
Cómo probar la configuración de CRR
Crea un objeto en el bucket de origen y verifica si se replica en el bucket de destino.
# Put a file in the source bucket
aws s3 cp test-file.txt s3://my-source-bucket-example/
# Check if file is there in the destination bucket
aws s3 ls s3://my-destination-bucket-example/
Ventajas de la Replicación entre Regiones
- Recuperación ante desastres. Protege los datos al reflejarlos en diferentes regiones geográficas.
- Cumplimiento. Cumple con los requisitos normativos de ubicación y respaldo de datos.
- Rendimiento mejorado. Reduce la latencia al almacenar los datos más cerca de los usuarios.
- Automatización de copias de seguridad. Administra copias de seguridad y archivos sin necesidad de herramientas o scripts adicionales.
Consejos de solución de problemas
- Errores de permisos. Verifica que el rol IAM tenga los permisos correctos en los buckets de origen y destino.
- La versión no está habilitada. Asegúrate de que la versión esté habilitada en ambos buckets, de origen y destino.
- Retrasos en la replicación. La replicación es eventualmente consistente. Monitoriza la replicación usando CloudWatch.
Conclusión
Amazon S3 La Replicación entre Regiones es una característica muy poderosa para que cualquier empresa logre la redundancia de datos adecuada y el cumplimiento. Terraform te permite automatizar y agilizar el proceso de implementación para que la configuración de la infraestructura se mantenga consistente y escalable.
En este tutorial, hemos aprendido cómo implementar CRR utilizando Terraform, desde la configuración del bucket hasta las definiciones de reglas de replicación. Basándose en el método descrito en este artículo, puedes diseñar tu arquitectura de almacenamiento óptima para manejar las necesidades de una aplicación empresarial moderna.
Source:
https://dzone.com/articles/amazon-s3-cross-region-replication-terraform