本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Step Functions 执行 CRUD DynamoDB 操作
您可以将 Step Functions 与 DynamoDB 集成,以便CRUD对 DynamoDB 表执行操作。本页列出了支持的 Dynamo APIs DB,并提供了从 DynamoDB 检索项目的Task
示例状态。
要了解如何在 Step Functions 中与 Amazon 服务集成,请参阅集成 服务和在 Step Functions API 中向服务传递参数。
经优化的 DynamoDB 集成的主要功能
-
请求响应集成模式没有优化。
-
不支持等待具有任务令牌的回调集成模式。
-
通过优化的集成
GetItem
PutItem
UpdateItem
,只有、、和DeleteItem
API操作可用。其他API操作,例如,CreateTable
可使用 DynamoDB 集成 Amazon SDK进行操作。
下面是从 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 中,任务的最大输入或结果数据大小有一个配额。这会限制您在向其他服务发送数据或从其他服务接收数据时,以 -8 编码字符串形式存储 256 KiB 的数据。UTF请参阅 与状态机执行相关的配额。
支持的 DynamoDB APIs
中的参数 Step Functions 表示为 PascalCase
即使原生服务API已在camelCase(例如API操作)中startSyncExecution
,您也可以在中指定参数 PascalCase,例如:StateMachineArn
。
IAM调用 DynamoDB 的策略
以下示例模板显示了如何根据状态机定义中的资源 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:[[region]]
:[[accountId]]
:table/[[tableName]]
"
]
}
]
}
动态资源
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem",
"dynamodb:DeleteItem"
],
"Resource": "*"
}
]
}
有关所有 DynamoDB 操作的IAM策略的更多信息,请参阅亚马逊 API DynamoDB 开发者指南中的使用 DynamoDB 的IAM策略。此外,有关适用于 DynamoDB 的 PartiQL IAM 策略的信息,请参阅亚马逊 DynamoDB 开发者指南中的适用于 Dyn amoDB 的 Parti IAM QL 策略。