You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:21:33