使用 Amazon Bedrock 中的 Claude 時,您會從自己的 AWS 帳戶呼叫 Claude。 您使用自己的 AWS 登入資訊,用量會計入您的 AWS 帳單。一個簡短的 Python 檔案就能讓您取得 Claude 的第一個回覆。您不需要 Anthropic API 金鑰。
開始之前,您需要一個 AWS 帳戶、Python 3.10 或更新版本,以及 AWS CLI。AWS CLI 是從終端機使用 AWS 的工具。
取得呼叫 Claude 的權限
在本頁,您將以可呼叫 Claude 的角色登入。角色是 AWS 帳戶中的一組權限。該角色是在 IAM Identity Center(AWS 的登入服務)中建立的。IAM Identity Center 也是您以該角色登入的地方。
以下步驟適用於管理您 AWS 帳戶的人員,如果這不是您,請將這些步驟傳給您的管理員。 如果您從未設定過 IAM Identity Center,請先參閱 AWS 的 IAM Identity Center 入門指南(在新分頁中開啟)。
-
建立一個權限組。 權限組包含列出角色可執行操作的原則。請依照 AWS 的步驟建立權限組(在新分頁中開啟)。將 AWS 受管原則
AmazonBedrockMantleInferenceAccess新增到其中,這是 AWS 提供的,用於允許呼叫 Amazon Bedrock 中的 Claude。 -
將以下 AWS Marketplace(AWS 的商店)權限新增到同一個權限組中。
aws-marketplace:Subscribeaws-marketplace:Unsubscribeaws-marketplace:ViewSubscriptions
帳戶中對每個 Claude 模型的第一次呼叫可能會透過 AWS Marketplace 開始訂閱該模型,而該呼叫需要這些權限。帳戶也需要設定用於 AWS Marketplace 購買的付款方式。這些權限僅在模型於帳戶中首次使用時需要,因此一旦帳戶將使用的每個模型都完成訂閱,您就可以從權限組中移除這些權限。
-
將權限組指派給將呼叫 Claude 的人員。 在他們將呼叫 Claude 的 AWS 帳戶中執行此操作,依照 AWS 的步驟將存取權指派給 AWS 帳戶(在新分頁中開啟)。指派權限組會在該帳戶中建立角色,並以該權限組命名。
從終端機登入
向您的管理員詢問登入所需的詳細資訊:
- 要使用的 AWS 帳戶。
- 角色名稱。
- IAM Identity Center 起始 URL,即您登入的網址。
- 託管 IAM Identity Center 的 AWS 區域。區域是 AWS 執行其服務的地點之一。
您使用 AWS CLI 以該角色登入。如果您還沒有安裝,請先安裝 AWS CLI(在新分頁中開啟)。然後依序完成以下步驟。
-
設定登入設定檔。 設定檔是 CLI 儲存的一組具名登入設定。執行以下命令:
bashaws configure sso它會逐一提出問題。請依照以下方式回答前幾個問題:
- 對於工作階段名稱,輸入任何簡短名稱,例如
my-sso。 - 對於起始 URL,輸入您的管理員提供的網址。
- 對於託管 IAM Identity Center 的區域,輸入您的管理員提供的區域。
- 對於註冊範圍,輸入
sso:account:access。
接下來該命令會開啟您的瀏覽器,您在那裡登入。如果瀏覽器沒有開啟,請依照該命令印出的指示操作。當命令列出 AWS 帳戶和角色時,選擇您的管理員指名的帳戶和角色。
最後它會詢問以下設定:
- 對於設定檔的區域,輸入
us-east-1,即美國東部(維吉尼亞北部)。 - 對於輸出格式,輸入
json。 - 對於設定檔名稱,輸入
default。當命令未指名設定檔時,CLI 會使用default設定檔,因此下面的命令可依原樣執行。
- 對於工作階段名稱,輸入任何簡短名稱,例如
-
登入。
bashaws sso login您的瀏覽器會開啟。在那裡完成登入,終端機會印出一行以「Successfully logged into Start URL」開頭的文字。CLI 現在已保存您的憑證。憑證是向 AWS 證明您身分的短期金鑰。當它們過期時,請再次執行此命令。
-
檢查您以哪個帳戶和角色登入。
bashaws sts get-caller-identity在輸出中,
Account應該是您 AWS 帳戶的 ID。Arn是 AWS 對您登入所用角色的完整名稱,它應該包含您選擇的角色名稱。如果其中任何一項不正確,請再次執行aws configure sso,並選擇正確的帳戶和角色。
取得第一個回覆
現在從 Python 向 Claude 傳送一個請求。
-
安裝 Anthropic 的 Python SDK,並附上其 Amazon Bedrock 支援。 該 SDK 是 Anthropic 用於從程式碼呼叫 Claude 的函式庫。
bashpip install -U "anthropic[bedrock]" -
將此檔案儲存為
first_reply.py。pythonfrom 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。客戶端會自行找到您的 AWS 憑證,包括來自您 IAM Identity Center 登入的憑證,因此檔案中不需要任何金鑰。
然後該檔案會向 Claude Sonnet 5 傳送一則訊息「Hello, Claude」。
model這一行是以模型 ID 來命名該模型。最後,檔案會印出 Claude 回覆的文字。 -
執行該檔案。
bashpython first_reply.pyClaude 的回覆會印在您的終端機中。如果 Python 反而因錯誤而停止,請前往下方的「如果請求失敗」。
-
再次檢查帳戶。 在同一個終端機中,執行
aws sts get-caller-identity。它會顯示您以哪個帳戶和角色登入。用量會計入您的 AWS 帳單,因此請確保帳戶是您的管理員指名的那一個。
如果請求失敗
當請求失敗時,SDK 會引發一個錯誤,Python 會將其印在終端機中。在該輸出中尋找 PermissionDeniedError 或 NotFoundError。
權限錯誤
PermissionDeniedError 表示 AWS 以狀態碼 403 拒絕了該請求。狀態碼是伺服器回傳的數字,用以表示請求的結果。您傳送的憑證不被允許發出此請求。請依序嘗試以下修正方法:
- 再次登入,因為您的登入可能已過期。執行
aws sso login,然後再次執行first_reply.py。 - 請您的管理員檢查角色和帳戶是否擁有「取得呼叫 Claude 的權限」中列出的所有內容。
- 如果這是您帳戶中對 Claude Sonnet 5 的第一次呼叫,請在權限就緒後等待 2 分鐘,然後再次執行
first_reply.py。模型的訂閱最多可能需要 2 分鐘才能完成,在此之前呼叫可能會被拒絕。
找不到錯誤
NotFoundError 表示 AWS 以狀態碼 404 回應,且找不到請求中指名的某項內容。請檢查 first_reply.py 中的模型 ID。Amazon Bedrock 中 Claude 的模型 ID 以 anthropic. 開頭,因此它必須完全寫成 anthropic.claude-sonnet-5。
其他任何錯誤
請在 AWS 的Amazon Bedrock 錯誤碼(在新分頁中開啟)頁面上查詢其他任何錯誤。
接下來該做什麼
接下來,請修習課程 Claude Platform 101(在新分頁中開啟),該課程教授在 Claude Platform 上進行建置。其中有幾堂課程附有使用 anthropic.Anthropic() 建立客戶端的 Python 範例。
在那些範例中,請改用 first_reply.py 中的匯入、客戶端那一行以及模型 ID。 課程中有些範例使用了 Amazon Bedrock 中的 Claude 不支援的功能,這些功能列在 Amazon Bedrock 中的 Claude 文件頁面(在新分頁中開啟)中。