로드 중

Amazon Bedrock에서 Claude 설정하기

자신의 AWS 계정에서 Claude로부터 첫 응답을 받아보세요. Claude를 호출할 수 있는 역할로 터미널에서 로그인한 다음, Anthropic의 Python SDK로 짧은 Python 파일 하나를 실행하세요.

25분Claude Platform

Amazon Bedrock에서 Claude를 사용하면 자신의 AWS 계정에서 Claude를 호출합니다. AWS 로그인 정보를 사용하며, 사용량은 AWS 청구서에 청구됩니다. 짧은 Python 파일 하나로 Claude로부터 첫 응답을 받을 수 있습니다. Anthropic API 키는 필요하지 않습니다.

시작하기 전에 AWS 계정, Python 3.10 이상, 그리고 AWS CLI가 필요합니다. AWS CLI는 터미널에서 AWS를 사용하기 위한 도구입니다.

Claude를 호출할 권한 받기

이 페이지에서는 Claude를 호출하기 위한 역할(role)로 로그인합니다. 역할이란 AWS 계정 내의 권한 집합입니다. 이 역할은 AWS의 로그인 서비스인 IAM Identity Center에서 생성됩니다. IAM Identity Center는 해당 역할로 로그인하는 곳이기도 합니다.

아래 단계는 AWS 계정을 관리하는 분을 위한 것이므로, 본인이 관리자가 아니라면 이 단계를 관리자에게 전달하세요. IAM Identity Center를 설정해 본 적이 없다면 AWS의 IAM Identity Center 시작 가이드부터 시작하세요.

  1. 권한 세트 생성. 권한 세트는 역할이 할 수 있는 작업을 나열하는 정책을 포함합니다. AWS의 권한 세트 생성 단계를 따르세요. Claude in Amazon Bedrock 호출을 허용하기 위해 AWS가 제공하는 AWS 관리형 정책 AmazonBedrockMantleInferenceAccess를 여기에 추가하세요.

  2. AWS의 스토어인 AWS Marketplace에 대한 다음 권한을 동일한 권한 세트에 추가하세요.

    • aws-marketplace:Subscribe
    • aws-marketplace:Unsubscribe
    • aws-marketplace:ViewSubscriptions

    계정에서 각 Claude 모델을 처음 호출하면 AWS Marketplace를 통해 해당 모델에 대한 구독이 시작될 수 있으며, 해당 호출에는 이 권한이 필요합니다. 계정에는 AWS Marketplace 구매를 위한 결제 수단도 설정되어 있어야 합니다. 이 권한은 계정에서 모델을 처음 사용할 때만 필요하므로, 계정이 사용할 각 모델의 구독이 완료되면 권한 세트에서 제거할 수 있습니다.

  3. Claude를 호출할 사람에게 권한 세트를 할당하세요. 이는 Claude를 호출할 AWS 계정에서 수행하며, AWS의 AWS 계정에 대한 액세스 할당 단계를 따르세요. 할당하면 해당 계정에 권한 세트 이름을 딴 역할이 생성됩니다.

터미널에서 로그인하기

로그인에 필요한 세부 정보를 관리자에게 문의하세요:

  • 사용할 AWS 계정.
  • 역할의 이름.
  • 로그인할 웹 주소인 IAM Identity Center 시작 URL.
  • IAM Identity Center를 호스팅하는 AWS 리전(Region). 리전은 AWS가 서비스를 운영하는 장소 중 하나입니다.

AWS CLI를 사용하여 해당 역할로 로그인합니다. 아직 설치하지 않았다면 먼저 AWS CLI를 설치하세요. 그런 다음 아래 단계를 순서대로 진행하세요.

  1. 로그인 프로필을 설정하세요. 프로필은 CLI가 저장하는 이름이 지정된 로그인 설정 집합입니다. 다음 명령어를 실행하세요:

    bash
    aws configure sso

    질문이 한 번에 하나씩 나옵니다. 처음 질문들은 다음과 같이 답하세요:

    1. 세션 이름에는 my-sso와 같이 짧은 이름을 입력하세요.
    2. 시작 URL에는 관리자가 알려준 URL을 입력하세요.
    3. IAM Identity Center를 호스팅하는 리전에는 관리자가 알려준 리전을 입력하세요.
    4. 등록 범위(registration scopes)에는 sso:account:access를 입력하세요.

    다음으로 명령어가 브라우저를 열고, 그곳에서 로그인합니다. 브라우저가 열리지 않으면 명령어가 출력하는 안내를 따르세요. 명령어가 AWS 계정과 역할을 나열하면 관리자가 지정한 계정과 역할을 선택하세요.

    마지막으로 다음 설정을 묻습니다:

    1. 프로필의 리전에는 미국 동부(버지니아 북부)인 us-east-1을 입력하세요.
    2. 출력 형식에는 json을 입력하세요.
    3. 프로필 이름에는 default를 입력하세요. 명령어에서 프로필 이름을 지정하지 않으면 CLI는 default 프로필을 사용하므로, 아래 명령어는 작성된 그대로 실행됩니다.
  2. 로그인하세요.

    bash
    aws sso login

    브라우저가 열립니다. 그곳에서 로그인을 완료하면 터미널에 "Successfully logged into Start URL"로 시작하는 줄이 출력됩니다. 이제 CLI가 자격 증명(credentials)을 보유합니다. 자격 증명은 AWS에게 사용자의 신원을 증명하는 단기 키입니다. 만료되면 이 명령어를 다시 실행하세요.

  3. 로그인한 계정과 역할을 확인하세요.

    bash
    aws sts get-caller-identity

    출력에서 Account는 사용자 AWS 계정의 ID여야 합니다. Arn은 현재 로그인한 역할에 대한 AWS의 전체 이름이며, 선택한 역할의 이름을 포함해야 합니다. 둘 중 하나라도 잘못되었다면 aws configure sso를 다시 실행하고 올바른 계정과 역할을 선택하세요.

첫 응답 받기

이제 Python에서 Claude에게 요청 하나를 보냅니다.

  1. Amazon Bedrock 지원이 포함된 Anthropic의 Python SDK를 설치하세요. SDK는 코드에서 Claude를 호출하기 위한 Anthropic의 라이브러리입니다.

    bash
    pip install -U "anthropic[bedrock]"
  2. 이 파일을 first_reply.py로 저장하세요.

    python
    from anthropic import (
        AnthropicBedrockMantle,
    )
    
    client = AnthropicBedrockMantle(
        aws_region="us-east-1",
    )
    
    message = client.messages.create(
        model="anthropic.claude-sonnet-5",
        max_tokens=1024,
        messages=[{
            "role": "user",
            "content": "Hello, Claude",
        }],
    )
    
    for block in message.content:
        if block.type == "text":
            print(block.text)

    이 파일은 코드에서 요청을 보낼 때 사용하는 객체인 클라이언트를 생성합니다. 이 클라이언트는 프로필에 지정한 리전인 us-east-1의 Amazon Bedrock에 있는 Claude용입니다.

    클라이언트는 IAM Identity Center 로그인에서 얻은 자격 증명을 포함하여 AWS 자격 증명을 직접 찾아내므로, 파일에 키를 넣을 필요가 없습니다.

    그런 다음 파일은 "Hello, Claude"라는 메시지 하나를 Claude Sonnet 5에게 보냅니다. model 줄은 모델 ID로 해당 모델을 지정합니다. 마지막으로 파일은 Claude 응답의 텍스트를 출력합니다.

  3. 파일을 실행하세요.

    bash
    python first_reply.py

    Claude의 응답이 터미널에 출력됩니다. 대신 Python이 오류와 함께 멈추면 아래의 "요청이 실패한 경우"를 참조하세요.

  4. 계정을 다시 확인하세요. 같은 터미널에서 aws sts get-caller-identity를 실행하세요. 이 명령어는 현재 로그인한 계정과 역할을 보여줍니다. 사용량은 AWS 청구서에 청구되므로 계정이 관리자가 지정한 계정인지 확인하세요.

요청이 실패한 경우

요청이 실패하면 SDK가 오류를 발생시키고, Python이 이를 터미널에 출력합니다. 해당 출력에서 PermissionDeniedError 또는 NotFoundError를 찾아보세요.

권한 오류

PermissionDeniedError는 AWS가 상태 403으로 요청을 거부했음을 의미합니다. 상태(status)는 요청이 어떻게 처리되었는지를 알리기 위해 서버가 돌려보내는 번호입니다. 보낸 자격 증명으로는 이 요청을 수행할 수 없습니다. 다음 해결 방법을 순서대로 시도하세요:

  1. 로그인이 만료되었을 수 있으니 다시 로그인하세요. aws sso login을 실행한 다음 first_reply.py를 다시 실행하세요.
  2. 관리자에게 역할과 계정이 "Claude를 호출할 권한 받기"에 나열된 모든 것을 갖추고 있는지 확인해 달라고 요청하세요.
  3. 계정에서 Claude Sonnet 5를 처음 호출하는 경우, 권한이 설정된 후 2분을 기다린 다음 first_reply.py를 다시 실행하세요. 모델에 대한 구독이 완료되는 데 최대 2분이 걸릴 수 있으며, 완료될 때까지 호출이 거부될 수 있습니다.

찾을 수 없음 오류

NotFoundError는 AWS가 상태 404로 응답했으며 요청에서 지정한 항목을 찾을 수 없었음을 의미합니다. first_reply.py의 모델 ID를 확인하세요. Claude in Amazon Bedrock의 모델 ID는 anthropic.으로 시작하므로 정확히 anthropic.claude-sonnet-5로 표기되어야 합니다.

그 밖의 오류

다른 오류는 AWS의 Amazon Bedrock 오류 코드 페이지에서 확인하세요.

다음 단계

다음으로 Claude Platform 구축 방법을 알려주는 Claude Platform 101 과정을 수강하세요. 이 과정의 여러 레슨에는 anthropic.Anthropic()으로 클라이언트를 생성하는 Python 샘플이 있습니다.

해당 샘플에서는 대신 first_reply.py의 import, 클라이언트 줄, 모델 ID를 사용하세요. 이 과정의 일부 샘플은 Claude in Amazon Bedrock이 지원하지 않는 기능을 사용하며, 이는 Claude in Amazon Bedrock 문서 페이지에 나열되어 있습니다.