

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 建立 DAX 叢集 AWS CLI
<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)

**重要**  
 若要使用 管理 DAX 叢集 AWS CLI，請安裝或升級至 1.11.110 版或更新版本。

所有 AWS CLI 範例都使用`us-west-2`區域和虛構的帳戶 IDs。

**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：為 DAX 建立 IAM 服務角色，以使用 存取 DynamoDB AWS CLI
<a name="DAX.create-cluster.cli.create-service-role"></a>

您必須先為 Amazon DynamoDB Accelerator (DAX) 叢集建立服務角色，才可建立該叢集。*服務角色*是 AWS Identity and Access Management (IAM) 角色，授權 AWS 服務代表您。服務角色可允許 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 Resource Name (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 中一或多個子網路的集合。請參閱 [步驟 2：建立子網路群組](#DAX.create-cluster.cli.create-subnet-group)。

## 步驟 2：建立子網路群組
<a name="DAX.create-cluster.cli.create-subnet-group"></a>

依照此程序，使用 AWS Command Line Interface () 為您的 Amazon DynamoDB Accelerator (DAX) 叢集建立子網路群組AWS CLI。

**注意**  
如果您已建立預設 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 的識別符，請輸入以下命令。

   ```
   aws ec2 describe-vpcs
   ```

   在輸出中，記下您預設 VPC 的識別符，如以下範例所示。

   `vpc-12345678`

1. 判斷與您預設 VPC 相關聯的子網路 ID。使用您的實際 VPC ID (例如 `vpc-12345678`) 取代 *vpcID*。

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

   在輸出中，記下子網路識別碼 (例如 `subnet-11111111`)。

1. 建立子網路群組。確認您在 `--subnet-ids` 參數中至少指定一個子網路 ID。

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

若要建立叢集，請參閱 [步驟 3：使用 建立 DAX 叢集 AWS CLI](#DAX.create-cluster.cli.create-cluster)。

## 步驟 3：使用 建立 DAX 叢集 AWS CLI
<a name="DAX.create-cluster.cli.create-cluster"></a>

請遵循此程序，使用 AWS Command Line Interface (AWS CLI) 在預設 Amazon VPC 中建立 Amazon DynamoDB Accelerator (DAX) 叢集。

**建立 DAX 叢集**

1. 取得您服務角色的 Amazon Resource Name (ARN)。

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

   在輸出中，記下服務角色 ARN，如以下範例所示。

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

1. 建立 DAX 叢集。使用前一步驟中的 ARN，取代 `roleARN`。

   ```
   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`)。共有三個節點 (`--replication-factor`)：一個主節點和兩個複本。
**注意**  
由於 `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. 若要判斷預設安全群組識別符，請輸入以下命令。使用您實際的 VPC ID (來自 [步驟 2：建立子網路群組](#DAX.create-cluster.cli.create-subnet-group)) 取代 `vpcID`。

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

   在輸出中，記下安全群組識別碼 (例如 `sg-01234567`)。

1. 然後輸入以下內容。將 `sgID` 取代成您實際的安全群組識別符。請將連接埠 `8111` 用於未加密的叢集，再將 `9111` 用於加密的叢集。

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