

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# のターゲットとしての Redis OSS の使用 AWS Database Migration Service
<a name="CHAP_Target.Redis"></a>

Redis OSS は、オープンソースのインメモリ データ構造ストアで、データベース、キャッシュ、メッセージブローカーとして使用されます。データ インメモリを管理すると、読み取りまたは書き込みオペレーションにかかる時間が 1 msec 未満になり、毎秒数億のオペレーションが実行される可能性があります。インメモリデータストアとして、Redis OSS は、ミリ秒未満の応答時間を必要とする最も要求の厳しいアプリケーションの電源となります。

を使用すると AWS DMS、最小限のダウンタイムで、サポートされているソースデータベースからターゲット Redis OSS データストアにデータを移行できます。Redis OSS の詳細については、「[Redis OSS ドキュメント](https://redis.io/documentation)」をご参照ください。

オンプレミス Redis OSS に加えて、 は以下 AWS Database Migration Service をサポートしています。
+ ターゲットデータストアとしての [Amazon ElastiCache (Redis OSS)](https://aws.amazon.com/elasticache/redis/)。ElastiCache (Redis OSS) は Redis OSS クライアントと連携し、オープンな Redis OSS データ形式を使用してデータを格納します。
+ ターゲットデータストアとしての [Amazon MemoryDB](https://aws.amazon.com/memorydb/)。MemoryDB は Redis OSS と互換であり、今日使用されているすべての Redis OSS データ構造および API、コマンドを使用してアプリケーションを構築できます。

のターゲットとして Redis OSS を使用する方法の詳細については AWS DMS、以下のセクションを参照してください。

**Topics**
+ [のターゲットとして Redis OSS クラスターを使用するための前提条件 AWS DMS](#CHAP_Target.Redis.Prerequisites)
+ [のターゲットとして Redis を使用する場合の制限 AWS Database Migration Service](#CHAP_Target.Redis.Limitations)
+ [リレーショナルデータベースまたは非リレーショナルデータベースから Redis OSS ターゲットへのデータ移行](#CHAP_Target.Redis.Migrating)
+ [ターゲットとしての Redis OSS エンドポイント設定の指定](#CHAP_Target.Redis.EndpointSettings)

## のターゲットとして Redis OSS クラスターを使用するための前提条件 AWS DMS
<a name="CHAP_Target.Redis.Prerequisites"></a>

DMS は、スタンドアロン構成で、またはデータが複数のノードにわたって自動的に*シャード*される Redis OSS クラスターとしてオンプレミス Redis OSS ターゲットに対応します。シャーディングとは、複数のサーバーまたはノードに分散されるシャードと呼ばれる小さなチャンクにデータを分離するプロセスです。実際、シャードは総データ セットのサブセットを含むデータ パーティションであり、全体的なワークロードのスライスを提供します。

Redis OSS はキー値 NoSQL データ ストアであるため、ソースがリレーショナルデータベースである場合に使用する Redis OSS キーの命名規則は、**schema-name.table-name.primary-key** です。Redis OSS では、キーと値に特殊文字 % を含めることはできません。それ以外の場合、DMS はレコードをスキップします。

**注記**  
ElastiCache (Redis OSS) をターゲットとして使用している場合、DMS は*クラスターモードの有効化*構成のみに対応します。ElastiCache (Redis OSS) バージョン 6.x 以降を使用してクラスターモードが有効になっているターゲットデータストアを作成する方法の詳細については、「*Amazon ElastiCache (Redis OSS) ユーザーガイド*」の「[Getting started](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/GettingStarted.html)」を参照してください。

データベースの移行を開始する前に、次の条件を使用して Redis OSS クラスターを起動します。
+ クラスターに 1 つ以上のシャードがあります。
+ ElastiCache (Redis OSS) ターゲットを使用している場合は、クラスターが IAM ロールベースのアクセス制御を使用していないことを確認してください。代わりに、Redis OSS Auth を使用してユーザーを認証します。
+ マルチ AZ (アベイラビリティーゾーン) を有効にします。
+ データベースから移行されるデータに適合するのに十分なメモリがクラスターにあることを確認します。
+ 最初の移行タスクをスタートする前に、ターゲット Redis OSS クラスターがすべてのデータからクリアされていることを確認してください。

クラスター構成を作成する前に、データ移行のセキュリティ要件を決定する必要があります。DMS は、暗号化構成に関係なく、ターゲット レプリケーション グループへの移行をサポートします。ただし、暗号化を有効または無効にできるのは、クラスター構成を作成するときに限られます。

## のターゲットとして Redis を使用する場合の制限 AWS Database Migration Service
<a name="CHAP_Target.Redis.Limitations"></a>

ターゲットとして Redis OSS を使用する場合、以下の制限が適用されます。
+ Redis OSS はキー値 no-sql データストアであるため、ソースがリレーショナルデータベースである場合に使用する Redis OSS キー命名規則は `schema-name.table-name.primary-key` になります。
+ Redis OSS では、キー値に特殊文字 `%` を含めることはできません。それ以外の場合、DMS はレコードをスキップします。
+ DMS では、`%` 文字を含む行は移行されません。
+ DMS では、フィールド名に `%` 文字が含まれているフィールドは移行されません。
+ 完全 LOB モードはサポートされていません。
+  ElastiCache (Redis OSS) をターゲットとして使用する場合、Private Certificate Authority (CA) はサポートされません。
+ AWS DMS ターゲットエンドポイントとして Redis を使用する場合、 は埋め込み`'\0'`文字を含むソースデータをサポートしていません。埋め込み`'\0'`文字を含むデータは、最初の`'\0'`文字で切り捨てられます。

## リレーショナルデータベースまたは非リレーショナルデータベースから Redis OSS ターゲットへのデータ移行
<a name="CHAP_Target.Redis.Migrating"></a>

任意のソース SQL または NoSQL データストアから Redis OSS ターゲットに直接データを移行できます。Redis OSS ターゲットへの移行の設定とスタートは、DMS コンソールまたは API を使用した全ロードと変更データ キャプチャの移行と同様です。Redis OSS ターゲットへのデータベース移行を実行するには、次の操作を行います。
+ 移行のすべてのプロセスを実行するレプリケーション インスタンスを作成します。詳細については、「[レプリケーション インスタンスの作成](CHAP_ReplicationInstance.Creating.md)」をご参照ください。
+ ソースエンドポイントを指定します。詳細については、「[ソースおよびターゲットエンドポイントの作成](CHAP_Endpoints.Creating.md)」をご参照ください。
+ クラスターの DNS 名とポート番号を見つけます。
+ SSL 接続を確認するために使用できる証明書バンドルをダウンロードします。
+ 次の説明に従って、ターゲット エンドポイントを指定します。
+ 使用するテーブルとレプリケーション プロセスを定義するタスクまたはタスクセットを作成します。詳細については、「[[Creating a task] (タスクの作成)](CHAP_Tasks.Creating.md)」をご参照ください。
+ ソースデータベースからターゲット クラスターにデータを移行します。

データベースの移行は、次の 2 つのいずれかの方法で開始します：

1.  AWS DMS コンソールを選択し、そこで各ステップを実行できます。

1.  AWS Command Line Interface () を使用できますAWS CLI。で CLI を使用する方法の詳細については AWS DMS、「」の[AWS CLIAWS DMS](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)「」を参照してください。

**クラスターの DNS 名とポート番号を見つけるには**
+ 次の AWS CLI コマンドを使用して、 `replication-group-id`にレプリケーショングループの名前を指定します。

  ```
  aws elasticache describe-replication-groups --replication-group-id myreplgroup
  ```

  ここで、出力は `Address` 属性では DNS 名、クラスター内のプライマリノードの`Port` 属性にポート番号を表示します。

  ```
   ...
  "ReadEndpoint": {
  "Port": 6379,
  "Address": "myreplgroup-
  111.1abc1d.1111.uuu1.cache.example.com"
  }
  ...
  ```

  MemoryDB をターゲットとして使用する場合は、以下の AWS CLI コマンドを使用して Redis OSS クラスターにエンドポイントアドレスを提供します。

  ```
  aws memorydb describe-clusters --clusterid clusterid
  ```

**SSL 接続を確認するために使用できる証明書バンドルをダウンロードします。**
+ コマンドラインで、以下の `wget` コマンドを入力します。Wget は、インターネットからファイルをダウンロードするために使用される無料の GNU コマンドライン ユーティリティツールです。

  ```
  wget https://s3.aws-api-domain/rds-downloads/rds-combined-ca-bundle.pem
  ```

  ここで、 は、指定した S3 バケットと、それが提供する rds-combined-ca-bundle.pem ファイルにアクセスするために必要なリージョンの Amazon S3 ドメイン`aws-api-domain`を完了します。 AWS rds-combined-ca-bundle

**AWS DMS コンソールを使用してターゲットエンドポイントを作成するには**

このエンドポイントは、既に実行中の Redis OSS ターゲット用です。
+ コンソールで、ナビゲーションペインから **[Endpoints]** (エンドポイント) を選択し、次に‭　**[Create Endpoint]** (エンドポイントの作成) を選択します。次の表で設定について説明します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Target.Redis.html)

エンドポイントのすべての情報を入力したら、 AWS DMS は、データベース移行中に使用する Redis OSS ターゲットエンドポイントを作成します。

移行タスクの作成とデータベース移行のスタートについては、「[[Creating a task] (タスクの作成)](CHAP_Tasks.Creating.md)」をご参照ください。

## ターゲットとしての Redis OSS エンドポイント設定の指定
<a name="CHAP_Target.Redis.EndpointSettings"></a>

ターゲットエンドポイントを作成または変更するには、コンソール、`CreateEndpoint` または `ModifyEndpoint` API オペレーションを使用します。

 AWS DMS コンソールの Redis OSS ターゲットの場合は、エンドポイント**の作成またはエンドポイント****コンソールの変更ページでエンドポイント****固有の設定**を指定します。

`CreateEndpoint` と `ModifyEndpoint`API オペレーションを使用する際、`RedisSettings` オプションのリクエストパラメータを指定する。次の例では、 AWS CLIを使用してこの操作を行う方法を示しています。

```
aws dms create-endpoint --endpoint-identifier my-redis-target
--endpoint-type target --engine-name redis --redis-settings 
'{"ServerName":"sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com","Port":6379,"AuthType":"auth-token", 
 "SslSecurityProtocol":"ssl-encryption", "AuthPassword":"notanactualpassword"}'

{
    "Endpoint": {
        "EndpointIdentifier": "my-redis-target",
        "EndpointType": "TARGET",
        "EngineName": "redis",
        "EngineDisplayName": "Redis",
        "TransferFiles": false,
        "ReceiveTransferredFiles": false,
        "Status": "active",
        "KmsKeyId": "arn:aws:kms:us-east-1:999999999999:key/x-b188188x",
        "EndpointArn": "arn:aws:dms:us-east-1:555555555555:endpoint:ABCDEFGHIJKLMONOPQRSTUVWXYZ",
        "SslMode": "none",
        "RedisSettings": {
            "ServerName": "sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com",
            "Port": 6379,
            "SslSecurityProtocol": "ssl-encryption",
            "AuthType": "auth-token"
        }
    }
}
```

`--redis-settings`パラメータは次のとおりです:
+ `ServerName` — (必須) タイプ `string` で、データの移行先となる Redis OSS クラスターを指定し、同じ VPC に存在します。
+ `Port`— (必須) タイプ `number` で、エンドポイントへのアクセスに使用されるポート値。
+ `SslSecurityProtocol`— (オプション) 有効な値は `plaintext` と `ssl-encryption` です。デフォルトは `ssl-encryption` です。

  `plaintext` オプションは、エンドポイントとデータベース間のトラフィックに Transport Layer Security (TLS) 暗号化を提供しません。

  `ssl-encryption` を使用して、暗号化された接続を作成します。`ssl-encryption` はサーバーの証明書を検証するために SSL 認定権限 (CA) ARN を必要としませんが、オプションで `SslCaCertificateArn` 設定を使用して特定可能です。認定権限 ARN が指定されていない場合、DMS は Amazon ルート CA を使用します。

  オンプレミスの Redis OSS ターゲットを使用する場合、`SslCaCertificateArn` を使用して公開またはPrivate Certificate Authority (CA) を DMS にインポートし、サーバー認証用にその ARN を指定します。ElastiCache (Redis OSS) をターゲットとして使用する場合、プライベート CA はサポートされません。
+ `AuthType` — (必須) Redis OSS に接続するときに実行する認証のタイプを示します。有効な値は、`none`、`auth-token`、および `auth-role` です。

  `auth-token` オプションには「*[AuthPassword]* (認証パスワード)」の入力が必要ですが、一方、`auth-role` オプションには必要「*[AuthUserName]* (認証ユーザー名)」と「*[AuthPassword]* (認証パスワード)」を入力します。