本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Step Functions 执行 DynamoDB CRUD 操作
可以将 Step Functions 与 DynamoDB 集成,以便对 DynamoDB 表执行 CRUD 操作。本页列出了支持的 Dynamo APIs DB,并提供了从 DynamoDB 检索项目的Task
示例状态。
要了解如何在 Step Functions 中与 AWS 服务集成,请参阅集成 服务和在 Step Functions 中将参数传递给服务 API。
经优化的 DynamoDB 集成的主要功能
-
请求响应集成模式没有优化。
-
不支持等待具有任务令牌的回调集成模式。
-
通过优化集成,只有
GetItem
、PutItem
、UpdateItem
andDeleteItem
API 操作可用。其他 API 操作(例如CreateTable
)可通过 DynamoDB AWS 软件开发工具包集成获得。
下面是从 DynamoDB 检索消息的 Task
状态。
"Read Next Message from DynamoDB": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:getItem",
"Parameters": {
"TableName": "TransferDataRecords-DDBTable-3I41R5L5EAGT",
"Key": {
"MessageId": {"S.$": "$.List[0]"}
}
},
"ResultPath": "$.DynamoDB",
"Next": "Send Message to SQS"
},
要在可正常使用的示例中查看此状态,请参阅使用传输数据记录 Lambda, DynamoDB,以及 Amazon SQS示例项目。
注意
在 Step Functions 中,任务的最大输入或结果数据大小有一个配额。这样,当您向其他服务发送数据或从其他服务接收数据时,您只能使用 256 KiB 的数据作为 UTF-8 编码的字符串。请参阅 与状态机执行相关的配额。
优化了 DynamoDB APIs
中的参数 Step Functions 表示为 PascalCase
即使原生服务 API 在 camelCase 中(例如 API 操作)startSyncExecution
,您也可以在中指定参数 PascalCase,例如:。StateMachineArn
用于调用 DynamoDB 的 IAM 策略
以下示例模板展示了如何根据状态机定义中的资源 AWS 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:[[region]]
:[[accountId]]
:table/[[tableName]]
"
]
}
]
}
动态资源
{
"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 策略。