AWS — Не удается получить доступ к файлу резервной копии в корзине S3

#sql #amazon-web-services #amazon-s3 #ssms #amazon-rds

Вопрос:

Я настраивал базу данных на AWS для одного проекта. У меня уже есть база данных, созданная на моем локальном компьютере, поэтому я хочу перенести ее, а не начинать все сначала.

Я создал онлайн-базу данных, используя бесплатный шаблон в RDS, сделал ее общедоступной. Я также создал группу опций с опцией SQLSERVER_BACKUP_RESTORE. Затем я зашел в базу данных, чтобы добавить роль IAM в группу опций с функцией S3_ИНТЕГРАЦИИ.

Как только это было сделано, я создал корзину, которую сделал как можно более общедоступной (Заблокировать публичный доступ (все настройки корзины отключены), куда я загрузил свой файл .bak, который я опубликовал с помощью действия «Опубликовать через ACL».

Затем я зашел в SSMS и выполнил следующие запросы:

 use master go  exec msdb.dbo.rds_restore_database @restore_db_name='[dbname]', @s3_arn_to_restore_from='arn:aws:s3:::[bucketname]/[backupfile].bak', @with_norecovery=1, @type='FULL'; go  use master go select * from msdb.dbo.rds_fn_task_status(null,0)  go  

Конечно, [имя базы данных], [имя корзины] и [файл резервной копии] были заменены фактической информацией. Однако через 1-2 минуты rds_fn_task_status(null, 0) возвращает сообщение об ошибке

[2021-11-29 01:44:22.393] Прервано выполнение задачи из-за сбоя задачи или одновременного запроса RESTORE_DB_NORECOVERY. [2021-11-29 01:44:22.770] Задание прервано [2021-11-29 01:44:22.770] доступ запрещен

Что может вызвать эту проблему и как я могу ее исправить?

Тип локальной базы данных: SQL

Механизм RDS: SQL Server Express Edition

Состояние базы данных RDS: Доступно

База данных RDS общедоступна: Да

База данных и корзина в одном регионе: Да

Учетная запись, используемая в SSMS: Основная учетная запись такая же, как и при создании базы данных

Включено шифрование: Ни в БД, ни в корзине

Я новичок в AWS, поэтому, вероятно, что-то упускаю (это довольно запутанно в использовании). Но в каждом учебнике по восстановлению резервной копии БД, который я нашел, упоминается, что это все необходимые шаги, и у меня должен быть доступ.

Комментарии:

1. При создании группы опций вы выбрали Включить шифрование? Это будет означать, что у вас есть доступ к ключу KMS (указанному с дополнительным параметром) во время базы данных msdb.dbo.rds_restore_database.

2. Нет, шифрование не включено в корзине, я вижу «Ключ» в обзоре объектов, который я попытался ввести в параметр @kms_master_key_arn, но он тоже не работал. Я ничего не вижу о шифровании в своей группе опций. Шифрование также отключено в базе данных