为什么我的数据库无法备份到我的 S3 存储桶?

为什么我的数据库无法备份到我的 S3 存储桶?

我正在尝试在 RDS SQL Server 2019 实例上测试差异备份和还原,以准备将一些 Web 资源迁移到 AWS。我在其上运行 SSMS 的 EC2 实例 (Windows Server 2019) 和 RDS 实例都具有使用亚马逊S3FullAccess策略(在我看来,只有 RDS 实例才需要该策略,但我很多次感到惊讶,以至于不敢相信自己的假设)。我尝试写入的 S3 存储桶与我最初从中恢复/创建数据库的存储桶相同,因此我确信它位于同一可用区域并且对实例可见。

这是我在 SSMS 查询窗口中运行的命令:

EXEC msdb.dbo.rds_backup_database 
     @source_db_name = 'our_database', 
     @s3_arn_to_backup_to = 'arn:aws:s3:::our-bucket/database_differential.bak', 
     @overwrite_S3_backup_file = 1, 
     @type = 'DIFFERENTIAL';

任务创建成功,但几乎立即失败并显示以下消息:

[2021-08-25 22:32:22.070] Task execution has started.
[2021-08-25 22:32:22.170] Aborted the task because of a task failure or an overlap with your preferred backup window for RDS automated backup.
[2021-08-25 22:32:22.173] Task has been aborted
[2021-08-25 22:32:22.177] Access Denied

此实例的自动备份窗口是,08:01-08:31因此我看不出 22:32 与之冲突。我已将存储桶开放给公众访问,并且如我所提到的,向参与实例授予了完全访问角色。SQL Server 和 AWS 都不是我的专长,我在 Google 上花了一个小时找到的只是建议检查我已经提到过的内容。我还应该尝试什么?

答案1

在我的存储桶中添加 S3 策略为我解决了这个问题

{ “Version”:“2012-10-17”, “Id”:“123”, “Statement”:[ { “Sid”:“”, “Effect”:“Allow”, “Principal”:“”, “Action”:“s3:”, “Resource”:“arn:aws:s3:::mybucket/*” } ] }

相关内容