

# AWS CLI を使用した DAX クラスターの作成
<a name="DAX.create-cluster.cli"></a>

このセクションでは、AWS Command Line Interface (AWS CLI) を使用して Amazon DynamoDB Accelerator (DAX) クラスターを作成する方法を説明します。まだ AWS CLI をインストールして設定していない場合は、インストールして設定する必要があります。これを行うには、「AWS Command Line Interface ユーザーガイド」の手順を参照してください。
+ [ のインストールAWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)
+ [ の設定AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

**重要**  
 AWS CLI を使用して DAX クラスターを管理するには、バージョン 1.11.110 以上をインストールするか、アップグレードしてください。

AWS CLI のすべての例で、`us-west-2` リージョンと架空のアカウント ID を使用しています。

**Topics**
+ [ステップ 1: サービスロールを作成する](#DAX.create-cluster.cli.create-service-role)
+ [ステップ 2: サブネットグループの作成](#DAX.create-cluster.cli.create-subnet-group)
+ [ステップ 3: DAX クラスターを作成](#DAX.create-cluster.cli.create-cluster)
+ [ステップ 4: セキュリティグループのインバウンドルールを設定](#DAX.create-cluster.cli.configure-inbound-rules)

## ステップ 1: AWS CLI を使用して、DAX から DynamoDB にアクセスするための IAM サービスロールを作成する
<a name="DAX.create-cluster.cli.create-service-role"></a>

Amazon DynamoDB Accelerator (DAX) クラスターを作成する前に、クラスター用のサービスロールを作成する必要があります。*サービスロール*は、ユーザーに代わって AWS のサービスを承認する AWS Identity and Access Management (IAM) ロールです。サービスロールは、ユーザーがテーブルそのものにアクセスしているかのように、DAX に DynamoDB テーブルへのアクセスを許可します。

このステップでは、IAM ポリシーを作成し、次にそのポリシーを IAM ロールにアタッチします。こうすることで、DAX クラスターにロールを割り当て、ユーザーの代わりに DynamoDB オペレーションを実行させることができます。

**DAX の IAM サービスロールを作成するには**

1. 次の内容で、`service-trust-relationship.json` というファイルを作成します。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
          {
               "Effect": "Allow",
               "Principal": {
                   "Service": "dax.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. サービスロールを作成します。

   ```
   aws iam create-role \
       --role-name DAXServiceRoleForDynamoDBAccess \
       --assume-role-policy-document file://service-trust-relationship.json
   ```

1. 次の内容で、`service-role-policy.json` というファイルを作成します。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "dynamodb:DescribeTable",
                   "dynamodb:PutItem",
                   "dynamodb:GetItem",
                   "dynamodb:UpdateItem",
                   "dynamodb:DeleteItem",
                   "dynamodb:Query",
                   "dynamodb:Scan",
                   "dynamodb:BatchGetItem",
                   "dynamodb:BatchWriteItem",
                   "dynamodb:ConditionCheckItem"
               ],
               "Effect": "Allow",
               "Resource": [
                   "arn:aws:dynamodb:us-west-2:111122223333:*"
               ]
           }
       ]
   }
   ```

------

   *accountID* をご自分の AWS アカウント ID に置き換えます。AWS アカウント ID を見つけるには、コンソールの右上隅で、ログイン ID を選択します。ドロップダウンメニューに AWS アカウント ID が表示されます 

   この例の Amazon リソースネーム (ARN) では、*accountID* は 12 桁の数字である必要があります。ハイフンなどの区切り文字を使用しないでください。

1. サービスロールの IAM ポリシーを作成します。

   ```
   aws iam create-policy \
       --policy-name DAXServicePolicyForDynamoDBAccess \
       --policy-document file://service-role-policy.json
   ```

   出力では、以下の例のように、作成したポリシーの ARN に注意してください。

   `arn:aws:iam::123456789012:policy/DAXServicePolicyForDynamoDBAccess`

1. ポリシーをサービスロールにアタッチします。以下のコードにある *arn* を、前のステップで書き留めた実際のロール ARN に置き換えます。

   ```
   aws iam attach-role-policy \
       --role-name DAXServiceRoleForDynamoDBAccess \
       --policy-arn arn
   ```

次に、デフォルト VPC のサブネットグループを指定します。*サブネットグループ*は、VPC 内の 1 つ以上のサブネットのコレクションです。「」を参照してください[ステップ 2: サブネットグループの作成](#DAX.create-cluster.cli.create-subnet-group)

## ステップ 2: サブネットグループの作成
<a name="DAX.create-cluster.cli.create-subnet-group"></a>

この手順に従って、AWS Command Line Interface (AWS CLI) を使用して Amazon DynamoDB Accelerator (DAX) クラスターのサブネットグループを作成します。

**注記**  
デフォルト VPC のサブネットグループを作成済みである場合は、このステップを省略できます。

DAX は、Amazon Virtual Private Cloud (Amazon VPC) 環境内で実行するように設計されています。2013 年 12 月 4 日以降に AWS アカウントを作成した場合は、各 AWS リージョンにデフォルトで VPC が用意されています。詳細については、「*Amazon VPC ユーザーガイド*」の「[デフォルト VPC とデフォルトサブネット](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html)」を参照してください。

**サブネットグループを作成するには**

1. デフォルト VPC の ID を確認するには、次のコマンドを入力します。

   ```
   aws ec2 describe-vpcs
   ```

   出力では、以下の例のように、デフォルト VPC の識別子に注意してください。

   `vpc-12345678`

1. デフォルト VPC に関連付けられているサブネットの ID を確認します。*vpcID* を実際の VPC ID に置き換えます (`vpc-12345678` など)。

   ```
   aws ec2 describe-subnets \
       --filters "Name=vpc-id,Values=vpcID" \
       --query "Subnets[*].SubnetId"
   ```

   出力で、サブネット ID を記録します (`subnet-11111111` など)。

1. サブネットグループを作成します。`--subnet-ids` パラメータに少なくとも 1 つのサブネット ID を指定してください。

   ```
   aws dax create-subnet-group \
       --subnet-group-name my-subnet-group \
       --subnet-ids subnet-11111111 subnet-22222222 subnet-33333333 subnet-44444444
   ```

クラスターを作成するには、「[ステップ 3: AWS CLI を使用して DAX クラスターを作成](#DAX.create-cluster.cli.create-cluster)」を参照してください。

## ステップ 3: AWS CLI を使用して DAX クラスターを作成
<a name="DAX.create-cluster.cli.create-cluster"></a>

次の手順に従って、AWS Command Line Interface (AWS CLI) を使用して、デフォルト Amazon VPC に Amazon DynamoDB Accelerator (DAX) クラスターを作成します。

**DAX クラスターを作成するには**

1. サービスロールの Amazon リソースネーム (ARN) を取得します。

   ```
   aws iam get-role \
       --role-name DAXServiceRoleForDynamoDBAccess \
       --query "Role.Arn" --output text
   ```

   出力では、以下の例のように、サービスロール ARN に注意してください。

   `arn:aws:iam::123456789012:role/DAXServiceRoleForDynamoDBAccess`

1. DAX クラスターを作成します。`roleARN` を、前のステップで書き留めた ARN に置き換えます。

   ```
   aws dax create-cluster \
       --cluster-name mydaxcluster \
       --node-type dax.r4.large \
       --replication-factor 3 \
       --iam-role-arn roleARN \
       --subnet-group my-subnet-group \
       --sse-specification Enabled=true \
       --region us-west-2
   ```

   クラスター内のすべてのノードは、タイプ `dax.r4.large` (`--node-type`) です。3つのノード (`--replication-factor`) があります (1 つのプライマリノードと 2 つのレプリカ)。
**注記**  
`sudo` と `grep` が予約キーワードである場合、クラスター名にこれらの語句を含む DAX クラスターを作成することはできません。たとえば、`sudo` と `sudocluster` は無効なクラスター名です。

クラスターステータスを表示するには、次のコマンドを入力します。

```
aws dax describe-clusters
```

ステータスは出力に表示されます (`"Status": "creating"` など)。

**注記**  
クラスターを作成するには数分かかります。クラスターが使用可能になると、ステータスは `available` に変わります。その間に、「[ステップ 4: AWS CLI を使用してセキュリティグループのインバウンドルールを設定](#DAX.create-cluster.cli.configure-inbound-rules)」に進んでその指示に従います。

## ステップ 4: AWS CLI を使用してセキュリティグループのインバウンドルールを設定
<a name="DAX.create-cluster.cli.configure-inbound-rules"></a>

Amazon DynamoDB Accelerator (DAX) クラスター内のノードは、Amazon VPC のデフォルトのセキュリティグループを使用します。デフォルトのセキュリティグループでは、暗号化されていないクラスターには TCP ポート 8111、暗号化されたクラスターには 9111 のインバウンドトラフィックを許可する必要があります。これで Amazon VPC の Amazon EC2 インスタンスは DAX クラスターにアクセスできます。

**注記**  
異なるセキュリティグループ (`default` 以外) で DAX クラスターを起動した場合、グループに対してこの手順を代わりに実行する必要があります。

**セキュリティグループのインバウンドルールを設定するには**

1. デフォルトセキュリティグループの ID を確認するには、次のコマンドを入力します。`vpcID` を実際の VPC ID (「[ステップ 2: サブネットグループの作成](#DAX.create-cluster.cli.create-subnet-group)」を参照) に置き換えます。

   ```
   aws ec2 describe-security-groups \
       --filters Name=vpc-id,Values=vpcID Name=group-name,Values=default \
       --query "SecurityGroups[*].{GroupName:GroupName,GroupId:GroupId}"
   ```

   出力で、セキュリティグループ ID を記録します (`sg-01234567` など)。

1. 次のように入力します。`sgID` を実際のセキュリティグループ ID に置き換えます。暗号化されていないクラスターの場合はポート `8111` を、暗号化されたクラスターの場合は `9111` を使用します。

   ```
   aws ec2 authorize-security-group-ingress \
       --group-id sgID --protocol tcp --port 8111
   ```