在開始之前,請確保:
主要優勢:
依照第九天的方式建立好 Lambda 函數,基礎設定完成後進入下一步。
進入 IAM 設定
檢查現有權限
新增 Bedrock 權限
bedrock
⚠️安全原則提醒最小權限原則
只給予必要的操作權限,避免過度授權造成安全風險!
回到 Lambda 函數,開始撰寫 Bedrock 串接邏輯:
import json
import boto3
from botocore.exceptions import ClientError
def lambda_handler(event, context):
"""
AWS Lambda 函數:使用 Bedrock 調用 DeepSeek-V3 模型
"""
# 初始化 Bedrock Runtime 客戶端
bedrock_runtime = boto3.client(
service_name='bedrock-runtime',
region_name='us-west-2' # 根據區域調整
)
# DeepSeek-V3 模型 ID
model_id = "deepseek.v3-v1:0"
try:
# 從 event 中獲取用戶輸入
user_message = event.get('message', 'Hello, how are you?')
# 構建請求負載
request_body = {
"messages": [
{
"role": "user",
"content": user_message
}
],
"max_tokens": 1000,
"temperature": 0.7,
"top_p": 0.9
}
# 調用 Bedrock
response = bedrock_runtime.invoke_model(
modelId=model_id,
contentType='application/json',
accept='application/json',
body=json.dumps(request_body)
)
# 解析回應
response_body = json.loads(response['body'].read())
generated_text = response_body['choices'][0]['message']['content']
# 返回成功回應
return {
'statusCode': 200,
'body': json.dumps({
'message': generated_text,
'success': True
}, ensure_ascii=False)
}
except ClientError as e:
return {
'statusCode': 400,
'body': json.dumps({
'error': f"Bedrock Error: {e.response['Error']['Message']}",
'success': False
})
}
except Exception as e:
return {
'statusCode': 500,
'body': json.dumps({
'error': f"Error: {str(e)}",
'success': False
})
}
完成程式碼撰寫後,點擊 Deploy 按鈕部署函數。
⚠️ 重要設定:
為什麼要調整?
Lambda 預設 3 秒逾時,但 AI 模型回應通常需要更長時間,避免函數執行中斷。
成功指標:
這次的「串串香」沒有問題! 🍢
成功建立了: