使用 AWS CLI 创建 DAX 集群
本节介绍如何使用 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 创建一个 IAM 服务角色以访问 DynamoDB
您必须先为 Amazon DynamoDB Accelerator (DAX) 集群创建一个服务角色,然后才能创建该集群。服务角色是 AWS Identity and Access Management (IAM) 角色,用于向 AWS 服务授权代表您执行操作。服务角色允许 DAX 访问您的 DynamoDB 表,就像您自己访问这些表一样。
在此步骤中,您创建一个 IAM policy,然后将该策略附加到一个 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 Resource Name (ARN) 中,
accountID
必须是 12 位的数字。请勿使用连字符或其他标点符号。 -
为服务角色创建 IAM policy。
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 中一个或多个子网的集合。请参见 第 2 步:创建一个子网组。
第 2 步:创建一个子网组
按照此过程,使用 AWS Command Line Interface (AWS CLI) 为 Amazon DynamoDB Accelerator (DAX) 集群创建子网组。
注意
如果已经为默认 VPC 创建子网组,则可以跳过本步骤。
DAX 设计在 Amazon Virtual Private Cloud 环境 (Amazon VPC) 中运行。如果您的 AWS 账户是在 2013 年 12 月 4 日之后创建的,则在每个 AWS 区域中已经有一个默认 VPC。有关更多信息,请参阅《Amazon VPC 用户指南》中的默认 VPC 和默认子网。
注意
拥有此 DAX 集群的 VPC 可以包含除 ElastiCache 的 VPC 端点之外的其它资源,甚至包括其它服务的 VPC 端点,而这可能会导致 DAX 集群操作出错。
创建子网组
-
要确定默认 VPC 的标识符,请输入以下命令。
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"记录输出中的子网标识符 — 例如
subnet-11111111
。 -
创建子网组。请确保在
--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 步:使用 AWS CLI 创建一个 DAX 集群。
第 3 步:使用 AWS CLI 创建一个 DAX 集群
请按照以下过程使用 AWS Command Line Interface (AWS CLI),在默认 Amazon VPC 中创建 Amazon DynamoDB Accelerator (DAX) 集群。
创建 DAX 集群
-
获取服务角色的 Amazon Resource Name (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
) 类型。其中有三个节点 (--replication-factor
)—一个主节点和两个副本节点。注意
由于
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 集群,则必须改为对该组执行此过程。
配置安全组入站规则
-
要确定默认安全组标识符,请输入以下命令。将
替换为实际 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}"记录输出中的安全组标识符 — 例如
sg-01234567
。 -
然后输入以下信息。将
替换为您的实际安全组标识符。对未加密集群使用端口sgID
8111
,对加密集群使用9111
。aws ec2 authorize-security-group-ingress \ --group-id
sgID
--protocol tcp --port8111