#amazon-web-services #amazon-s3 #amazon-rds
#amazon-web-services #amazon-s3 #amazon-rds
Вопрос:
У нас есть группа опций, подключенная к одному из наших экземпляров SQL Server для резервного копирования в корзину S3. При попытке запустить резервное копирование с использованием rds_backup_database
хранимой процедуры мы получаем следующие ошибки:
[2021-03-18 20:20:22.260] Aborted the task because of a task failure or an overlap with your preferred backup window for RDS automated backup.
[2021-03-18 20:20:22.270] Task has been aborted
[2021-03-18 20:20:22.270] Access Denied
Все, что я прочитал, говорит о том, что это означает, что роль IAM, используемая для группы параметров резервного копирования и восстановления, не имеет надлежащих разрешений для корзины S3.
Тем не менее, кажется, что все настроено правильно. Вот конфигурация разрешений для этой роли.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::sabmssqldevbackups"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObjectMetaData",
"s3:GetObject",
"s3:PutObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::sabmssqldevbackups/sabmssqldev/*"
]
}
]
}
Что касается окна резервного копирования, оно настроено на полчаса сразу после полуночи, поэтому мы не можем с этим конфликтовать.
Еще одна особенность заключается в том, что наш экземпляр RDS находится в регионе us-east-2a
. Я не могу найти никакой информации о том, что us-east-2a
есть. Вы не можете выбрать его, если у вас есть возможность выбора регионов. Наша корзина S3 us-east-2
включена, как и должно быть. Являются ли эти два региона одинаковыми, или это несоответствие является причиной сбоя при выполнении резервного копирования?
Ответ №1:
us-east-2a
похоже, что это AZ, в котором находится ваша база данных:
регион по-прежнему us-east-2
на основе примера роли IAM для экспорта моментальных снимков базы данных:
вы должны заявить arn:aws:s3:::your-s3-bucket
в своем последнем заявлении,
От:
{
"Effect": "Allow",
"Action": [
"s3:GetObjectMetaData",
"s3:GetObject",
"s3:PutObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::sabmssqldevbackups/sabmssqldev/*"
]
}
Для:
{
"Effect": "Allow",
"Action": [
"s3:GetObjectMetaData",
"s3:GetObject",
"s3:PutObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::sabmssqldevbackups/sabmssqldev"
"arn:aws:s3:::sabmssqldevbackups/sabmssqldev/*"
]
}
чтобы убедиться в том, что роль IAM работает, вы можете развернуть раздел AWS CLI в:
и запустите aws rds start-export-task
команду, чтобы убедиться, что все работает:
aws rds start-export-task
--export-task-identifier my_snapshot_export
--source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot_name
--s3-bucket-name my_export_bucket
--iam-role-arn iam_role
--kms-key-id master_key
Комментарии:
1. Большое спасибо за помощь. Я добавил корзину s3 в конфигурацию роли, а также добавил ключ, управляемый клиентом, которого у нас не было. К сожалению, я все еще получаю ту же ошибку. Что касается копирования моментального снимка в качестве теста, я получил странную ошибку, в которой говорится, что движок базы данных не поддерживается.
Ответ №2:
Это оказалось проблемой с ключом шифрования. Кто-то настроил наш экземпляр базы данных на использование ключа, управляемого AWS по умолчанию. Это создает проблему с постоянными разрешениями, которую можно устранить только путем шифрования с помощью ключа, управляемого клиентом. Поскольку вы не можете изменить ключи шифрования в существующем экземпляре базы данных, единственным решением является выполнение следующих действий:
- Создайте новый ключ, управляемый клиентом, в консоли KMS
- Сделайте снимок существующего экземпляра базы данных
- Восстановите этот моментальный снимок в новый экземпляр
- Примените управляемый клиентом ключ в качестве ключа шифрования
- Измените все существующие ссылки, чтобы они указывали на новый экземпляр БД
- Удалить исходный экземпляр
Гораздо больше работы, чем я надеялся.
Ответ №3:
Я думаю, вы пытаетесь выполнить резервное копирование на s3 в окне автоматического резервного копирования RDS, поэтому RDS уничтожит ваше собственное резервное копирование / восстановление SQL. Чтобы обойти эту проблему, никогда не запускайте собственные команды резервного копирования / восстановления SQL в запланированном окне резервного копирования RDS или не меняйте его на другое время:
Комментарии:
1. Спасибо за ваш ответ. Но я не думаю, что дело в этом. Вот окно резервного копирования для экземпляра, который я пытаюсь создать. Окно резервного копирования 06:13-06:43 UTC (GMT) Если мои расчеты верны, это будет с 11:13 вечера до 11:43 вечера по местному времени. Это далеко не то время, когда я пытаюсь запустить резервную копию.