Amazon Redshift スナップショットとバックアップ - Amazon Redshift

Amazon Redshift スナップショットとバックアップ

スナップショットの概要

スナップショットはクラスターのポイントインタイムバックアップです。スナップショットには、自動手動の 2 つのタイプがあります。Amazon Redshift は、暗号化された Secure Sockets Layer (SSL) 接続を使用して、これらのスナップショットを Amazon S3 の内部に保存できます。

Amazon Redshift は、前回のスナップショット以降にクラスターに加えられた増分変更を追跡する、増分スナップショットを自動的に作成します。自動スナップショットは、スナップショットからクラスターを復元するために必要なすべてのデータを保持します。自動スナップショットをいつ作成するかを制御するためにスナップショットスケジュールを作成できます。また、いつでも手動スナップショットを作成することもできます。

スナップショットから復元すると、Amazon Redshift は新しいクラスターを作成し、すべてのデータをロードする前に新しいクラスターを使用できるようにするので、すぐに新しいクラスターのクエリを開始できます。クラスターは、アクティブなクエリに応じてスナップショットからデータをオンデマンドでストリーミングし、次に残りのデータをバックグラウンドでロードします。

クラスターを起動するとき、自動スナップショットと手動スナップショットの保持期間を設定できます。クラスターを変更して、自動スナップショットと手動スナップショットの保持期間を変更できます。スナップショットを作成するか、スナップショットを変更して、手動スナップショット保持期間を変更できます。

AWS Management Console でスナップショットの詳細を表示するか、CLI または DescribeClusterSnapshots API アクションで describe-cluster-snapshots を呼び出して、スナップショットの進行状況をモニタリングできます。これにより、進行中のスナップショットについて、差分スナップショットのサイズ、転送速度、経過時間、および推定残り時間などの情報が表示されます。

バックアップを常にクラスターで使用できるようにするために、Amazon Redshift は、Amazon Redshift の管理対象の内部管理 Amazon S3 バケットにスナップショットを保存します。ストレージの料金を管理するには、自動スナップショットを保持する必要がある日数を評価し、それに応じて保持期間を設定します。不要になった手動スナップショットを削除します。バックアップストレージのコストに関する詳細については、Amazon Redshift の料金表ページを参照してください。

Amazon Redshift Serverless でのスナップショットとバックアップの操作

プロビジョニングされたクラスターと同様に、Amazon Redshift Serverless では、名前空間内のポイントインタイムのオブジェクトとデータとしてバックアップを行うことができます。Amazon Redshift Serverless のバックアップには、手動で作成するスナップショットと、Amazon Redshift Serverless が自動的に作成する復旧ポイントの 2 種類があります。Amazon Redshift Serverless のスナップショットの操作の詳細については、「スナップショットと復旧ポイントの操作」を参照してください。

プロビジョニングされたクラスターからサーバーレス名前空間にスナップショットを復元することもできます。詳細については、「スナップショットからサーバーレス名前空間の復元」を参照してください。

自動スナップショット

自動スナップショットがクラスターに対して有効になると、Amazon Redshift は定期的にそのクラスターのスナップショットが作成されます。デフォルトでは、Amazon Redshift は約 8 時間ごと、または 1 ノードのデータが変更されるごとに 5 GB ごと (あるいはそのいずれか早い方) にスナップショットを作成します。データがノード数の 5 GB * を超える場合、自動スナップショット作成間の最短時間は 15 分です。または、自動スナップショットを作成するタイミングを制御するためにスナップショットスケジュールを作成することができます。カスタムスケジュールを使用している場合は、自動スナップショット間の最小時間は 1 時間です。自動スナップショットは、クラスターを作成するときデフォルトで有効になります。

自動スナップショットは、保持期間の終了時に削除されます。デフォルトの保持期間は 1 日ですが、Amazon Redshift コンソールを使用するか、Amazon Redshift API または CLI を使用してプログラムにより変更できます。

自動スナップショットを無効にするには、保持期間を 0 に設定します。自動スナップショットを無効にした場合、Amazon Redshift はスナップショットの取得を停止し、クラスターの既存の自動スナップショットを削除します。RA3 ノードタイプでは、自動スナップショットを無効にすることはできません。RA3 ノードタイプの自動保存期間を 1~35 日に設定できます。

自動スナップショットを削除できるのは Amazon Redshift のみです。手動で削除することはできません。Amazon Redshift では、スナップショットの保存期間終了時、クラスターの自動スナップショットを無効にした場合、またはクラスターを削除した場合に、自動スナップショットが削除されます。Amazon Redshift は、自動スナップショットを無効にするか、クラスターを削除するまで、最新の自動スナップショットを保持します。

自動スナップショットをもっと長い期間保持する場合は、そのコピーを手動スナップショットとして作成します。自動スナップショットは、保持期間が終わるまで保持されますが、対応する手動スナップショットは手動で削除するまで、または保持期間が終わるまで保持されます。

自動スナップショットのスケジュール

スナップショットを作成するタイミングを正確に制御するために、スナップショットスケジュールを作成し、それを 1 つ以上のクラスターにアタッチすることができます。スナップショットスケジュールを変更すると、関連付けられているすべてのクラスターのスケジュールが変更されます。クラスターにスナップショットスケジュールがアタッチされていない場合、クラスターはデフォルトの自動スナップショットスケジュールを使用します。

スナップショットスケジュール は、一連のスケジュールルールです。指定した間隔 (8 時間ごと、12 時間ごとなど) に基づいてシンプルなスケジュールルールを定義できます。特定の曜日、特定の時間、特定の期間にスナップショットを作成するためのルールを追加することもできます。ルールは Unix 互換の cron 式を使って定義することもできます。

スナップショットスケジュール形式

Amazon Redshift コンソールで、スナップショットスケジュールを作成できます。その後、スケジュールをクラスターにアタッチしてシステムスナップショットの作成をトリガーできます。スケジュールは複数のクラスターにアタッチでき、スナップショットをトリガーするためにスケジュール内に複数の cron 定義を作成できます。

cron 構文を使用してスナップショットのスケジュールを定義できます。これらのスケジュールの定義は、変更された Unix 互換の cron 構文を使用します。協定世界時 (UTC) で時間を指定します。最大頻度 1 時間、最小精度 1 分のスケジュールを作成できます。

Amazon Redshift の変更された cron 式には 3 つの必須フィールドがあり、それらは空白で区切られます。

[Syntax] (構文)

cron(Minutes Hours Day-of-month Month Day-of-week Year)
フィールド ワイルドカード

0~59

, - * /

時間

0~23

, - * /

1~31

, - * ? / L W

1~12 または JAN~DEC

, - * /

曜日

1~7 または SUN~SAT

, - * ? L #

1970~2199

, - * /

ワイルドカード
  • , (カンマ) のワイルドカードには、追加の値が含まれます。Day-of-week フィールドの、MON,WED,FRI は、月曜日、水曜日、金曜日を含みます。合計値はフィールドあたり 24 に制限されています。

  • - (ダッシュ) のワイルドカードは、範囲を指定します。Hour フィールドの、「1~15」は、指定した日の 1 時間から 15 時間を含みます。

  • [*] (アスタリスク) のワイルドカードには、フィールドのすべての値が含まれます。Hours フィールドの、* にはすべての時間が含まれています。

  • / (スラッシュ) のワイルドカードは、増分を指定します。Hours フィールドで、1/10 と入力して、その日の最初の時間から始めて、10 時間毎を指定できます (01:00、11:00、21:00 など)。

  • [?] (疑問符) のワイルドカードは、任意を意味します。Day-of-month フィールドで 7 と入力し、7 日が何曜日であってもかまわない場合、Day-of-week フィールドに ? を入力できます。

  • Day-of-month フィールドまたは Day-of-week フィールドにある [L] のワイルドカードは、月または週の最終日を指定します。

  • Day-of-month フィールドの、ワイルドカード W は、平日を指定します。Day-of-month フィールドで、3W は月の 3 番目の平日に最も近い日を指定します。

  • Day-of-week フィールドの # ワイルドカードは、月の指定された曜日の特定のインスタンスを指定します。例えば、3#2 は、月の第 2 火曜日を示します。3 は週の 3 番目の日 (火曜日) を示し、2 は月のそのタイプの 2 番目の日を示します。

    注記

    「#」文字を使用する場合、曜日フィールドには 1 つの式しか定義できません。例えば、「3#1,6#3」は 2 つの式として解釈されるため、無効です。

制限
  • Cron 式の Day-of-month フィールドと Day-of-week フィールドを同時に指定することはできません。一方のフィールドに値を指定する場合、もう一方のフィールドで [?] (疑問符) を使用する必要があります。

  • スナップショットスケジュールは以下の頻度をサポートしていません。

    • 1 時間に 1 回を超える頻度でスケジュールされるスナップショット。

    • 1 日 (24 時間) に 1 回未満の頻度でスケジュールされるスナップショット。

    1 時間以内にスナップショットをスケジュールする結果になる重複したスケジュールがある場合、検証エラーが発生します。

スケジュールを作成するときは、以下のサンプルの cron 文字列を使用できます。

時間 曜日 意味

0

14-20/1

毎週火曜日の午後 2 時から午後 8 時の間。

0

21

MON-FRI

毎晩、月曜日~金曜日の午後9時。

30

0/6

土 - 日

土曜日と日曜日は、その日の深夜 30 分過ぎ (00:30) から、6 時間ごとに増分されます。これにより、各日とも [00:30、06:30、12:30、および 18:30] にスナップショットが作成されます。

30

12/4

*

毎日 12:30 から 4 時間ごとに増分します。これにより [12:30、16:30、20:30] となります。

たとえば、毎日 15:15 から 2 時間ごとの増分のスケジュールに従って実行するとします。これにより [15:15、17:15、19:15、21:15、23:15] となりますが、次のように指定します。

cron(15 15/2 *)

スケジュールとして複数の cron スケジュール定義を作成できます。たとえば、次の AWS CLI コマンドでは、1 つのスケジュールに 2 つの cron スケジュールが含まれています。

create-snapshot-schedule --schedule-identifier "my-test" --schedule-definition "cron(0 17 SAT,SUN)" "cron(0 9,17 MON-FRI)"

手動スナップショット

手動スナップショットはいつでも取得できます。デフォルトでは、手動スナップショットは、クラスターを削除した後も、無限に保持されます。手動スナップショットを作成するときに保持期間を指定できます。スナップショットを変更して保持期間を変更することもできます。ログ保持期間の変更の詳細については、「手動スナップショット保持期間の変更」を参照してください。

スナップショットを削除した場合、そのスナップショットを参照する新しいオペレーションを開始することはできません。ただし、復元操作が進行中である場合、その復元操作は完了するまで実行されます。

Amazon Redshift には、作成できる手動スナップショットの合計数を制限するクォータがあります。このクォータは AWS アカウントごと、AWS リージョンごとにあります。デフォルトのクォータは Amazon Redshift でのクォータと制限 に一覧表示されています。

スナップショットストレージの管理

手動スナップショットにはストレージ料金が発生するので、スナップショットが不要になった場合は削除することが重要です。Amazon Redshift は、それぞれのスナップショット保持期間の終了時に自動スナップショットおよび手動スナップショットを削除します。また、AWS Management Console または batch-delete-cluster-snapshots CLI コマンドを使用して、手動スナップショットを削除できます。

手動スナップショット設定を変更して、手動スナップショット保持期間を変更できます。

Amazon Redshift コンソールまたは CLI コマンド describe-storage を使用すると、スナップショットが使用しているストレージ容量に関する情報を取得できます。

スナップショットのテーブルを除く

デフォルトでは、スナップショットにすべてのユーザー定義の永続テーブルが含まれます。ステージングテーブルなど、テーブルをバックアップする必要のない場合は、スナップショットの作成やスナップショットからの復元にかかる時間を大幅に短縮できます。さらに、バックアップしないテーブルを使用して、Amazon S3 のストレージ領域を節約することができます。バックアップしないテーブルを作成するには、テーブルの作成時に BACKUP NO のパラメータを含めてください。詳細については、Amazon Redshift データベースデベロッパーガイドCREATE TABLE および CREATE TABLE AS を参照してください。

別の AWS リージョンにスナップショットをコピーする

クラスターのスナップショット (自動または手動) を自動的に別の AWS リージョンにコピーするように Amazon Redshift を設定できます。スナップショットがクラスターのプライマリ AWS リージョンで作成されると、そのスナップショットはセカンダリ AWS リージョンにコピーされます。この 2 つの AWS リージョンは、それぞれソース AWS リージョンコピー先 AWS リージョンとして知られています。スナップショットのコピーを別の AWS リージョンに保存しておくと、プライマリ AWS リージョンに何かあった場合、最新のデータからクラスターを復元できます。一度に 1 つのコピー先 AWS リージョンにのみスナップショットをコピーするようにクラスターを設定できます。Amazon Redshift リージョンのリストについては、Amazon Web Services 全般のリファレンス の「リージョンとエンドポイント」を参照してください。

Amazon Redshift でスナップショットを別の AWS リージョンに自動的にコピーできるようにする場合、スナップショットのコピー先 AWS リージョンを指定します。自動スナップショットの場合、コピー先 AWS リージョンにスナップショットを保持する保持期間も設定できます。自動スナップショットがコピー先 AWS リージョンにコピーされ、保持期間に達すると、そのスナップショットはコピー先 AWS リージョンから削除されます。これにより、スナップショットの使用率が低く保たれます。自動スナップショットがコピー先 AWS リージョンで保持される時間を短くまたは長くするには、この保持期間を変更します。

コピー先 AWS リージョンにコピーされる自動スナップショットに対して設定する期間は、ソース AWS リージョンの自動スナップショットの保持期間とは異なります。コピーされたスナップショットのデフォルトの保持期間は 7 日です。その 7 日間は、自動スナップショットにのみ適用されます。ソースおよびコピー先の AWS リージョン両方で、手動スナップショットは、スナップショット保持期間の終了時に削除されます。または手動でも削除できます。

クラスターの自動スナップショットコピーはいつでも無効にできます。この機能を無効にすると、スナップショットはソース AWS リージョンからコピー先 AWS リージョンにコピーされなくなります。コピー先 AWS リージョンにコピーされた自動スナップショットは、手動スナップショットコピーを作成しない限り、保持期間の制限に達すると削除されます。これらの手動スナップショットおよびコピー先 AWS リージョンからコピーされた手動スナップショットは、手動で削除するまでコピー先 AWS リージョンに保持されます。

スナップショットのコピー先 AWS リージョンを変更するには、まず自動コピー機能を無効にします。次に、新しいコピー先 AWS リージョンを指定して、再度有効にします。

スナップショットがコピー先 AWS リージョンにコピーされると、そのリージョンがアクティブになり、復元目的で利用できるようになります。

AWS KMS で暗号化されたクラスターのスナップショットを別の AWS リージョンにコピーするには、コピー先の AWS リージョンでカスタマー管理のキーを使用する、Amazon Redshift のための許可を作成します。次に、ソース AWS リージョンでスナップショットのコピーを有効にするときにその許可を選択します。スナップショットコピー許可の設定に関する詳細については、「別の AWS リージョンに AWS KMS暗号化スナップショットをコピーする」を参照してください。

スナップショットからのクラスターの復元

スナップショットには、クラスターで実行されているデータベースのデータが含まれます。また、ノード数、ノードタイプ、管理者ユーザー名など、クラスターに関する情報も含まれています。スナップショットからクラスターを復元する場合、Amazon Redshift がクラスター情報を使用して新しいクラスターを作成します。次に、スナップショットデータからすべてのデータベースを復元します。

元のスナップショットから作成された新しいクラスターの場合、ノードタイプやノード数などの構成を選択できます。クラスターは同じ AWS リージョンに復元されます。アベイラビリティーゾーンに関しては、リクエスト時にアベイラビリティーゾーンを指定しない限り、システムによりランダムに選択されます。クラスターをスナップショットから復元する場合、新しいクラスターの互換性のあるメンテナンストラックをオプションで選択できます。

注記

異なる構成のクラスターにスナップショットを復元する場合、スナップショットはクラスターバージョン 1.0.10013 以降のクラスターで作成されている必要があります。

リストアの進行中は、通常、イベントは次の順序で生成されます。

  1. RESTORE_STARTED – REDSHIFT-EVENT-2008 は、復元プロセスの開始時に送信されます。

  2. RESTORE_SUCCEEDED – 新しいクラスターが作成されたときに、REDSHIFT-EVENT-3003 が送信されます。

    クラスターはクエリに使用できます。

  3. DATA_TRANSFER_COMPLETED – データ転送が完了すると、REDSHIFT-EVENT-3537 が送信されます。

注記

RA3 クラスターは、RESTORE_STARTED イベントと RESTORE_SUCCEEDED イベントのみを発行します。RA3 ノードタイプは Amazon Redshift マネージドストレージにデータを格納するため、RESTORE が成功した後に明示的にデータ転送を行う必要はありません。RA3 ノードでは、通常のクエリ処理の一環として、RA3 ノードと Amazon Redshift マネージドストレージ間でデータが継続的に転送されます。RA3 ノードは、ホットデータをローカルにキャッシュし、クエリ頻度の低いブロックを Amazon Redshift 管理ストレージに自動的に保持します。

DescribeClusters API アクションを呼び出すか、AWS Management Consoleでクラスターの詳細を表示することにより、復元の進行状況をモニタリングできます。これにより、進行中の復元について、スナップショットデータのサイズ、転送速度、経過時間、および推定残り時間などの情報が表示されます。これらのメトリクスの説明については、「RestoreStatus」を参照してください。

スナップショットを使用して、アクティブなクラスターを前の状態に切り替えることはできません。

注記

新しいクラスターにスナップショットを復元する場合、別の値を指定しない限り、デフォルトのセキュリティグループおよびパラメータグループが使用されます。

異なる構成のクラスターにスナップショットを復元する理由には、次のようなものがあります。

  • クラスターがより小さなノードタイプで構成されており、それをより少ないノードでより大きなノードタイプに統合する場合。

  • ワークロードを監視し、より多くの CPU とストレージを備えたノードタイプに移行する必要があると判断した場合。

  • 異なるノードタイプでテストワークロードのパフォーマンスを測定する場合。

復元には次の制約があります。

  • 新しいノード設定では、既存のデータに対して十分なストレージが必要です。ノードを追加するときでも、データが再分配される方法のために、新しい設定に十分なストレージがない場合があります。

  • 復元操作は、新しいクラスターのクラスターバージョンと互換性のあるクラスターバージョンでスナップショットが作成されたかどうかをチェックします。新しいクラスターのバージョンレベルが早すぎる場合、復元操作は失敗し、エラーメッセージに詳細情報が報告されます。

  • 復元可能な設定 (ノードの数とノードの種類) は、元のクラスター内のノード数と、新しいクラスターのターゲットノードタイプによって決まります。利用可能な設定を確認するには、action-type restore-clusterdescribe-node-configuration-options AWS CLI コマンド、または Amazon Redshift コンソールを使用できます。Amazon Redshift コンソールを使用した復元の詳細については、スナップショットからのクラスターの復元 を参照してください。

次の手順で、多数のノードを持つクラスターを取得し、AWS CLI を使用して少数のノードを持つより大きなノードタイプに統合します。この例では、24 ノードのソースクラスターから始めます。この場合、このクラスターのスナップショットを既に作成しており、それをより大きなノードタイプに復元するとします。

  1. 次のコマンドを実行して、24 ノードの クラスターの詳細を取得します。

    aws redshift describe-clusters --region eu-west-1 --cluster-identifier mycluster-123456789012
  2. 次のコマンドを実行して、スナップショットの詳細を取得します。

    aws redshift describe-cluster-snapshots --region eu-west-1 --snapshot-identifier mycluster-snapshot
  3. 次のコマンドを実行して、このスナップショットで使用可能なオプションの詳細を表示します。

    aws redshift describe-node-configuration-options --snapshot-identifier mycluster-snapshot --region eu-west-1 --action-type restore-cluster

    このコマンドは、各オプションの推奨ノードタイプ、ノード数、およびディスク使用率を含むオプションリストを返します。この例では、前述のコマンドは次の可能なノード構成をリストします。3 ノードの クラスターに復元することを選択します。

    { "NodeConfigurationOptionList": [ { "EstimatedDiskUtilizationPercent": 65.26134808858235, "NodeType": "dc2.large", "NumberOfNodes": 24 }, { "EstimatedDiskUtilizationPercent": 32.630674044291176, "NodeType": "dc2.large", "NumberOfNodes": 48 }, { "EstimatedDiskUtilizationPercent": 65.26134808858235, "NodeType": "dc2.8xlarge", "NumberOfNodes": 3 }, { "EstimatedDiskUtilizationPercent": 48.94601106643677, "NodeType": "dc2.8xlarge", "NumberOfNodes": 4 }, { "EstimatedDiskUtilizationPercent": 39.156808853149414, "NodeType": "dc2.8xlarge", "NumberOfNodes": 5 }, { "EstimatedDiskUtilizationPercent": 32.630674044291176, "NodeType": "dc2.8xlarge", "NumberOfNodes": 6 } ] }
  4. 次のコマンドを実行して、選択したクラスター構成にスナップショットを復元します。このクラスターが復元された後、ソースクラスターと同じコンテンツがありますが、データは 3 つの dc2.8xlarge ノードに統合されています。

    aws redshift restore-from-cluster-snapshot --region eu-west-1 --snapshot-identifier mycluster-snapshot --cluster-identifier mycluster-123456789012-x --node-type dc2.8xlarge --number-of-nodes 3

リザーブドノード (DC2 リザーブドノードなど) がある場合は、RA3 リザーブドノードにアップグレードできます。このアップグレードは、スナップショットからの復元を実行する場合、あるいは伸縮自在なリサイズを実行する場合に利用できます。コンソールを使用している場合は、このプロセスに関するガイドが提供されます。RA3 ノードへのアップグレードの詳細については、「RA3 ノードタイプへのアップグレード」を参照してください。

スナップショットからのテーブルの復元

クラスター全体を復元する代わりに、スナップショットから単一のテーブルを復元できます。スナップショットから単一のテーブルを復元する場合、ソースのスナップショット、データベース、スキーマ、テーブル名、ターゲットのデータベース、スキーマ、および復元されるテーブル用の新しいテーブル名を指定します。

新しいテーブル名を、既存のテーブルの名前にすることはできません。既存のテーブルを、スナップショットから復元されるテーブルに置き換えるには、スナップショットからテーブルを復元する前に、既存のテーブルの名前を変更するか、削除します。

ターゲットテーブルは、ソーステーブルの列の定義、テーブル属性、および外部キーを除く列の属性を使って作成されます。依存関係による競合を回避するため、ターゲットテーブルはソーステーブルから外部キーを継承しません。ソーステーブルで付与されたビューや許可などの依存関係は、ターゲットテーブルに適用されません。

ソーステーブルの所有者が存在する場合、そのデータベースユーザーが復元したテーブルの所有者となるのは、指定したデータベースやスキーマの関係の所有者となる十分なアクセス許可を持っている場合のみです。それ以外の場合には、クラスターの起動時に作成した管理者ユーザーが、復元されたテーブルを所有します。

復元されたテーブルは、バックアップが作成された時の状態に戻されます。これには、Amazon Redshift の直列化分離への準拠により定義されるトランザクションの可視性のルールが含まれます。つまり、バックアップ後に開始した実行中のトランザクションにデータがすぐに見えるようになるということです。

スナップショットからのテーブルの復元には、以下の制限があります。

  • テーブルは、実行中のアクティブなクラスターのみに復元でき、そのクラスターから作成されたスナップショットのみから復元できます。

  • 一度に復元できるのは 1 つのテーブルのみです。

  • クラスターのサイズを変更する前に作成されたクラスターのスナップショットからテーブルを復元することはできません。例外として、ノードタイプが変更されていない場合は、伸縮自在にサイズを変更した後にテーブルを復元できます。

  • ソーステーブルで付与されたビューや許可などの依存関係は、ターゲットテーブルに適用されません。

  • 復元中のテーブルに対して行レベルのセキュリティが有効になっている場合、Amazon Redshift は、行レベルのセキュリティがオンになっているテーブルを復元します。

スナップショットからテーブルを復元するには
  1. AWS Management Console にサインインして、 https://console.aws.amazon.com/redshiftv2/で Amazon Redshift コンソールを開きます。

  2. ナビゲーションメニューで、[Clusters] (クラスター) を選択して、テーブルを復元するクラスターを選択します。

  3. [アクション] で、[テーブルの復元] を選択して [テーブルの復元] ページを表示します。

  4. どのスナップショット、ソーステーブル、およびターゲットテーブルを使うかに関する情報を入力し、次に [テーブルの復元] を選択します。

例: AWS CLI を使用してスナップショットからテーブルを復元する

次の例では、restore-table-from-cluster-snapshot AWS CLI コマンドを使用して、my-source-tablesample-database スキーマから my-snapshot-id テーブルを復元します。AWS CLI コマンド describe-table-restore-status を使用して、復元操作のステータスを確認できます。例では、新しいテーブルの名前 mycluster-example を使用して、my-new-table クラスターにスナップショットを復元します。

aws redshift restore-table-from-cluster-snapshot --cluster-identifier mycluster-example --new-table-name my-new-table --snapshot-identifier my-snapshot-id --source-database-name sample-database --source-table-name my-source-table

スナップショットの共有

1 つの既存の手動スナップショットについては、そのスナップショットへのアクセスを許可することにより、他の AWS 顧客アカウントのユーザーと共有することができます。各スナップショットは最大 20 個、各 AWS Key Management Service (AWS KMS) キーは最大 100 個まで許可できます。つまり、1 つの KMS キーで暗号化された 10 個のスナップショットがある場合、10 個の AWS アカウントに各スナップショットを復元することを許可できます。または、最大 100 個のアカウントのその他の組み合わせや、スナップショットごとに 20 個のアカウントを超えないその他の組み合わせを許可できます。アクセス権限が付与されたいずれかのアカウントのユーザーとしてログインされた担当者は、スナップショットを表示することも、当該アカウントでスナップショットを復元して新しい Amazon Redshift クラスターを作成することもできます。例えば、実稼働用およびテスト用に個別の AWS 顧客アカウントを使用する場合、ユーザーは本番用アカウントを使用してログオンし、テスト用アカウントのユーザーとスナップショットを共有することができます。テスト用アカウントのユーザーとしてログオンされた担当者は、テストまたは診断作業のためのテスト用アカウントによって所有される新しいクラスターを作成するためにスナップショットを復元することができます。

手動スナップショットは、それが作成された AWS 顧客アカウントによって永続的に所有されます。スナップショットを所有するアカウントのユーザーのみが、スナップショットへのアクセスを他のアカウントに許可したり、アクセス許可を取り消したりすることができます。アクセス権限が付与されたアカウントのユーザーは、そのアカウントと共有されているスナップショットの表示または復元が行えるだけで、共有されているスナップショットのコピーや削除を行うことはできません。アクセス許可はスナップショットの所有者がそれを取り消すまで有効です。アクセス許可が取り消されると、前にアクセス権限を付与されたユーザーはスナップショットの可視性を失い、スナップショットを参照する新しいアクションを起動できなくなります。アクセス権限が取り消される際、アカウントがスナップショットを復元するプロセスの途中にあった場合、復元は完了するまで実行されます。スナップショットにアクティブ認可がある限り、そのスナップショットを削除することはできません。まず、すべてのアクセス許可を取り消す必要があります。

AWS 顧客アカウントには、該当するアカウントによって所有されるスナップショットへのアクセスが常に許可されます。所有者アカウントへのアクセスを許可する試みまたは取り消す試みを行うと、エラーが発生します。非アクティブ AWS 顧客アカウントによって所有されているスナップショットを復元または表示することはできません。

AWS カスタマーアカウントへのアクセスを許可した場合、そのアカウントのユーザーがスナップショットに対してアクションを実行するには、それを許可するポリシーを持つロールを引き受ける必要があります。

  • スナップショット所有者アカウントのユーザーがスナップショットへのアクセスを許可および取り消しできるのは、当該スナップショットを含むリソース仕様でそのようなアクションの実行を許可する IAM ポリシーを持つロールを引き受けた場合に限られます。例えば、次のポリシーでは、AWS アカウント 012345678912 のユーザーまたはロールは、my-snapshot20130829 という名前のスナップショットへのアクセスを他のアカウントに許可できます。

    { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:AuthorizeSnapshotAccess", "redshift:RevokeSnapshotAccess" ], "Resource":[ "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829" ] } ] }
  • スナップショットを共有している AWS アカウントのユーザーがそのスナップショットに対してアクションを実行するには、そのようなアクションを実行するためのアクセス許可が必要です。そのためには、ポリシーをロールに割り当て、そのロールを引き受けます。

    • スナップショットを一覧表示するか、または表示するためには、前述ユーザーは DescribeClusterSnapshots アクションを許可する IAM ポリシーを持っている必要があります。コードの例を以下に示します。

      { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusterSnapshots" ], "Resource":[ "*" ] } ] }
    • ユーザーがスナップショットを復元するには、RestoreFromClusterSnapshot アクションを許可する IAM ポリシーを持つロールを引き受ける必要があり、その IAM ポリシーにはユーザーが作成するクラスターとスナップショットの両方に対応するリソース要素が含まれている必要があります。例えば、アカウント 012345678912 のユーザーがスナップショット my-snapshot20130829 をアカウント 219876543210 と共有している場合、スナップショットを復元してクラスターを作成するには、アカウント 219876543210 のユーザーが次のようなポリシーを持つロールを引き受ける必要があります。

      { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:RestoreFromClusterSnapshot" ], "Resource":[ "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829", "arn:aws:redshift:us-east-1:219876543210:cluster:from-another-account" ] } ] }
    • スナップショットへのアクセスが AWS アカウントから取り消された後、そのアカウントのユーザーはスナップショットにアクセスできなくなります。これは、これらのアカウント内に、以前に共有したスナップショットリソースへのアクションを許可する IAM ポリシーがある場合でも同様です。