С информационным элементом технологий, находящим свои корни в каждой финансовой организации и во всех отраслях, сильная емкость хранения формирует основу для доступности, долговечности и масштабируемости. Среди них Amazon S3 является одним из самых популярных сервисов, отвечающих этим потребностям. По мере расширения предприятий географически возникает значительная потребность в репликации данных между местоположениями. Поэтому возникла необходимость разработки кросс-региональной репликации в Amazon S3, где разрешается репликация данных между одним ведомым ведром из одного региона AWS в другое ведро в другом регионе AWS.
Статья будет описывать, как настроить кросс-региональную репликацию в Amazon S3 с использованием Terraform, программного обеспечения IaC. Она дает общий обзор того, как настроить SLA, обсуждает, почему стоит внедрять кросс-региональную репликацию, и показывает, как запустить концепцию в работу.
Что такое кросс-региональная репликация?
CRR означает кросс-региональную репликацию, функцию Amazon S3, которая реплицирует объекты из одного ведра в другое ведро в другом регионе. Эта репликация помогает соблюдать правила соответствия, восстановление после катастрофы и оптимизацию производительности путем близкого хранения данных к пользователям.
Основные особенности CRR
- Автоматическая репликация объектов между ведрами.
- Регионы независимы; то есть исходные и конечные ведра могут находиться в разных регионах.
- Правила: Это позволяет более детально контролировать, что будет реплицировано.
- Поддержка шифрования и тегирования: поддерживает репликацию зашифрованных данных и тегов объектов.
Почему использовать Terraform для CRR?
Terraform обеспечивает управление облачными ресурсами через декларативную конфигурацию. В то время как Консоль управления AWS имеет политики репликации по умолчанию, Terraform позволяет использовать шаблоны с контролем версий.
Преимущества Terraform
- Согласованность. Этот процесс уменьшает вероятность различий при настройке.
- Автоматизация. Обеспечивает быструю реализацию, обновление и уничтожение.
- Управление версиями. Упрощает откаты и отслеживание истории.
Необходимые условия
Перед настройкой CRR с использованием Terraform необходимо иметь следующее:
- Учетную запись AWS с разрешениями S3 и IAM
- Установленный локально Terraform
- Настроенный AWS CLI для использования в аутентификации
Реализация
Шаг 1: Определите ваши бакеты S3
Вам следует создать как минимум два бакета: исходный и конечный бакеты.
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"
}
}
Шаг 2: Создание IAM-роли для репликации
Для использования CRR должна существовать IAM-роль с привилегиями, необходимыми для CRR. Давайте создадим одну:
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
}
Шаг 3: Конфигурация репликации S3
Настройте конфигурацию репликации для ассоциирования исходных и конечных бакетов.
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"
}
}
}
Шаг 4: Инициализация и применение конфигурации
Выполните конфигурацию Terraform с помощью этих команд:
terraform init
terraform apply
Во время выполнения terraform apply
, просто просмотрите план и подтвердите его выполнение.
Как протестировать настройку CRR
Создайте объект в исходном ведре и проверьте, будет ли он реплицирован в целевом ведре.
# 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/
Преимущества кросс-региональной репликации
- Восстановление после катастрофы. Защита данных путем их зеркалирования в различных географических регионах.
- Соблюдение требований. Соблюдение требований регуляторных органов к местоположению данных и их резервному копированию.
- Улучшение производительности. Снижение задержек за счет хранения данных ближе к пользователям.
- Автоматизация резервного копирования. Управление резервным копированием и архивами без дополнительных инструментов или скриптов.
Советы по устранению неполадок
- Ошибки разрешений. Проверьте, имеет ли IAM-роль правильные разрешения на ведрах источника и назначения.
- Отсутствует включение версий. Убедитесь, что включение версий включено как в исходном, так и в целевом ведрах.
- Задержки в репликации. Репликация выполняется с учетом согласованности. Отслеживайте репликацию с помощью CloudWatch.
Заключение
Amazon S3 Кросс-региональная репликация является очень мощной функцией для любого бизнеса, позволяющей обеспечить соответствующую избыточность данных и соблюдение требований. Terraform позволяет автоматизировать и оптимизировать процесс реализации, чтобы настройка инфраструктуры оставалась последовательной и масштабируемой.
В этом руководстве мы узнали, как реализовать CRR с использованием Terraform, начиная с конфигурации ведра и заканчивая определениями правил репликации. Основываясь на методе, описанном в этой статье, вы можете разработать оптимальную архитектуру хранения для удовлетворения потребностей современного предприятия.
Source:
https://dzone.com/articles/amazon-s3-cross-region-replication-terraform