SQL Serverでs3からのリストアが失敗

0

EC2ではSQL Server2022を使用しており、Microsoft SQL Server Management Studio を起動して exec msdb.dbo.rds_restore_database @restore_db_name='dbname', @s3_arn_to_restore_from='arn:aws:s3:::s3-name/dbname.bak', @with_norecovery=0; でリストアを実施するとtask_infoにエラーメッセージが表示されます。 [2024-06-26 08:39:22.047] Aborted the task because of a task failure or a concurrent HA_RESTORE_DB request. [2024-06-26 08:39:22.077] Task has been aborted [2024-06-26 08:39:22.083] Could not parse the amazon resource name string provided: --endpoint-url https://bucket.vpce-xxx.s3.ap-northeast-1.vpce.amazonaws.com arn:aws:s3:::s3-name/dbname.bak

コマンドで aws s3 --endpoint-url https://bucket.vpce-xxx.s3.ap-northeast-1.vpce.amazonaws.com --region ap-northeast-1 cp s3://s3-name/dbname.bak e:\dbnamebak でEC2へのコピーは正常にいけます。(endpoint-urlを指定しないとエラーします)

exec msdb.dbo.rds_restore_database のパラメータにendpoint-urlの指定はありませんが、AWS管理コンソールで何らかの設定が必要であればご教示ください。

tokumei
質問済み 4ヶ月前350ビュー
3回答
1

VPCエンドポイント経由での接続がうまくできていないように見えます。
SQL Serverに詳しくないのですが、「msdb.dbo.rds_restore_database」がVPCエンドポイント経由でのS3アクセスに対応しているのでしょうか?
ちなみにインターフェース型のVPCエンドポイントではなくゲートウェイ型のVPCエンドポイントで設定した場合はコマンドが成功しますか?
EC2上のSQL Server2022で「msdb.dbo.rds_restore_database」が使用できるのでしょうか?
この機能自体はRDS SQL Serverで使用するものな気がしています。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html

profile picture
エキスパート
回答済み 4ヶ月前
  • VPCエンドポイントは社内環境の制約により変更できません。 EC2上のSQL Server2022で「msdb.dbo.rds_restore_database」は使用可能です。 EC2上のSQL Server2022で「msdb.dbo.rds_restore_database」を開き、exec msdb.dbo.rds_restore_databaseでDBをリストアした際にエラーします。

    なお、RDSを作成する際、個人情報を扱うDBのため、設定でコンピューティングリソースは「EC2コンピューティングリソースに接続しない」を選択しています。 IAMロールを紐づけ、EC2からでもアクセス可能にはしているつもりです。

    @s3_arn_to_restore_from='arn:aws:s3:::s3-name/dbname.bak', にすると [2024-06-27 02:18:22.107] Aborted the task because of a task failure or a concurrent HA_RESTORE_DB request. [2024-06-27 02:18:22.137] Task has been aborted [2024-06-27 02:18:22.140] Access Denied となります

  • 「Access Denied」なので、RDSからS3にアクセスするときに使用しているIAMロールに問題がある気がします。 おそらくRDSで以下のような設定を行っていると思うのですが、RDSのオプショングループで設定しているIAMロールにはどのようなIAMポリシーが設定されていますか? https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Importing.Native.Enabling https://dev.classmethod.jp/articles/import-export-mssql-by-s3-bak-file/

0

お忙しい中、ご回答いただきありがとうございます。 RDSのオプショングループでSQLSERVER_BACKUP_RESTOREを指定しています。 今回の問題はEC2でSMSの画面から実行するexec msdb.dbo.rds_restore_databaseが endpoint-url を指定できない部分が問題箇所かと思われます。

tokumei
回答済み 4ヶ月前
0

返信遅くなり申し訳ありません。
VPCエンドポイントのプライベートDNSホストゾーンを有効化してみるのはいかがでしょうか?
こちらを有効化するとendpoint-urlの指定が不要になるかと思います。
https://bftnagoya.hateblo.jp/entry/2022/02/03/163658

profile picture
エキスパート
回答済み 3ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ