使用AWS PHP SDK调用Bedrock时遇安全令牌无效错误的解决咨询
AWS PHP SDK调用Bedrock触发UnrecognizedClientException(403)的解决思路
问题概况
使用组织管理的AWS账号Access Key和Secret Key,通过PHP SDK调用Bedrock的InvokeModel接口时返回403 Forbidden错误,错误信息如下:
Error: Error executing "InvokeModel" on "https://bedrock-runtime.us-east-1.amazonaws.com/model/ai21.j2-mid-v1/invoke"; AWS HTTP error: Client error: POST https://bedrock-runtime.us-east-1.amazonaws.com/model/ai21.j2-mid-v1/invoke resulted in a 403 Forbidden response: {"message":"The security token included in the request is invalid."} UnrecognizedClientException (client): The security token included in the request is invalid. - {"message":"The security token included in the request is invalid."}
使用个人管理员账号的密钥可正常调用模型,已尝试通过aws configure重置凭证、删除旧配置文件、检查会话令牌等操作,问题仍未解决。
排查及解决步骤
- 确认组织账号密钥有效性:登录AWS控制台进入IAM用户页面,查看该Access Key状态是否为Active,是否存在过期或被管理员禁用的情况。部分企业组织会定期轮换密钥,失效密钥会触发此错误。
- 核对IAM权限细节:虽标注拥有Bedrock全权限,但需确认策略包含
bedrock-runtime:InvokeModel动作(Bedrock调用依赖Bedrock Runtime服务,而非Bedrock基础服务权限),且资源需覆盖目标模型arn:aws:bedrock:us-east-1::model/ai21.j2-mid-v1。示例权限策略片段:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "bedrock-runtime:InvokeModel", "Resource": "arn:aws:bedrock:us-east-1::model/ai21.j2-mid-v1" } ] } - 强制指定凭证加载:AWS PHP SDK会按优先级自动加载凭证(环境变量、IAM角色、本地配置文件等),可能存在加载混淆。修改代码显式指定组织账号密钥,排除加载顺序问题:
require './vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\BedrockRuntime\BedrockRuntimeClient; $client = new BedrockRuntimeClient([ 'region' => 'us-east-1', 'version' => 'latest', 'credentials' => [ 'key' => '你的组织账号Access Key', 'secret' => '你的组织账号Secret Key', ], ]); $prompt = 'Once upon a time, there was a princess who lived in a castle.'; try { $request = [ 'modelId' => 'ai21.j2-mid-v1', 'body' => json_encode([ 'prompt' => $prompt, 'maxTokens' => 200, 'temperature' => 0.5, ]), ]; $response = $client->invokeModel($request); $completion = json_decode($response["body"],true); echo "<pre>"; echo $completion["completions"][0]["data"]["text"]; } catch (AwsException $e) { echo "Error: " . $e->getMessage() . "\n"; } - 检查组织SCP限制:企业组织可能通过服务控制策略(SCP)限制成员账号的服务访问,即使IAM用户有全权限,SCP也会拦截请求。联系组织管理员确认是否存在针对Bedrock或Bedrock Runtime的SCP限制。
- 验证区域匹配:确认代码指定的
us-east-1区域与目标模型的可用区域一致,部分模型仅在特定区域提供,若组织账号被限制区域也会触发错误。
内容的提问来源于stack exchange,提问作者SKY-BIRD Web Media
相关产品推荐
相关产品推荐

