

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Step Functions 执行 DynamoDB CRUD 操作
<a name="connect-ddb"></a>

可以将 Step Functions 与 DynamoDB 集成，以便对 DynamoDB 表执行 CRUD 操作。本页列出了支持的 Dynamo APIs DB，并提供了从 DynamoDB 检索项目的`Task`示例状态。

要了解如何在 Step Functions 中与AWS服务集成，请参阅[集成 服务](integrate-services.md)和[在 Step Functions 中将参数传递给服务 API](connect-parameters.md)。

**经优化的 DynamoDB 集成的主要功能**  
没有针对[请求响应](connect-to-resource.md#connect-default)集成模式的特定优化。
不支持[等待具有任务令牌的回调](connect-to-resource.md#connect-wait-token)集成模式。
通过优化集成，只有 [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)、[https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)、[https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) and [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html) API 操作可用。其他 API 操作（例如 [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)）可通过 DynamoDB AWS 软件开发工具包集成获得。

下面是从 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 传输数据记录](sample-project-transfer-data-sqs.md)初学者模板。

**异常前缀差异**  
当标准 DynamoDB 连接遇到错误时，异常前缀将是 `DynamoDb`（大小写混用）。  
对于经优化的集成，异常前缀将是 `DynamoDB`（大写 `DB`）。

**输入或结果数据的配额**  
在服务之间发送或接收数据时，任务的最大输入或结果为 256 KiB，且需以 UTF-8 编码字符串形式呈现。请参阅[与状态机执行相关的配额](service-quotas.md#service-limits-state-machine-executions)。

## 优化了 DynamoDB APIs
<a name="connect-dynamodb-api"></a>
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)

**中的Step Functions参数表示为 PascalCase**  
即使原生服务 API 在 camelCase 中（例如 API 操作）`startSyncExecution`，您也可以在中指定参数 PascalCase，例如:。`StateMachineArn`

## 用于调用 DynamoDB 的 IAM 策略
<a name="dynamo-iam"></a>

以下示例模板展示了如何根据状态机定义中的资源AWS Step Functions生成 IAM 策略。有关更多信息，请参阅[Step Functions 如何为集成服务生成 IAM 策略](service-integration-iam-templates.md)和[探索 Step Functions 中的服务集成模式](connect-to-resource.md)。

*静态资源*

****  

```
{
    "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 策略](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html)。此外，有关 PartiQL for DynamoDB 的 IAM 策略的信息，请参阅**《Amazon DynamoDB 开发人员指南》中的 [PartiQL for DynamoDB 的 IAM 策略](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-iam.html)。