Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Amazon Redshift Serverless スナップショットを別の AWS アカウントにコピーして復元する方法を教えてください。
Amazon Redshift Serverless スナップショットを、ある AWS アカウントから別の AWS アカウントにコピーして復元したいと考えています。これを実行するにはどうすればよいですか?
解決方法
Amazon Redshift コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して、ある AWS アカウントから別のアカウントへのコピーと復元を実行します。
この作業を開始する前に、次の点を考慮してください。
- スナップショットを Amazon Redshift Serverless 名前空間に復元できるのは、そのスナップショットのステータスが [Available] (利用可能) で、かつ使用可能なワークグループに関連付けられている場合のみです。
- Amazon Redshift Serverless 名前空間をスナップショットから復元すると、名前空間のすべてのデータベースがスナップショット内のデータベースに置き換えられます。
- [Restore] (復元) の実行中は、Amazon Redshift Serverless が使用できなくなります。
Amazon Redshift コンソールを使用したコピーおよび復元
Amazon Redshift Serverless の復旧ポイントをソースアカウントのスナップショットに変換する
- Amazon Redshift コンソールを開きます。
- ナビゲーションペインで [Redshift Serverless] を選択し、次に [Data backup] (データバックアップ) を選択します。
- [Recovery points] (復旧ポイント) で、スナップショットに変換する復旧ポイントの作成時刻を選択します。
- [Create snapshot from recovery point] (復旧ポイントからスナップショットを作成) を選択します。
- スナップショット識別子と保存期間を入力します。
- [Create] (作成) を選択します。
ソースアカウントのスナップショットを別の AWS アカウントと共有する
- Amazon Redshift コンソールを開きます。
- ナビゲーションペインで [Redshift Serverless] を選択し、次に [Data backup] (データバックアップ) を選択します。
- 以前に作成したスナップショットを選択します。
- [Actions] (アクション)、[Manage access] (アクセスの管理) を選択します。
- [Provide access to serverless accounts] (サーバーレスアカウントへのアクセスを許可) にある [Add AWS account] (AWS アカウントを追加) を選択し、AWS アカウント ID (送信先) を入力します。
- [Save changes] (変更を保存) を選択します。
スナップショットを送信先アカウントの Amazon Redshift Serverless 名前空間に復元する
- Amazon Redshift コンソールを開きます。
- ナビゲーションペインで [Redshift Serverless] を選択し、次に [Data backup] (データバックアップ) を選択します。
- 復元する AWS アカウント ID と共有されたスナップショットを選択します。一度に復元できるスナップショットは 1 個だけです。
- [Actions] (アクション)、[Restore to serverless namespace] (サーバーレス名前空間への復元) を選択します。
- 復元先として利用可能な名前空間を選択してください。ステータスが [Available] (利用可能) の名前空間にのみ復元できます。
- [Restore] (復元) を選択します。
AWS CLI を使用したコピーおよび復元
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
Amazon Redshift Serverless の復旧ポイントをソースアカウントのスナップショットに変換する
1. list-recovery-points コマンドを使用して、開始時刻後に作成されたスナップショットのリストを表示します。次のコマンドを実行し、namespacename を自分の名前空間に、us-west-2 を該当する AWS リージョンに、starttime を UTC の復旧ポイントの開始時刻にそれぞれ置き換えます。
aws redshift-serverless list-recovery-points --namespace-name <namespacename> --region <region name> --start-time <starttime>
次の例では、Redshift Serverless クラスターが米国西部 (オレゴン) リージョンに存在し、名前空間は default で、開始時間は 2022-09-06T07:10 UTC となっています。
aws redshift-serverless list-recovery-points --namespace-name default --region us-west-2 --start-time 2022-09-06T07:10
2. convert-recovery-point-to-snapshot コマンドを使用して、スナップショットおよび保持期間を作成します。次のコマンドを実行し、recoveryPointId をステップ 1 で出力した復旧ポイント ID に、days をスナップショットの保持日数に、snapshot name を自分のスナップショットの名前に、us-west-2 を該当する AWS リージョンにそれぞれ置き換えます。
aws redshift-serverless convert-recovery-point-to-snapshot --recovery-point-id <recoveryPointId> --retention-period <days> --snapshot-name <snapshot name> --region <region name>
次の例では、スナップショットは snapshot01 という名前で、保持期間は 3 日間で、米国西部 (オレゴン) リージョンに存在しています**。**
aws redshift-serverless convert-recovery-point-to-snapshot --recovery-point-id 72acee50-34df-45f6-865f-46aa178ada82 --retention-period 3 --snapshot-name snapshot01 --region us-west-2
3. get-snapshot コマンドを使用して、スナップショットが作成されたことを確認します。次のコマンドを実行し、snapshot name を自分のスナップショットの名前に置き換えます。
aws redshift-serverless get-snapshot --snapshot-name <snapshot name>
ソースアカウントのスナップショットを別の AWS アカウントと共有する
put-resource-policy コマンドを使用して、別の AWS アカウントにスナップショットへのアクセスを提供します。次のコマンドを実行し、destination account ID を送信先 AWS アカウント ID に、snapshot arn をスナップショットの ARN にそれぞれ置き換えます。
aws redshift-serverless put-resource-policy --policy "{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\”<destination account ID>\”]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}" --resource-arn <snapshot arn>
次の例では、アカウント番号 123456789012 のスナップショット ARN へのアクセスが提供されています。
aws redshift-serverless put-resource-policy --policy "{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\"123456789012\"]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}" --resource-arn arn:aws:redshift-serverless:us-west-2:112233445566:snapshot/4978ca91-24ba-4196-91ad-9d372f72b0fe
スナップショットを送信先アカウントの Amazon Redshift Serverless 名前空間に復元する
1. list-snapshots コマンドを使用して、AWS リージョンのスナップショットを一覧表示します。次のコマンドを実行し、us-west-2 を該当する AWS リージョンに置き換えます。
aws redshift-serverless list-snapshots --region us-west-2
2. restore-from-snapshot コマンドを使用して、スナップショットを Amazon Redshift Serverless に復元します。次のコマンドを実行し、snapshot name を自分のスナップショットの名前に、workgroup name を自分のワークグループの名前に、snapshot arn を前述のコマンドのスナップショット ARN にそれぞれ置き換えます。
aws redshift-serverless restore-from-snapshot --namespace-name <namespace name > --workgroup-name <workgroup name> --snapshot-arn <snapshot arn>
次の例では、アカウント ID 112233445566 の Amazon Redshift Serverless は、ステータスが [Available] (利用可能) で、名前空間名は restore、ワークグループ名は restore となっています。
aws redshift-serverless restore-from-snapshot --namespace-name restore --workgroup-name restore --snapshot-arn arn:aws:redshift-serverless:us-west-2:112233445566:snapshot/4978ca91-24ba-4196-91ad-9d372f72b0fe
