使用 Step Functions 执行 DynamoDB CRUD 操作
可以将 Step Functions 与 DynamoDB 集成,以便对 DynamoDB 表执行 CRUD 操作。本页列出了支持的 DynamoDB API,并提供了从 DynamoDB 检索项目的示例 Task 状态。
要了解如何在 Step Functions 中与 Amazon 服务集成,请参阅集成 服务和在 Step Functions 中将参数传递给服务 API。
经优化的 DynamoDB 集成的主要功能
-
没有针对请求响应集成模式的特定优化。
-
不支持等待具有任务令牌的回调集成模式。
-
通过优化集成,只有
GetItem、PutItem、UpdateItemandDeleteItemAPI 操作可用。其他 API 操作(例如CreateTable)可通过 DynamoDB Amazon 开发工具包集成获得。
下面是从 DynamoDB 检索消息的 Task 状态示例。
"Read next Message from DynamoDB": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:getItem",
"Arguments": {
"TableName": "DYNAMO_DB_TABLE_NAME",
"Key": {
"MessageId": {"S": "{% $List[0] %}"}
}
}要在工作示例中查看此状态,请参阅使用 Lambda、DynamoDB 和 Amazon SQS 传输数据记录初学者模板。
异常前缀差异
当标准 DynamoDB 连接遇到错误时,异常前缀将是 DynamoDb(大小写混用)。
对于经优化的集成,异常前缀将是 DynamoDB(大写 DB)。
输入或结果数据的配额
在服务之间发送或接收数据时,任务的最大输入或结果为 256 KiB,且需以 UTF-8 编码字符串形式呈现。请参阅与状态机执行相关的配额。
经优化的 DynamoDB API
Step Functions 中的参数以 PascalCase 表示
即使原生服务 API 采用 camelCase(例如 API 操作 startSyncExecution),也可以采用 PascalCase 指定参数,例如:StateMachineArn。
用于调用 DynamoDB 的 IAM 策略
以下示例模板展示了 Amazon Step Functions 如何根据状态机定义中的资源生成 IAM 策略。有关更多信息,请参阅Step Functions 如何为集成服务生成 IAM 策略和探索 Step Functions 中的服务集成模式。
静态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/myTableName" ] } ] }
动态资源
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem" ], "Resource": "*" } ] }
有关所有 DynamoDB API 操作的 IAM 策略的更多信息,请参阅《Amazon DynamoDB 开发人员指南》中的 DynamoDB 的 IAM 策略。此外,有关 PartiQL for DynamoDB 的 IAM 策略的信息,请参阅《Amazon DynamoDB 开发人员指南》中的 PartiQL for DynamoDB 的 IAM 策略。