amazon-web-services - 从 Nextjs 无服务器函数安全地连接到 AWS Elasticsearch
问题描述
我正在尝试从 Nextjs 中的无服务器功能安全地连接到我的 ES 服务。无服务器功能没有固定的 IP 地址或 IP 地址范围,因此我无法以这种方式保护它。我已经尝试创建一个 IAM 用户并使用访问密钥 ID 和秘密访问密钥来创建这样的基本授权标头。
const auth = btoa(`${accessKey}:${accessSecret}`);
然后我用它作为这样的授权头。
`Authorization: Basic ${auth}`
该请求返回以下错误。
{
"message": "Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header. Authorization=Basic XXXXXXXXXXXXXXXXXXXXXXXXXX"
}
我已通过访问策略授予 IAM 用户权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXX:user/elasticsearch"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-2:XXXXXXXX:domain/team-up/*"
}
]
}
这是保护与数据库的连接的正确方法吗?我尝试使用 POST /_security/user/_password 端点在数据库上设置密码,但这也失败了。
亚马逊声称支持基本授权。 https://aws.amazon.com/elasticsearch-service/faqs/
解决方案
在 aws elasticsearch 域的向导设置过程中,我没有创建主用户。创建域后,似乎无法创建主用户。我删除了 elasticseach 域并使用主用户重新创建它。
推荐阅读
- kubernetes - Portworx 到 ETCD 的连接不起作用(http 与 https)
- angular - Angular5:带有分页、对象映射的 REST API 服务
- swift - 从给定索引处的字符串中删除字符的最佳/快速方法(swift 4)
- java - FXMLLoader getController() 返回 null
- python - 没有输入的函数的 Numba 矢量化
- python - Eulerproject 2 斐波那契计算
- sql - 将平面文件日期转换为时间戳
- join - 加入来自两个不同 Kafka 主题的流
- javascript - Typescript 运行时模块加载(使用 webpack)和类似 dll 的后期绑定
- python - 如何获取多索引数据帧的前两个索引的字典