AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何升級 Lambda 中的 boto3 和 botocore,以存取較新版的 AI 模型?
我想在 AWS Lambda 中安裝最新版 boto3 和 botocore,以存取 Amazon Bedrock 中最新的 AI 模型。
簡短說明
如果您搭配使用 Python 與 Lambda 函式,來調用 Amazon Bedrock 模型,則可能會收到 "Error: "errorMessage": "Unknown service: 'bedrock'" 錯誤訊息。若要解決此問題,請將 Lambda 中的 boto3 和 botocore 程式庫升級為最新版本。
**注意:**使用 Amazon Bedrock 基礎模型時,必須遵守賣方的定價條款。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱 Troubleshooting errors for the AWS CLI (對 AWS CLI 錯誤進行疑難排解)。此外,請務必使用最新版 AWS CLI。下列 AWS CLI 命令適用於 Linux、Unix 和 macOS 作業系統。
**先決條件:**請確保您可以存取 Amazon Bedrock 基礎模型。
若要升級 boto3 和 botocore,請完成下列步驟:
-
執行下列命令以建立暫存資料夾:
LIB_DIR=boto3-mylayer/python mkdir -p $LIB_DIR**注意:**請將 boto3-mylayer 替換為您的暫存資料夾名稱。
-
執行下列命令將 boto3 程式庫安裝至 LIB_DIR:
pip3 install boto3==1.42.44 -t $LIB_DIR pip3 install botocore==1.42.44 -t $LIB_DIR -
執行下列命令將所有相依性壓縮至 /tmp/boto3-mylayer.zip:
cd boto3-mylayer zip -r /tmp/boto3-mylayer.zip .**注意:**請將 boto3-mylayer 替換為您的暫存資料夾名稱。
-
若要發佈層,請執行下列 publish-layer-version AWS CLI 命令:
aws lambda publish-layer-version --layer-name boto3-mylayer --zip-file fileb:///tmp/boto3-mylayer.zip**注意:**請將 layer-name 替換為您的 Lambda 層名稱,並將 boto3-mylayer 替換為您的暫存資料夾名稱。記下輸出中層的 Amazon Resource Name (ARN)。
-
若要將您建立的層附加到 Lambda 函式,請執行下列 update-function-configuration 命令:
aws lambda update-function-configuration --function-name MY_FUNCTION --layer_ARN**注意:**請將 layer_ARN 替換為層 ARN。如需更多資訊,請參閱 Adding layers to functions (將層新增至函式)。
-
若要測試更新,請執行下列程式碼以調用 Anthropic Claude Opus 4.6:
import boto3 import botocore import json def lambda_handler(event, context): print("Boto3 version:", boto3.__version__) print("Botocore version:", botocore.__version__) bedrock_runtime = boto3.client(service_name='bedrock-runtime', region_name='us-east-1', endpoint_url='https://bedrock-runtime.us-east-1.amazonaws.com') # event = { # "anthropic_version": "bedrock-2023-05-31", # "max_tokens": 4000, # "top_k": 250, # "top_p": 1, # "messages": [ # { # "role": "user", # "content": "Why is the sky blue?" # } # ], # "stop_sequences": ["Command:"] # } print(f"EVENT: {event}") bedrock_str = json.dumps(event) print(f"BEDROCK_STR: {bedrock_str}") modelId = 'global.anthropic.claude-opus-4-5-20251101-v1:0' bodyprompt = { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 4000, "top_k": 250, "top_p": 1, "messages": [ { "role": "user", "content": "Why is the sky blue?" } ], "stop_sequences": ["Command:"] } response = bedrock_runtime.invoke_model(body=bedrock_str, modelId=modelId, accept='application/json', contentType='application/json') # response = bedrock_runtime.invoke_model(body= json.dumps(bodyprompt), modelId=modelId, accept='application/json', contentType='application/json') response_body = json.loads(response.get('body').read()) print(response_body) return {'statusCode': 200, 'body': json.dumps(response_body)}**注意:**請將 region_name 替換為您的 AWS 區域,並將 endpoint_url 替換為 Amazon Bedrock 的端點。
- 語言
- 中文 (繁體)
