AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何对连接到 OpenSearch 无服务器集群或控制面板时收到的 403 或 401 错误进行故障排除?
当我对我的 Amazon OpenSearch 无服务器集群运行 OpenSearch API 命令或尝试访问控制面板时,收到 403 或 401 错误。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
403 禁止访问错误
403 Forbidden(403 禁止访问)错误消息通常在 AWS Identity and Access Management (IAM) 身份没有正确的权限或者请求签名不正确时出现。
当您在客户端中开启详细日志记录或选择 IAM 控制台上的 Network(网络)选项卡时,您可能会看到错误消息“x-aoss-response-hint': 'X01:gw-helper-deny”。
对于 OpenSearch Dashboards 和 OpenSearch Serverless 数据面板 API 的访问权限,请在 IAM 身份权限策略中包括 aoss:DashboardsAccessAll 和 aoss:APIAccessAll 操作。要查看策略示例,请参阅使用 OpenSearch API 操作。
对于 OpenSearch Serverless 数据面板 API 的访问权限,签名不正确的请求也可能导致 403 Forbidden(403 禁止访问)错误。确认您的 IAM 权限正确后,请查看您的客户端如何与 OpenSearch API 进行交互。
要编写代码的简单版本,请参阅将数据引入 Amazon OpenSearch 无服务器集合。
使用 curl 从 Amazon Elastic Compute Cloud (Amazon EC2) 实例测试您的端点。
将记录引入索引的 curl 命令示例:
curl -XPOST \ —user "$AWS_ACCESS_KEY_ID":"$AWS_SECRET_ACCESS_KEY" \ —aws-sigv4 "aws:amz:us-east-1:aoss" \ —header "x-amz-content-sha256: $REQUEST_PAYLOAD_SHA_HASH" \ —header "x-amz-security-token: $AWS_SESSION_TOKEN" \ "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/movies-index/_doc" \ -H "Content-Type: application/json" -d '{"title": "Shawshank Redemption"}'
**注意:**将示例访问密钥 ID、私有密钥和会话令牌替换为您的值。要获取这些值,请运行 get-session-token AWS CLI 命令。
如果您发送有效载荷,请运行以下命令以生成有效载荷的安全哈希算法 256 位 (SHA-256) 作为标头的一部分:
echo -n '{"title": "Shawshank Redemption"}' | shasum -a 256
您也可以在 GitHub 网站上使用 awscurl。awscurl 使用您的默认凭证,例如 EC2 实例配置文件,因此您无需将有效载荷哈希作为标头。
awscurl 请求示例:
awscurl --service aoss --region us-east-1 -XPOST \ "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/movies-index/_doc" \ -H "Content-Type: application/json" -d '{"title": "Shawshank Redemption"}'
awscurl --service aoss --region us-east-1 -XGET \ "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/_cat/indices"
**注意:**将 us-east-1 替换为您的 AWS 区域,将端点示例替换为您的端点。
使用详细日志记录来确认前面的标头是发送到服务的请求的一部分。由于标头值不正确,签名不正确。您还可以使用详细日志记录来确认您的收集端点、区域和服务是否正确。
其他 403 错误
根据您执行的操作,您可能会收到不同的 403 错误消息。
对于索引特定引入操作,您可能会看到类似于“Authorization failure for the following indices: [index/collectionname/indexname]”(以下索引的授权失败:[索引/集合名称/索引名称])的错误消息。
对于搜索请求,您可能会看到错误消息,例如“all shards failed”(所有分片均失败)或“Bad Authorization”(授权错误)。
对于非索引特定操作,您可能会看到类似于“User does not have permissions for the requested resource”(用户不具有访问所请求资源的权限)的错误消息。
要解决这些错误,请确保集合的数据访问策略包含对集合和索引资源的正确权限。此外,请确保该策略在 Principal(主体)部分包含正确的 IAM 身份。
有关数据访问策略语法的详细信息,请参阅策略语法。
401 未授权错误
当网络策略拒绝访问 OpenSearch 无服务器 API 或控制面板时,通常会出现 401 错误消息。
当您在客户端开启详细日志记录或查看浏览器开发者控制台的 Network(网络)选项卡时,您可能会看到错误消息“x-aoss-response-hint': 'X01:network-policy-deny”。
要从公共互联网访问 OpenSearch 无服务器 API 和控制面板,请在网络策略中开启公共访问权限。
JSON 格式的网络策略示例:
[ { "Rules": [ { "Resource": [ "collection/collectionname" ], "ResourceType": "dashboard" }, { "Resource": [ "collection/collectionname" ], "ResourceType": "collection" } ], "AllowFromPublic": true } ]
**注意:**将 collectionname 替换为您的集合名称。
要私密访问 API 和控制面板,请在客户端 VPC 中为 OpenSearch 无服务器创建 VPC 端点。
JSON 格式的网络策略示例:
[ { "Rules": [ { "Resource": [ "collection/collectionname" ], "ResourceType": "dashboard" }, { "Resource": [ "collection/collectionname" ], "ResourceType": "collection" } ], "AllowFromPublic": false, "SourceVPCEs": [ "vpce-0c9xxxxxxxxxxa680" ] } ]
**注意:**将 collectionname 替换为您的集合名称。
有关网络策略的其他示例,请参阅 Amazon OpenSearch 无服务器的网络访问权限。
要从另一个 VPC 访问任何 OpenSearch 无服务器域,请在 VPC 中创建 OpenSearch 无服务器 VPC 端点。有关详细信息,请参阅使用接口端点 (AWS PrivateLink) 访问 Amazon OpenSearch 无服务器。
**注意:**您可以选择让您的客户端从 VPC 调用 OpenSearch 无服务器 API 端点。您可以通过使用公共互联网的浏览器访问控制面板。
要从您的公司网络私密访问控制面板,请使用入站 DNS 解析器端点。DNS 查询返回正确的私有 IP 地址。有关详细信息,请参阅使用 VPC 端点访问 Amazon OpenSearch 无服务器集合。
相关信息
- 语言
- 中文 (简体)
