我想解決在 Amazon Bedrock 中呼叫 InvokeModel API 時出現的 AccessDeniedException 或 ValidationException 錯誤。
解決方法
當 InvokeModel API 無法存取其調用的基本模型時,就會發生 AccessDeniedException 和 ValidationException 錯誤。如果您的 AWS 帳戶沒有執行作業所需的 AWS Identity and Access Management (IAM) 權限,也可能會發生錯誤。
模型存取錯誤
如果您無法存取 API 嘗試調用的模型,那麼您會收到類似於以下範例的錯誤訊息:
「叫 InvokeModel 作業時發生錯誤 (AccessDeniedException): 您的帳戶未獲得授權調用此 API 作業。」
- 或 -
「叫 InvokeModel 作業時發生錯誤 (AccessDeniedException): 您無法存取具有指定模型 ID 的模型。」
若要解決此問題,請確認下列組態:
IAM 權限錯誤
如果調用 API 的 IAM 使用者或角色缺少所需的權限,那麼您會收到類似下列範例的錯誤訊息:
「AccessDeniedException: 呼叫 InvokeModel 作業時發生錯誤 (AccessDeniedException): 使用者:username 未獲在身分型政策中明確拒絕於資源:resourcename 上執行:bedrock:InvokeModel 的授權。」
- 或 -
「AccessDeniedException: 呼叫 InvokeModel 作業時發生錯誤 (AccessDeniedException): 使用者:username 未獲得在資源:resourcename 上執行:bedrock:InvokeModel 的授權,因為沒有身分型政策允許 bedrock:InvokeModel 動作。」
若要解決此問題,請確認調用 API 的 IAM 使用者或角色具有下列必要的權限:
{ "Version": "2012-10-17",
"Statement": {
"Sid": "AllowInference",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": "arn:aws:bedrock:*::foundation-model/model-id"
}
}
SCP 錯誤
如果服務控制政策 (SCP) 對您的帳戶有特定限制,那麼您會收到下列錯誤訊息:
「使用者:username 未獲在服務控制政策中明確拒絕於資源:username 上執行:bedrock:InvokeModel 的授權。」
即使您為調用 API 的 IAM 角色提供了所需的權限,也會發生上述錯誤。通常,當您使用「跨區域干擾」將呼叫路由至 SCP 封鎖的區域時,就會發生此錯誤。
若要解決此問題,請檢查您的 AWS CloudTrail 事件,以查看 API 呼叫及其所指向的區域。然後,檢查 SCP 是否限制該 API 或區域的動作。此外,請檢查其他 SCP 限制,例如特定模型 ID 的限制。
API 動作錯誤
如果您使用了不正確的 API 動作,則會收到下列錯誤訊息:
「ValidationException: 呼叫 InvokeModel 作業時發生錯誤 (ValidationException): 服務無法識別要求的作業。」
若要解決上述錯誤,請在 API 呼叫中將 bedrock-runtime 指定為服務。如需詳細資訊,請參閱 Boto3 網站上的 BedrockRuntime。
您可能還會收到以下錯誤訊息:
「呼叫 InvokeModel 作業時發生錯誤 (ValidationException): 提供的模型識別碼無效」
- 或 -
「ResourceNotFoundException: 呼叫 InvokeModel 作業時發生錯誤 (ResourceNotFoundException): 無法根據提供的模型識別碼解析基礎模型。」
上述錯誤是由於組態問題引起的。若要對此問題進行疑難排解,請確認下列組態:
SDK 版本錯誤
如果您使用不相容的 AWS SDK for Python (Boto3) 版本來呼叫 InvokeModel API,那麼您將收到下列錯誤訊息:
「UnknownServiceError: 未知服務:'bedrock-runtime)」
若要解決此問題,請將 SDK 升級至最新版本。若要查看 SDK 的最新版本,請參閱 GitHub 網站上的 boto3/CHANGELOG.rst。
帳戶限制錯誤
如果您的帳戶有安全限制,那麼您將收到下列錯誤訊息:
「呼叫 InvokeModel 作業時發生錯誤 (ValidationException): 不允許操作」
若要解決此問題,您必須開啟支援案例。