

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# Amazon Redshift ML과 Amazon Bedrock의 통합
<a name="machine-learning-br"></a>

이 섹션에서는 Amazon Redshift ML과 Amazon Bedrock의 통합을 사용하는 방법에 대해 설명합니다. 이 기능을 사용하면 SQL을 사용하여 Amazon Bedrock 모델을 간접적으로 호출할 수 있으며 Amazon Redshift 데이터 웨어하우스의 데이터를 사용하여 텍스트 작성, 감정 분석 또는 번역과 같은 생성형 AI 애플리케이션을 구축할 수 있습니다.

**Topics**
+ [Amazon Redshift ML과 Amazon Bedrock의 통합을 위한 IAM 역할 생성 또는 업데이트](#machine-learning-br-iam)
+ [Amazon Redshift ML과 Amazon Bedrock의 통합용 외부 모델 생성](#machine-learning-br-create)
+ [Amazon Redshift ML과 Amazon Bedrock의 통합용 외부 모델 사용](#machine-learning-br-use)
+ [Amazon Redshift ML과 Amazon Bedrock의 통합 시 프롬프트 엔지니어링](#machine-learning-br-prompt)

## Amazon Redshift ML과 Amazon Bedrock의 통합을 위한 IAM 역할 생성 또는 업데이트
<a name="machine-learning-br-iam"></a>

이 섹션에서는 Amazon Redshift ML과 Amazon Bedrock의 통합에 사용할 IAM 역할을 만드는 방법에 대해 보여 줍니다.

Amazon Redshift ML과 Amazon Bedrock의 통합에 사용하는 IAM 역할에 다음 정책을 추가합니다.
+ `AmazonBedrockFullAccess`

Amazon Redshift가 다른 서비스와 상호 작용하는 역할을 맡도록 허용하려면 IAM 역할에 다음의 신뢰 정책을 추가합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": {
            "Service": [
               "redshift.amazonaws.com"
            ]
         },
         "Action": "sts:AssumeRole"
      }
   ]
}
```

------

클러스터 또는 네임스페이스가 VPC에 있는 경우 [Amazon Redshift 기계 학습 관리를 위한 클러스터 및 구성 설정](getting-started-machine-learning.md#admin-setup)에 나와 있는 설명을 따릅니다.

더 제한적인 정책이 필요한 경우 다음 페이지에 명시된 Amazon Bedrock 권한만 포함하는 정책을 생성할 수 있습니다.
+ [Amazon Redshift 기계 학습 관리를 위한 클러스터 및 구성 설정](getting-started-machine-learning.md#admin-setup)
+ [Amazon Redshift 기계 학습(ML)을 사용하는 데 필요한 권한](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#iam-permission-ml?)

IAM 역할 생성에 관한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*에 나와 있는 [IAM 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) 섹션을 참조하시기 바랍니다.

## Amazon Redshift ML과 Amazon Bedrock의 통합용 외부 모델 생성
<a name="machine-learning-br-create"></a>

이 섹션에서는 Amazon Redshift 데이터 웨어하우스 내에서 Amazon Bedrock의 인터페이스로 사용할 외부 모델을 생성하는 방법을 보여 줍니다.

Amazon Redshift에서 Amazon Bedrock 모델을 간접적으로 호출하려면 먼저 `CREATE EXTERNAL MODEL` 명령을 실행해야 합니다. 이 명령을 사용하면 데이터베이스에 외부 모델 객체와 Amazon Bedrock을 사용하여 텍스트 콘텐츠를 작성하는 데 사용하는 관련 사용자 함수가 만들어집니다.

다음 코드 예제는 기본 `CREATE EXTERNAL MODEL` 명령을 보여 줍니다.

```
CREATE EXTERNAL MODEL llm_claude
FUNCTION llm_claude_func
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2:1',
   PROMPT 'Summarize the following text:');
```

`CREATE EXTERNAL MODEL` 명령은 메시지를 지원하는 모든 파운데이션 모델(FM)에 대해 Amazon Bedrock과 일관된 통합 인터페이스를 제공합니다. `CREATE EXTERNAL MODEL` 명령을 사용하거나 요청 유형을 `UNIFIED`로 명시적으로 지정할 경우의 기본 옵션입니다. 자세한 내용은 Amazon Bedrock API 설명서**에 나와 있는 [Converse API 설명서](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html)를 참조하시기 바랍니다.

다음 예제에서 설명하듯, FM이 메시지를 지원하지 않는 경우 `request_type` 설정을 `RAW`로 설정해야 합니다. `request_type`을 `RAW`로 설정하면 선택한 FM을 기반으로 추론 함수를 사용할 경우 Amazon Bedrock에 전송된 요청을 구성해야 합니다. 다음 예제를 실행하기 전에 Amazon Bedrock에서 Titan Text G1 – Express 모델에 대한 액세스를 활성화해야 합니다.

```
CREATE EXTERNAL MODEL titan_raw
FUNCTION func_titan_raw
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'amazon.titan-text-express-v1',
   REQUEST_TYPE RAW,
   RESPONSE_TYPE SUPER);
```

총 토큰과 같은 입력 요청에 대한 추가 정보가 필요한 경우 모델을 생성할 때 `RESPONSE_TYPE`을 `super`로 요청할 수 있습니다.

```
CREATE EXTERNAL MODEL patient_recommendations_v2
FUNCTION patient_recommendations_func_v2
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2',
   PROMPT 'Generate personalized diet plan for following patient:',
   RESPONSE_TYPE SUPER);
```

`CREATE EXTERNAL MODEL` 명령의 `PROMPT` 파라미터는 정적 프롬프트입니다. 애플리케이션에 동적 프롬프트가 필요하면 추론 함수 사용 시 동적 프롬프트를 지정해야 합니다. 자세한 내용은 [Amazon Redshift ML과 Amazon Bedrock의 통합 시 프롬프트 엔지니어링](#machine-learning-br-prompt) 섹션을 참조하세요.

`CREATE EXTERNAL MODEL` 스테이트먼트와 해당 파라미터, 설정에 대한 자세한 내용은 [CREATE EXTERNAL MODEL](r_create_external_model.md) 섹션을 참조하시기 바랍니다.

## Amazon Redshift ML과 Amazon Bedrock의 통합용 외부 모델 사용
<a name="machine-learning-br-use"></a>

이 섹션에서는 외부 모델을 간접적으로 호출하여 제공된 프롬프트에 대한 응답으로 텍스트를 작성하는 방법을 보여 줍니다. 외부 모델을 간접적으로 호출하려면 `CREATE EXTERNAL MODEL`로 생성한 추론 함수를 사용합니다.

**Topics**
+ [`UNIFIED` 요청 유형 모델로 추론](#machine-learning-br-use-unified)
+ [`RAW` 요청 유형 모델로 추론](#machine-learning-br-use-raw)
+ [리더 전용 함수로서의 추론 함수](#machine-learning-br-use-leader)
+ [추론 함수 사용 정보](#machine-learning-br-use-usage)

### `UNIFIED` 요청 유형 모델로 추론
<a name="machine-learning-br-use-unified"></a>

`UNIFIED` 요청 유형이 있는 모델의 추론 함수에는 함수에 전달되는 다음 3가지 파라미터가 순서대로 포함됩니다.
+ **입력 텍스트**(필수): 이 파라미터는 Amazon Redshift가 Amazon Bedrock에 전달하는 입력 텍스트를 지정합니다.
+ **추론 구성** 및 **추가 모델 요청 필드**(선택 사항): Amazon Redshift는 이러한 파라미터를 Converse 모델 API의 해당 파라미터에 전달합니다.

다음 코드 예제는 `UNIFIED` 유형 추론 함수를 사용하는 방법을 보여 줍니다.

```
SELECT llm_claude_func(input_text, object('temperature', 0.7, 'maxtokens', 500))
   FROM some_data;
```

### `RAW` 요청 유형 모델로 추론
<a name="machine-learning-br-use-raw"></a>

`RAW` 요청 유형이 있는 모델의 추론 함수에는 `SUPER` 데이터 유형의 파라미터가 하나만 포함됩니다. 이 파라미터의 구문은 사용된 Amazon Bedrock 모델에 따라 달라집니다.

다음 코드 예제는 `RAW` 유형 추론 함수를 사용하는 방법을 보여 줍니다.

```
SELECT llm_titan_func(
    object(
        "inputText", "Summarize the following text: " | input_text,
        "textGenerationConfig", object("temperature", 0.5, "maxTokenCount", 500)
    )
)
FROM some_data;
```

### 리더 전용 함수로서의 추론 함수
<a name="machine-learning-br-use-leader"></a>

Amazon Bedrock 모델의 추론 함수는 이를 사용하는 쿼리가 테이블을 참조하지 않을 때 리더 노드 전용 함수로 실행될 수 있습니다. 이는 LLM에 빠르게 질문하려는 경우에 유용할 수 있습니다.

다음 코드 예제는 리더 전용 추론 함수를 사용하는 방법을 보여 줍니다.

```
SELECT general_titan_llm_func('Summarize the benefits of LLM on data analytics in 100 words');
```

### 추론 함수 사용 정보
<a name="machine-learning-br-use-usage"></a>

Amazon Redshift ML과 Amazon Bedrock의 통합으로 추론 함수를 사용할 때 다음 사항을 참고하시기 바랍니다.
+ 모든 Amazon Bedrock 모델의 파라미터 이름은 대문자와 소문자를 구분합니다. 파라미터가 모델에 필요한 파라미터와 일치하지 않으면 Amazon Bedrock에서는 조용히 파라미터를 무시할 수 있습니다.
+ 추론 쿼리의 처리량은 Amazon Bedrock이 제공하는 다양한 모델의 런타임 할당량에 따라 다른 리전에서 제한됩니다. 자세한 내용은 *Amazon Bedrock 사용자 가이드*에 나와 있는 [Amazon Bedrock 할당량](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)을 참조하시기 바랍니다.
+ 안정적이고 일관된 처리량이 필요한 경우 Amazon Bedrock에서 필요한 모델의 프로비저닝 처리량을 가져오는 것이 좋습니다. 자세한 내용은 *Amazon Bedrock 사용자 가이드*에 나와 있는 [Increase model invocation capacity with Provisioned Throughput in Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html)을 참조하시기 바랍니다.
+ 대량 데이터가 포함된 추론 쿼리에서는 스로틀링 예외가 발생할 수도 있습니다. 이는 Amazon Bedrock의 런타임 할당량이 제한되어 있기 때문입니다. Amazon Redshift는 요청을 여러 번 재시도하지만, 프로비저닝되지 않은 모델의 처리량이 가변적일 수 있으므로 쿼리는 여전히 스로틀링될 수 있습니다.
+ 소량의 데이터라도 `Too many requests, please wait before trying again.`과 같이 Amazon Bedrock에서 발생하는 스로틀링 예외가 있는 경우 Amazon Bedrock 계정의 **Service Quotas**에서 할당량을 확인합니다. 적용된 계정 수준 할당량이 사용 중인 모델의 **InvokeModel** 요청에 대한 AWS 기본 할당량 값과 적어도 동일한지 확인합니다.

## Amazon Redshift ML과 Amazon Bedrock의 통합 시 프롬프트 엔지니어링
<a name="machine-learning-br-prompt"></a>

이 섹션에서는 외부 모델에서 정적 프롬프트를 사용하는 방법을 보여 줍니다.

외부 모델에 정적 접두사 및 접미사 프롬프트를 사용하려면 `CREATE EXTERNAL MODEL` 스테이트먼트에서 `PROMPT` 및 `SUFFIX` 파라미터를 사용하여 제공합니다. 이러한 프롬프트는 외부 모델을 사용하여 모든 쿼리에 추가됩니다.

다음 예제에서는 외부 모델에 접두사 및 접미사 프롬프트를 추가하는 방법을 보여 줍니다.

```
CREATE EXTERNAL MODEL llm_claude
FUNCTION llm_claude_func
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2:1',
   PROMPT 'Summarize the following text:',
   SUFFIX 'Respond in an analytic tone');
```

동적 프롬프트를 사용하려면 추론 함수 사용 시 함수 입력에 이를 연결하여 제공할 수 있습니다. 다음 예제에서는 추론 함수와 함께 동적 프롬프트를 사용하는 방법을 보여 줍니다.

```
SELECT llm_claude_func('Summarize the following review:' | input_text | 'The review should have formal tone.')
FROM some_data
```