

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

# 使用 Step Functions 调用和自定义 Amazon Bedrock 模型
<a name="connect-bedrock"></a>

可以将 Step Functions 与 Amazon Bedrock 集成，以调用指定的 Amazon Bedrock 模型并创建微调任务来自定义模型。本页列出了经过优化的 Amazon Bedrock， APIs 并提供了提取模型调用结果的示例`Task`状态。

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

**提示**  
要部署与 Amazon Bedrock 集成的示例工作流程，请参阅[使用 Amazon Bedrock 执行 AI 提示串接](sample-bedrock-prompt-chaining.md)。

## Amazon Bedrock服务集成 APIs
<a name="connect-bedrock-custom-apis"></a>

要AWS Step Functions与集成Amazon Bedrock，您可以使用以下方法 APIs。除了 APIs 有其他请求字段外 Amazon Bedrock APIs，它们*InvokeModel*与相应字段类似。

**亚马逊 Bedrock API-[CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)**  
创建微调作业以自定义基础模型。你可以使用*请求响应*调用 Step Functions 集成 **CreateModelCustomizationJob**API，也可以使用 **CreateModelCustomizationJob.sync** 来调用 *Run a Job (.sync) 集成模式*。API 调用的字段没有区别。

**亚马逊 Bedrock API-[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)**  
使用您在请求正文中提供的输入，调用指定的 Amazon Bedrock 模型来运行推理。您可以使用 `InvokeModel` 对文本模型、图像模型和嵌入模型运行推理。

的Amazon Bedrock服务集成 API 请求正文*InvokeModel*包括以下附加参数。
+ `Body`：以 Content-Type 请求标头中指定的格式指定输入数据。`Body` 包含特定于目标模型的参数。

  如果您使用 `InvokeModel` API，则必须指定 `Body` 参数。Step Functions 不会验证您在 `Body` 中提供的输入。

  当使用 Amazon Bedrock 经优化的集成指定 `Body` 时，您可以指定最大 256 KiB 的有效载荷。如果有效载荷超过 256 KiB，建议您使用 `Input`。
+ `Input`：指定要从中检索输入数据的源。此可选字段专门用于 Amazon Bedrock 与 Step Functions 的优化集成。在此字段中，您可以指定 `S3Uri`。

  您可以在参数中指定 `Body` 或指定 `Input`，但不能同时指定两者。

  如果指定 `Input` 但未指定 `ContentType`，输入数据来源的内容类型将变为 `ContentType` 的值。
+ `Output`：指定写入 API 响应的目的地。此可选字段专门用于 Amazon Bedrock 与 Step Functions 的优化集成。在此字段中，您可以指定 `S3Uri`。

  如果您指定此字段，API 响应正文将替换为对原始输出的 Amazon S3 位置的引用。

以下示例显示了用于Amazon Bedrock集成 InvokeModel API 的语法。

```
{
    "ModelId": String,  // required
    "Accept": String,  // default: application/json
    "ContentType": String,  // default: application/json
    "Input": {  // not from Bedrock API
        "S3Uri": String
    },  
    "Output": {  // not from Bedrock API
        "S3Uri": String
    } 
}
```

## Amazon Bedrock 集成的 Task 状态定义
<a name="connect-bedrock-task-definition"></a>

以下 Task 状态定义显示了如何在状态机中与 Amazon Bedrock 集成。此示例显示了一个 Task 状态，它提取了路径指定的模型调用的完整结果，`result_one`。这基于[基础模型的推理参数](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)。此示例使用 Cohere Command 大型语言模型 (LLM)。

```
{
  "Type": "Task",
  "Resource": "arn:aws:states:::bedrock:invokeModel",
  "Arguments": {
    "ModelId": "cohere.command-text-v14",
    "Body": {
      "prompt": "{% states.input.prompt_one %}",
      "max_tokens": 20
    },
    "ContentType": "application/json",
    "Accept": "*/*"
  },
  "End": true
}
```

## IAM policies for calling Amazon Bedrock
<a name="bedrock-iam"></a>

使用控制台创建状态机时，Step Functions 会自动为状态机创建一个具有所需最低权限的执行角色。这些自动生成的IAM角色对AWS 区域您在其中创建状态机的角色有效。

我们建议您在创建 IAM 策略时，不要在策略中包含通配符。作为安全最佳实操，应尽可能缩小策略范围。只有在运行时不知道某些输入参数时，才应使用动态策略。

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

### Amazon Bedrock 集成的 IAM 策略示例
<a name="bedrock-iam-policy-eg"></a>

以下部分根据您用于特定基础或预置模型的 Amazon Bedrock API 说明了您需要的 IAM 权限。本部分还包含授予完全访问权限的策略示例。

请记住用您的资源特定信息替换*italicized*文本。
+ [IAM使用访问特定基础模型的策略示例 InvokeModel](#bedrock-policy-invoke-foundation-model)
+ [IAM使用访问特定预配置模型的策略示例 InvokeModel](#bedrock-policy-invoke-provisioned-model)
+ [要使用的完全访问IAM策略示例 InvokeModel](#bedrock-policy-invokemodel-full-access)
+ [将特定基础模型作为基本模型访问的 IAM 策略示例](#bedrock-policy-foundation-model)
+ [将特定自定义模型作为基本模型访问的 IAM 策略示例](#bedrock-policy-custom-model)
+ [使用 CreateModelCustomizationJob .sync 的完全访问IAM策略示例](#bedrock-policy-createmodel-full-access)
+ [IAM使用 CreateModelCustomizationJob .sync 访问特定基础模型的策略示例](#bedrock-policy-createmodel-sync-foundation-model)
+ [IAM使用 CreateModelCustomizationJob .sync 访问自定义模型的策略示例](#bedrock-policy-createmodel-sync-custom-model)
+ [使用 CreateModelCustomizationJob .sync 的完全访问IAM策略示例](#bedrock-policy-createmodel-sync-full-access)

#### IAM使用访问特定基础模型的策略示例 InvokeModel
<a name="bedrock-policy-invoke-foundation-model"></a>

以下是访问`amazon.titan-text-express-v1`使用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API 操作命名的特定基础模型的状态机的IAM策略示例。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "InvokeModel1",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1"
            ]
        }
    ]
}
```

#### IAM使用访问特定预配置模型的策略示例 InvokeModel
<a name="bedrock-policy-invoke-provisioned-model"></a>

以下是访问`c2oi931ulksx`使用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API 操作命名的特定预配置模型的状态机的IAM策略示例。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Sid": "InvokeModel1",
      "Action": [
        "bedrock:InvokeModel"
      ],
      "Resource": [
        "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/c2oi931ulksx"
      ]
    }
  ]
}
```

#### 要使用的完全访问IAM策略示例 InvokeModel
<a name="bedrock-policy-invokemodel-full-access"></a>

以下是状态机的IAM策略示例，该状态机在您使用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API 操作时提供完全访问权限。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "InvokeModel1",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/*"
            ]
        }
    ]
}
```

#### 将特定基础模型作为基本模型访问的 IAM 策略示例
<a name="bedrock-policy-foundation-model"></a>

以下是状态机使用 [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API 操作访问名`amazon.titan-text-express-v1`为基础模型的特定基础模型的IAM策略示例。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ] 
}
```

#### 将特定自定义模型作为基本模型访问的 IAM 策略示例
<a name="bedrock-policy-custom-model"></a>

以下是状态机使用 [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API 操作访问作为基础模型的特定自定义模型的IAM策略示例。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"            
            ]
        }
    ] 
}
```

#### 使用 CreateModelCustomizationJob .sync 的完全访问IAM策略示例
<a name="bedrock-policy-createmodel-full-access"></a>

以下是状态机的IAM策略示例，该状态机在您使用 [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API 操作时提供完全访问权限。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ] 
}
```

#### IAM使用 CreateModelCustomizationJob .sync 访问特定基础模型的策略示例
<a name="bedrock-policy-createmodel-sync-foundation-model"></a>

以下是状态机访问`amazon.titan-text-express-v1`使用 [CreateModelCustomizationJob.sync](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) API 操作命名的特定基础模型的IAM策略示例。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

#### IAM使用 CreateModelCustomizationJob .sync 访问自定义模型的策略示例
<a name="bedrock-policy-createmodel-sync-custom-model"></a>

以下是状态机使用 [CreateModelCustomizationJob.sync](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) API 操作访问自定义模型的IAM策略示例。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

#### 使用 CreateModelCustomizationJob .sync 的完全访问IAM策略示例
<a name="bedrock-policy-createmodel-sync-full-access"></a>

以下是状态机的IAM策略示例，该状态机在您使用 [CreateModelCustomizationJob.sync](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) API 操作时提供完全访问权限。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```