

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Step Functions를 사용하여 Amazon Bedrock 모델 간접 호출 및 사용자 지정
<a name="connect-bedrock"></a>

Step Functions를 Amazon Bedrock과 통합하여 지정된 Amazon Bedrock 모델을 간접 호출하고 미세 조정 작업을 생성하여 모델을 사용자 지정할 수 있습니다. 이 페이지에는 최적화된 Amazon Bedrock API가 나열되어 있으며 모델 간접 호출 결과를 추출하는 예제 `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 서비스 통합 API
<a name="connect-bedrock-custom-apis"></a>

AWS Step Functions과 Amazon Bedrock을 통합하려면 다음 API를 사용합니다. 이러한 API는 *InvokeModel*에 추가 요청 필드가 있다는 점을 제외하면 해당 Amazon Bedrock API와 유사합니다.

**Amazon Bedrock API - [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)**  
기본 모델을 사용자 지정하기 위한 미세 튜닝 작업을 생성합니다. *요청 응답*의 경우 **CreateModelCustomizationJob**을 사용하거나 *작업 실행(.sync)* 통합 패턴의 경우 **CreateModelCustomizationJob.sync**를 사용하여 Step Functions 통합 API를 간접 호출할 수 있습니다. API 직접 호출의 필드에는 차이가 없습니다.

**Amazon Bedrock API - [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)**  
요청 본문에 제공된 입력을 사용하여 추론을 실행하기 위해 지정된 Amazon Bedrock 모델을 호출합니다. `InvokeModel`을 사용하여 텍스트 모델, 이미지 모델 및 임베딩 모델의 추론을 실행합니다.

*InvokeModel*에 대한 Amazon Bedrock 서비스 통합 API 요청 본문에는 다음 추가 파라미터가 포함됩니다.
+ `Body` - 콘텐츠 유형 요청 헤더에 지정된 형식으로 입력 데이터를 지정합니다. `Body`에는 대상 모델별 파라미터가 포함되어 있습니다.

  `InvokeModel` API를 사용하는 경우 `Body` 파라미터를 지정해야 합니다. Step Functions는 `Body`에 입력된 값의 유효성을 검사하지 않습니다.

  Amazon Bedrock 최적화 통합을 사용하여 `Body`를 지정할 때 최대 256KiB의 페이로드를 지정할 수 있습니다. 페이로드가 256KiB를 초과하는 경우 `Input`을 사용하는 것이 좋습니다.
+ `Input` - 입력 데이터를 검색할 소스를 지정합니다. 이 옵션 필드는 Step Functions를 사용한 Amazon Bedrock 최적화 통합에만 해당됩니다. 이 필드에서 `S3Uri`를 지정할 수 있습니다.

  파라미터의 `Body` 또는 `Input` 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

  `ContentType`을 지정하지 않고 `Input`을 지정하면 입력 데이터 소스의 콘텐츠 유형이 `ContentType`의 값이 됩니다.
+ `Output` - API 응답이 기록되는 대상을 지정합니다. 이 옵션 필드는 Step Functions를 사용한 Amazon Bedrock 최적화 통합에만 해당됩니다. 이 필드에서 `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 APIs에 대한 자세한 내용은 [AWS SDK 통합을](supported-services-awssdk.md) 참조하세요.

## Amazon Bedrock 통합용 태스크 상태 정의
<a name="connect-bedrock-task-definition"></a>

다음 태스크 상태 정의는 상태 머신의 Amazon Bedrock과 통합하는 방법을 보여 줍니다. 이 예제는 경로 `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 정책을 만들 때는 정책에 와일드카드를 포함하지 않는 것이 좋습니다. 보안 모범 사례로 정책 범위를 최대한 좁혀야 합니다. 런타임 중에 특정 입력 파라미터를 알 수 없는 경우에만 동적 정책을 사용해야 합니다.

다음 예제 템플릿은가 상태 시스템 정의의 리소스를 기반으로 IAM 정책을 AWS Step Functions 생성하는 방법을 보여줍니다. 자세한 내용은 [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 권한을 설명합니다. 또한 이 섹션에는 전체 액세스 권한을 부여하는 정책의 예가 포함되어 있습니다.

{{기울임꼴}} 텍스트를 리소스별 정보로 바꿔야 합니다.
+ [InvokeModel을 사용하여 특정 파운데이션 모델에 액세스하는 IAM 정책의 예](#bedrock-policy-invoke-foundation-model)
+ [InvokeModel을 사용하여 특정 프로비저닝 모델에 액세스하는 IAM 정책의 예](#bedrock-policy-invoke-provisioned-model)
+ [InvokeModel을 사용하기 위한 전체 액세스 IAM 정책 예](#bedrock-policy-invokemodel-full-access)
+ [특정 파운데이션 모델에 기본 모델로 액세스하는 IAM 정책의 예](#bedrock-policy-foundation-model)
+ [특정 사용자 지정 모델에 기본 모델로 액세스하는 IAM 정책의 예](#bedrock-policy-custom-model)
+ [CreateModelCustomizationJob.sync를 사용하기 위한 전체 액세스 IAM 정책 예](#bedrock-policy-createmodel-full-access)
+ [CreateModelCustomizationJob.sync를 사용하여 특정 파운데이션 모델에 액세스하는 IAM 정책 예](#bedrock-policy-createmodel-sync-foundation-model)
+ [CreateModelCustomizationJob.sync를 사용하여 사용자 지정 모델에 액세스하는 IAM 정책 예](#bedrock-policy-createmodel-sync-custom-model)
+ [CreateModelCustomizationJob.sync를 사용하기 위한 전체 액세스 IAM 정책 예](#bedrock-policy-createmodel-sync-full-access)

#### InvokeModel을 사용하여 특정 파운데이션 모델에 액세스하는 IAM 정책의 예
<a name="bedrock-policy-invoke-foundation-model"></a>

다음은 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) API 작업을 사용하여 `amazon.titan-text-express-v1`이라는 이름의 특정 파운데이션 모델에 액세스하는 상태 머신의 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}}"
            ]
        }
    ]
}
```

#### InvokeModel을 사용하여 특정 프로비저닝 모델에 액세스하는 IAM 정책의 예
<a name="bedrock-policy-invoke-provisioned-model"></a>

다음은 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) API 작업을 사용하여 `c2oi931ulksx`이라는 이름의 특정 프로비저닝 모델에 액세스하는 상태 머신의 IAM 정책 예입니다.

****  

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

#### InvokeModel을 사용하기 위한 전체 액세스 IAM 정책 예
<a name="bedrock-policy-invokemodel-full-access"></a>

다음은 [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/*",
                "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>

다음은 [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}}::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}}"            
            ]
        }
    ] 
}
```

#### CreateModelCustomizationJob.sync를 사용하여 특정 파운데이션 모델에 액세스하는 IAM 정책 예
<a name="bedrock-policy-createmodel-sync-foundation-model"></a>

다음은 [CreateModelCustomizationJob.sync](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": [
                "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-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>

다음은 [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/*",
                "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}}"            
            ]
        }
    ]
}
```