このセクションでは、AWS Command Line Interface (AWS CLI) を使用して Amazon DynamoDB Accelerator (DAX) クラスターを作成する方法を説明します。まだ AWS CLI をインストールして設定していない場合は、インストールして設定する必要があります。これを行うには、「AWS Command Line Interface ユーザーガイド」の手順を参照してください。
重要
AWS CLI を使用して DAX クラスターを管理するには、バージョン 1.11.110 以上をインストールするか、アップグレードしてください。
AWS CLI のすべての例で、us-west-2
リージョンと架空のアカウント ID を使用しています。
ステップ 1: AWS CLI を使用して、DAX から DynamoDB にアクセスするための IAM サービスロールを作成する
Amazon DynamoDB Accelerator (DAX) クラスターを作成する前に、クラスター用のサービスロールを作成する必要があります。サービスロールは、ユーザーに代わって AWS のサービスを承認する AWS Identity and Access Management (IAM) ロールです。サービスロールは、ユーザーがテーブルそのものにアクセスしているかのように、DAX に DynamoDB テーブルへのアクセスを許可します。
このステップでは、IAM ポリシーを作成し、次にそのポリシーを IAM ロールにアタッチします。こうすることで、DAX クラスターにロールを割り当て、ユーザーの代わりに DynamoDB オペレーションを実行させることができます。
DAX の IAM サービスロールを作成するには
-
次の内容で、
service-trust-relationship.json
というファイルを作成します。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "dax.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
サービスロールを作成します。
aws iam create-role \ --role-name DAXServiceRoleForDynamoDBAccess \ --assume-role-policy-document file://service-trust-relationship.json
-
次の内容で、
service-role-policy.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:
accountID
:*" ] } ] }accountID
をご自分の AWS アカウント ID に置き換えます。AWS アカウント ID を見つけるには、コンソールの右上隅で、ログイン ID を選択します。ドロップダウンメニューに AWS アカウント ID が表示されますこの例の Amazon リソースネーム (ARN) では、
accountID
は 12 桁の数字である必要があります。ハイフンなどの区切り文字を使用しないでください。 -
サービスロールの IAM ポリシーを作成します。
aws iam create-policy \ --policy-name DAXServicePolicyForDynamoDBAccess \ --policy-document file://service-role-policy.json
出力では、以下の例のように、作成したポリシーの ARN に注意してください。
arn:aws:iam::123456789012:policy/DAXServicePolicyForDynamoDBAccess
-
ポリシーをサービスロールにアタッチします。以下のコードにある
arn
を、前のステップで書き留めた実際のロール ARN に置き換えます。aws iam attach-role-policy \ --role-name DAXServiceRoleForDynamoDBAccess \ --policy-arn
arn
次に、デフォルト VPC のサブネットグループを指定します。サブネットグループは、VPC 内の 1 つ以上のサブネットのコレクションです。「」を参照してくださいステップ 2: サブネットグループの作成
ステップ 2: サブネットグループの作成
この手順に従って、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 とデフォルトサブネット」を参照してください。
注記
この DAX クラスターを持つ VPC には、他のリソースや、他のサービスの VPC エンドポイント (ElastiCache の VPC エンドポイントを除く) さえも含まれる場合があり、DAX クラスターオペレーションでエラーが発生する可能性があります。
サブネットグループを作成するには
-
デフォルト VPC の ID を確認するには、次のコマンドを入力します。
aws ec2 describe-vpcs
出力では、以下の例のように、デフォルト VPC の識別子に注意してください。
vpc-12345678
-
デフォルト VPC に関連付けられているサブネットの ID を確認します。
vpcID
を実際の VPC ID に置き換えます (vpc-12345678
など)。aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=
vpcID
" \ --query "Subnets[*].SubnetId"出力で、サブネット ID を記録します (
subnet-11111111
など)。 -
サブネットグループを作成します。
--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 クラスターを作成」を参照してください。
ステップ 3: AWS CLI を使用して DAX クラスターを作成
次の手順に従って、AWS Command Line Interface (AWS CLI) を使用して、デフォルト Amazon VPC に Amazon DynamoDB Accelerator (DAX) クラスターを作成します。
DAX クラスターを作成するには
-
サービスロールの Amazon リソースネーム (ARN) を取得します。
aws iam get-role \ --role-name DAXServiceRoleForDynamoDBAccess \ --query "Role.Arn" --output text
出力では、以下の例のように、サービスロール ARN に注意してください。
arn:aws:iam::123456789012:role/DAXServiceRoleForDynamoDBAccess
-
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
) です。3つのノード (--replication-factor
) があります (1 つのプライマリノードと 2 つのレプリカ)。注記
sudo
とgrep
が予約キーワードである場合、クラスター名にこれらの語句を含む DAX クラスターを作成することはできません。たとえば、sudo
とsudocluster
は無効なクラスター名です。
クラスターステータスを表示するには、次のコマンドを入力します。
aws dax describe-clusters
ステータスは出力に表示されます ("Status":
"creating"
など)。
注記
クラスターを作成するには数分かかります。クラスターが使用可能になると、ステータスは available
に変わります。その間に、「ステップ 4: AWS CLI を使用してセキュリティグループのインバウンドルールを設定」に進んでその指示に従います。
ステップ 4: AWS CLI を使用してセキュリティグループのインバウンドルールを設定
Amazon DynamoDB Accelerator (DAX) クラスター内のノードは、Amazon VPC のデフォルトのセキュリティグループを使用します。デフォルトのセキュリティグループでは、暗号化されていないクラスターには TCP ポート 8111、暗号化されたクラスターには 9111 のインバウンドトラフィックを許可する必要があります。これで Amazon VPC の Amazon EC2 インスタンスは DAX クラスターにアクセスできます。
注記
異なるセキュリティグループ (default
以外) で DAX クラスターを起動した場合、グループに対してこの手順を代わりに実行する必要があります。
セキュリティグループのインバウンドルールを設定するには
-
デフォルトセキュリティグループの ID を確認するには、次のコマンドを入力します。
を実際の VPC ID (「ステップ 2: サブネットグループの作成」を参照) に置き換えます。vpcID
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
など)。 -
次のように入力します。
を実際のセキュリティグループ ID に置き換えます。暗号化されていないクラスターの場合はポートsgID
8111
を、暗号化されたクラスターの場合は9111
を使用します。aws ec2 authorize-security-group-ingress \ --group-id
sgID
--protocol tcp --port8111