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

AWS OpenSearch Serverless API访问出现403 Forbidden问题求助

排查AWS OpenSearch Serverless Lambda调用403 Forbidden错误

可能原因及对应解决办法

1. 数据访问策略资源匹配异常

OpenSearch Serverless的索引资源格式为 index/<collection-name>/<index-pattern>,当前策略使用index/*/*通配所有集合下的索引,但需确认:

  • 将通配符替换为具体集合名测试,比如index/your-collection-name/*,避免通配符匹配异常
  • 检查策略状态是否为Active,新创建的策略需等待1-2分钟生效

2. IAM角色配置错误

即使已添加aoss:APIAccessAll权限,仍需验证:

  • 角色ARN完全正确:确保MY_ACCOUNT是12位AWS账号ID,角色名my_lambda_role拼写无误
  • 信任关系允许Lambda扮演该角色:IAM角色的信任策略需包含:
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
    

3. 手动签名代码潜在问题

手动签名容易出错,建议改用官方SDK简化调用:
使用AWS SDK v3的示例代码:

import { OpenSearchServerlessClient, SearchCommand } from "@aws-sdk/client-opensearchserverless";

exports.handler = async (event) => {
  const client = new OpenSearchServerlessClient({ region: "us-east-1" });
  const command = new SearchCommand({
    index: "cats_and_dogs",
    body: {
      query: {
        match: { description: "farm" }
      }
    }
  });

  try {
    const response = await client.send(command);
    return {
      statusCode: 200,
      body: response
    };
  } catch (error) {
    console.error(error);
    return {
      statusCode: 500,
      body: JSON.stringify({ error: "Failed to execute search" })
    };
  }
};

若坚持使用v2 SDK,确保SDK版本≥2.1000.0,避免签名逻辑不兼容。

4. VPC网络限制(若Lambda部署在VPC内)

  • 创建VPC接口端点,服务名为com.amazonaws.<region>.aoss
  • 配置安全组允许Lambda出站访问443端口

5. 权限验证工具

用AWS CLI验证角色权限:

# 检查数据访问策略详情
aws opensearchserverless get-policy --type data --name <your-policy-name>

# 模拟角色获取临时凭证,测试API调用
aws sts assume-role --role-arn arn:aws:iam::MY_ACCOUNT:role/my_lambda_role --role-session-name test-session
# 使用返回的凭证,通过curl调用Search API验证权限

内容的提问来源于stack exchange,提问作者Zigglzworth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:19:54