

# Amazon RDS Custom for SQL Server DB スナップショットのコピー
<a name="custom-copying-snapshot-sqlserver"></a>

RDS Custom for SQL Server を使用すると、自動バックアップまたは手動 DB スナップショットをコピーできます。スナップショットをコピーすると、作成するコピーは手動スナップショットになります。自動バックアップまたは手動スナップショットは複数のコピーを作成できますが、各コピーには一意の識別子が必要です。

RDS Custom for SQL Server が利用可能な異なる AWS リージョン の同じ AWS アカウント内でのみスナップショットをコピーできます。以下のオペレーションは現在サポートされていません。
+ 同じ AWS リージョン 内で DB スナップショットをコピーする。
+ AWS アカウント間で DB スナップショットをコピーする。

RDS Custom for SQL Server は、増分スナップショットコピーをサポートしています。詳細については、「[増分スナップショットのコピーに関する考慮事項](USER_CopySnapshot.md#USER_CopySnapshot.Incremental)」を参照してください。

**Topics**
+ [

## 制限事項
](#custom-copying-snapshot-sqlserver.Limitations)
+ [

## 暗号化の処理
](#custom-copying-snapshot-sqlserver.Encryption)
+ [

## リージョン間のコピー
](#custom-copying-snapshot-sqlserver.XRCopy)
+ [

## カスタムエンジンバージョン (CEV) で作成された DB インスタンスのスナップショット
](#custom-copying-snapshot-sqlserver.CEVSnap)
+ [

## IAM プリンシパルに必要なアクセス権限を付与します。
](#custom-copying-snapshot-sqlserver.GrantPermIAM)
+ [

## DB スナップショットのコピー
](#custom-copying-snapshot-sqlserver.CopyingDBSnapshot)

## 制限事項
<a name="custom-copying-snapshot-sqlserver.Limitations"></a>

RDS Custom for SQL Server の DB スナップショットのコピーには、次の制限が適用されます。
+ ターゲットスナップショットが使用可能になる前に出典スナップショットを削除すると、スナップショットはコピーされない場合があります。ターゲットスナップショットのステータスが `AVAILABLE` になったことを確認してから、ソーススナップショットを削除してください。
+ DB スナップショットのコピーリクエストでオプショングループ名を指定したり、オプショングループをコピーしたりすることはできません。
+ コピープロセス前またはコピープロセス中にソース DB スナップショットの依存 AWS リソースを削除すると、コピースナップショットリクエストが非同期的に失敗する可能性があります。
  + アカウントの RDS Custom マネージド S3 バケットに保存されているソース DB インスタンスのサービスマスターキー (SMK) バックアップファイルを削除すると、DB スナップショットのコピーは非同期的に成功します。ただし、TDE が有効になっているデータベースなど、SQL Server の機能は SMK に依存するため、問題が発生します。詳細については、「[RDS Custom for SQL Server の TDE が有効なデータベースの PENDING\$1RECOVERY 状態のトラブルシューティング](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.pending_recovery)」を参照してください。
+ 同じ AWS リージョン 内の DB スナップショットのコピーは現在サポートされていません。
+ AWS アカウント間での DB スナップショットのコピーは現在サポートされていません。

Amazon RDS の DB スナップショットのコピーの制限は、RDS Custom for SQL Server にも適用されます。詳細については、「[制限事項](USER_CopySnapshot.md#USER_CopySnapshot.Limitations)」を参照してください。

## 暗号化の処理
<a name="custom-copying-snapshot-sqlserver.Encryption"></a>

すべての RDS Custom for SQL Server DB インスタンスと DB スナップショットは KMS キーで暗号化されます。暗号化されたスナップショットは暗号化されたスナップショットにのみコピーできるため、DB スナップショットのコピーリクエストのコピー先 AWS リージョン で有効な KMS キーを指定する必要があります。

ソーススナップショットはコピープロセス全体で暗号化されたままになります。Amazon RDS は、エンベロープ暗号化を使用して、指定されたコピー先の AWS リージョン KMS キーによるコピーオペレーション中にデータを保護します。詳細については、「AWS Key Management Service デベロッパーガイド**」の「[エンベロープ暗号化](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)」を参照してください。

## リージョン間のコピー
<a name="custom-copying-snapshot-sqlserver.XRCopy"></a>

AWS リージョン 間で DB スナップショットをコピーできます。ただし、クロスリージョンのスナップショットコピーには、特定の制約と考慮事項があります。

### RDS がスナップショットのコピーのために AWS リージョン 間で通信することを許可する
<a name="custom-copying-snapshot-sqlserver.XRCopy.Authorize"></a>

リージョン間の DB スナップショットのコピーリクエストが正常に処理されると、RDS はコピーを開始します。RDS がソーススナップショットにアクセスするための認証リクエストが作成されます。この認証リクエストは、ソース DB スナップショットをターゲット DB スナップショットにリンクします。これにより、RDS は指定されたターゲットスナップショットにのみコピーできます。

RDS は、サービスにリンクされた IAM ロールの `rds:CrossRegionCommunication` アクセス許可を使用して認証を検証します。コピーが認証されると、RDS はコピー元リージョンと通信し、コピーオペレーションを完了します。

RDS は、CopyDBSnapshot リクエストによって以前に許可されていない DB スナップショットにアクセスできません。コピーが完了すると、認証は取り消されます。

RDS は、サービスリンクされたロールを使用して、出典リージョンでの承認を確認します。コピープロセス中にサービスリンクロールを削除すると、コピーは失敗します。

詳細については、「AWS Identity and Access Management ユーザーガイド**」の「[サービスにリンクされたロールの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)」を参照してください。

### AWS Security Token Service 認証情報の使用
<a name="custom-copying-snapshot-sqlserver.XRCopy.STS"></a>

グローバル AWS Security Token Service (AWS STS) エンドポイントからのセッショントークンは、デフォルトで有効になっている AWS リージョン (商用リージョン) でのみ有効です。`assumeRole` の AWS STS API 操作からの認証情報を使用する場合、出典リージョンがオプトインリージョンである場合は、そのリージョンのエンドポイントを使用します。それ以外の場合、このリクエストは失敗します。認証情報が両方のリージョンで有効である必要があります。これは、そのリージョンの AWS STS エンドポイントが使用されている場合のみオプトインリージョンに当てはまります。

グローバルエンドポイントを使用するには、オペレーションで両方のリージョンで有効になっていることを確認します。AWS STS アカウント設定のすべての AWS リージョン でグローバルエンドポイントを `Valid` に設定します。

詳細については、「AWS Identity and Access Management ユーザーガイド**」の「[AWS リージョン での AWS STS の管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)」を参照してください。

## カスタムエンジンバージョン (CEV) で作成された DB インスタンスのスナップショット
<a name="custom-copying-snapshot-sqlserver.CEVSnap"></a>

[カスタムエンジンバージョン (CEV)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev-sqlserver.html) を使用する DB インスタンスの DB スナップショットの場合、RDS は CEV を DB スナップショットに関連付けます。CEV に関連付けられたソース DB スナップショットを AWS リージョン 間でコピーするために、RDS はソース DB スナップショットとともに CEV をコピー先リージョンにコピーします。

同じ CEV に関連付けられた複数の DB スナップショットを同じコピー先リージョンにコピーする場合、最初のコピーリクエストは関連付けられた CEV をコピーします。次のリクエストのコピープロセスでは、最初にコピーされた CEV を検索し、それを次の DB スナップショットコピーに関連付けます。DB スナップショットコピーに関連付けるには、既存の CEV コピーが `AVAILABLE` 状態である必要があります。

CEV に関連付けられた DB スナップショットをコピーするには、リクエスタの IAM ポリシーに、DB スナップショットのコピーと関連付けられた CEV のコピーの両方を許可するアクセス許可が必要です。関連付けられた CEV のコピーを許可するには、リクエスタの IAM ポリシーで次のアクセス許可が必要です。
+ `rds:CopyCustomDBEngineVersion` - リクエスタ IAM プリンシパルには、ソース DB スナップショットとともにソース CEV をコピー先リージョンにコピーするアクセス許可が必要です。リクエスタ IAM プリンシパルがソース CEV のコピーを認証されていない場合、スナップショットのコピーリクエストは認証エラーにより失敗します。
+ `ec2:CreateTags` - ソース CEV の基盤となる EC2 AMI は、CEV のコピーの一部としてコピー先リージョンにコピーされます。RDS Custom は、AMI をコピーする前に AMI に `AWSRDSCustom` タグを付けようとします。リクエスタ IAM プリンシパルに、ソースリージョンのソース CEV の基盤となる AMI に対してタグを作成するアクセス許可があることを確認します。

CEV コピーのアクセス許可の設定については、「[IAM プリンシパルに必要なアクセス権限を付与します。](#custom-copying-snapshot-sqlserver.GrantPermIAM)」を参照してください。

## IAM プリンシパルに必要なアクセス権限を付与します。
<a name="custom-copying-snapshot-sqlserver.GrantPermIAM"></a>

RDS Custom for SQL Server DB スナップショットをコピーするための十分なアクセス権があることを確認してください。コンソールまたは CLI を使用して DB スナップショットをコピーするための IAM ロールまたは IAM ユーザー (IAM プリンシパル) には、DB インスタンスを正常に作成するために、次のいずれかのポリシーが必要です。
+ `AdministratorAccess` ポリシー、または
+ 追加のアクセス許可を持つ`AmazonRDSFullAccess`ポリシーです。

  ```
  s3:CreateBucket
  s3:GetBucketPolicy
  s3:PutBucketPolicy
  kms:CreateGrant
  kms:DescribeKey
  ec2:CreateTags
  ```

RDS Custom は、AWS リージョン 間でスナップショットをコピーするときにこれらのアクセス許可を使用します。これらのアクセス許可は、RDS Custom オペレーションに必要なアカウントのリソースを設定します。`kms:CreateGrant` アクセス許可の詳細については、「[AWS KMS key 管理](Overview.Encryption.Keys.md)」を参照してください。

次のサンプル JSON ポリシーにより、`AmazonRDSFullAccess` ポリシーの他に必要なアクセス許可が付与されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateS3BucketAndReadWriteBucketPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketPolicy",
                "s3:GetBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateKmsGrant",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CreateEc2Tags",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**注記**  
リストされたアクセス許可が、IAM プリンシパルに関連付けられたサービスコントロールポリシー (SCP)、アクセス許可の境界、またはセッションポリシーによって制限されていないことを確認します。

リクエスタの IAM ポリシーでコンテキストキーを使用した条件を指定すると、特定の条件によってリクエストが失敗する可能性があります。IAM ポリシー条件による一般的な落とし穴についての詳細は、「[クロスリージョン DB スナップショットコピーのリクエスト](USER_CopySnapshot.md#USER_CopySnapshot.AcrossRegions.Policy)」を参照してください。

## DB スナップショットのコピー
<a name="custom-copying-snapshot-sqlserver.CopyingDBSnapshot"></a>

DB スナップショットをコピーするには、次の手順に従います。AWS アカウントごとに、AWS リージョン 間で同時に最大 20 個の DB スナップショットをコピーできます。別の AWS リージョン に DB スナップショットをコピーする場合には、その AWS リージョン に保持されている手動 DB スナップショットを作成します。コピー元の AWS リージョン から DB スナップショットをコピーすると、Amazon RDS のデータ転送料金が発生します。データ転送料金の詳細については、「[Amazon RDS の料金](https://aws.amazon.com/rds/pricing/)」を参照してください。

DB スナップショットのコピーが新しい AWS リージョン に作成されると、その DB スナップショットのコピーは、AWS リージョン にある他のすべての DB スナップショットと同じように動作します。

AWS マネジメントコンソール、AWS CLI、または Amazon RDS API を使用して DB スナップショットをコピーできます。

------
#### [ Console ]

次の手順では、AWS マネジメントコンソール を使用して RDS Custom for SQL Server DB スナップショットをコピーします。

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、「**Snapshots**」 を選択します。

1. コピーする RDS Custom for SQL Server DB スナップショットを選択します。

1. **[アクション]** ドロップダウンで、**[スナップショットをコピー]** を選択します。  
![\[Amazon RDS コンソールの [スナップショットのコピー] ページ。設定がページにロードされます。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/XRSC-Snapshot-Copy.png)

1. DB スナップショットを別の AWS リージョン にコピーするには、**[送信先リージョン]** を必要な値に設定します。
**注記**  
コピー先 AWS リージョン は、コピー元 AWS リージョン と同じデータベースエンジンのバージョンを使用できる必要があります。

1. **[新しい DB スナップショット ID]** に DB スナップショットの一意の名前を入力します。自動バックアップまたは手動スナップショットは複数のコピーを作成できますが、各コピーには一意の識別子が必要です。

1. (オプション) スナップショットからスナップショットのコピーにタグと値をコピーするには、[**Copy Tags**] を選択します。

1. **[暗号化]** で、DB スナップショットコピーの暗号化に使用する KMS キー識別子を指定します。
**注記**  
RDS Custom for SQL Server は、すべての DB スナップショットを暗号化します。暗号化されていない DB スナップショットを作成することはできません。

1. **[スナップショットをコピー]** を選択します。

RDS Custom for SQL Server は、選択した AWS リージョン に DB インスタンスの DB スナップショットコピーを作成します。

------
#### [ AWS CLI ]

AWS CLI の [https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-snapshot.html) コマンドを使用して、RDS Custom for SQL Server DB スナップショットをコピーできます。スナップショットのコピー先が新しい AWS リージョン である場合は、その新しい AWS リージョン でコマンドを実行します。DB スナップショットをコピーするには、以下のオプションを使用します。状況に応じてオプションを使い分けることができます。
+ `--source-db-snapshot-identifier` - ソース DB スナップショットの識別子。
  + スナップショットのコピー元とコピー先が異なる AWS リージョン である場合は、有効な DB スナップショットの ARN を指定します。例: `arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678` 
+ `--target-db-snapshot-identifier` - DB スナップショットの新しいコピーの識別子。
+ `--kms-key-id` - 暗号化された DB スナップショットの KMS キー識別子。KMS キー識別子は、KMS キーの Amazon リソースネーム (ARN)、キー識別子、またはキーエイリアスです。
  + 暗号化されたスナップショットを別の AWS リージョン にコピーする場合は、コピー先 AWS リージョン の KMS キーを指定する必要があります。KMS キーは、それらが作成された AWS リージョン に固有のものであるため、マルチリージョンキーを使用する場合を除き、ある AWS リージョン の暗号化キーを別の AWS リージョン で使用することはできません。マルチリージョンの KMS キーの詳細については、「[AWS KMS でマルチリージョンキーを使用する](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)」を参照してください。
+ `--copy-tags` - ソーススナップショットからスナップショットのコピーにのタグと値を含めます。

RDS Custom for SQL Server DB スナップショットのコピーでは、以下のオプションはサポートされていません。
+ `--copy-option-group `
+ `--option-group-name`
+ `--pre-signed-url`
+ `--target-custom-availability-zone`

次のコード例では、米国西部 (オレゴン) リージョンから米国東部 (バージニア北部) リージョンに暗号化された DB スナップショットをコピーします。コピー先リージョン (us-east-1) でコマンドを実行します。

Linux、macOS、Unix の場合:

```
aws rds copy-db-snapshot \
     --region us-east-1 \
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678 \
    --target-db-snapshot-identifier mydbsnapshotcopy \
    --kms-key-id a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
```

Windows の場合:

```
aws rds copy-db-snapshot ^
     --region us-east-1 ^
    --source-db-snapshot-identifier arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678 ^
    --target-db-snapshot-identifier mydbsnapshotcopy ^
    --kms-key-id a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
```

------
#### [ RDS API ]

Amazon RDS API の [CopyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBSnapshot.html) オペレーションを使用して、RDS Custom for SQL Server DB スナップショットをコピーできます。スナップショットのコピー先が新しい AWS リージョン である場合は、その新しい AWS リージョン でアクションを実行します。DB スナップショットをコピーするには、以下のパラメータを使用します。すべてのパラメータが必須なわけではありません。
+ `SourceDBSnapshotIdentifier` - ソース DB スナップショットの識別子。
  + スナップショットのコピー元とコピー先が異なる AWS リージョン である場合は、有効な DB スナップショットの ARN を指定します。例: `arn:aws:rds:us-west-2:123456789012:snapshot:instance1-snapshot-12345678`
+ `TargetDBSnapshotIdentifier` - DB スナップショットの新しいコピーの識別子。
+ `KmsKeyId` - 暗号化された DB スナップショットの KMS キー識別子。KMS キー識別子は、KMS キーの Amazon リソースネーム (ARN)、キー識別子、またはキーエイリアスです。
  + 暗号化されたスナップショットを別の AWS リージョン にコピーする場合は、コピー先 AWS リージョン の KMS キーを指定する必要があります。KMS キーは、それらが作成された AWS リージョン に固有のものであるため、マルチリージョンキーを使用する場合を除き、ある AWS リージョン の暗号化キーを別の AWS リージョン で使用することはできません。マルチリージョンの KMS キーの詳細については、「[AWS KMS でマルチリージョンキーを使用する](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)」を参照してください。
+ `CopyTags` - ソーススナップショットからスナップショットのコピーにタグと値をコピーするには、このパラメータを `true` に設定します。デフォルトは `false` です。

以下のオプションは、RDS Custom for SQL Server DB スナップショットのコピーではサポートされていません。
+ `CopyOptionGroup`
+ `OptionGroupName`
+ `PreSignedUrl`
+ `TargetCustomAvailabilityZone`

次のコードでは、スナップショットのコピーを `mydbsnapshotcopy` という新しい名前で米国東部 (バージニア北部) リージョンに作成します。

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CopyDBSnapshot
    &KmsKeyId=a1b2c3d4-1234-5678-wxyz-a1b2c3d4d5e6
    &SourceDBSnapshotIdentifier=arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Asnapshot%3Ainstance1-snapshot-12345678
    &TargetDBSnapshotIdentifier=mydbsnapshotcopy
    &Version=2014-10-31
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20161117/us-east-1/rds/aws4_request
    &X-Amz-Date=20161117T221704Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=da4f2da66739d2e722c85fcfd225dc27bba7e2b8dbea8d8612434378e52adccf
```

------