【发布时间】:2020-11-03 06:16:36
【问题描述】:
我正在尝试从在弹性 beanstalk 内运行 Node.js 的 EC2 实例向 AWS Elastic Search 发出 HTTP 请求(用于插入/索引删除/查询等)。我的问题在于 AWS 处理身份验证的方式。
弹性搜索索引中的文档没有用于查询/更新等的 SDK。 (有一个用于管理域)。他们推荐的签名请求方式是here。简而言之,他们使用 AWS.Signers.V4 类将凭证添加到 HTTP 标头,并且需要访问密钥、秘密密钥和会话令牌。
我正在使用的 EC2 实例不会将凭据存储在环境中(决定不在我手中)或文件中,这就是我在我的机器上获取凭据的方式。它已经具有访问弹性搜索节点的正确角色,我需要提取三个凭据(访问密钥、密钥和会话令牌)的最佳方法,因为它们作为参数传递给 addAuthorization方法。我尝试记录CredentialProviderChain,但没有一个提供者有任何存储的凭据。在本地记录此内容会按预期显示具有正确凭据的环境变量和共享凭据文件。有人告诉我不应该使用假设角色 API(它会返回凭据),这对我来说也没有意义,因为我承担了 EC2 已经拥有的角色,哈哈
我遇到了this method 来检索实例元数据,包括安全凭证。这是我最好的选择吗?或者有没有我没有考虑过的替代方案?我对此并不太兴奋,因为我必须添加一些逻辑来检查进程是否在 EC2 实例中运行(这样我可以在没有运行时在本地进行测试)所以它不像我期望的那样干净,并且我想确保我已经探索了所有可能性。
附: AWS 开发工具包如何处理身份验证?如果我使用 AWS 使用的相同方法,我认为我的更改最有可能获得批准,因为弹性搜索是我们必须手动签署请求的唯一服务。所有其他的都由 SDK 处理。
【问题讨论】:
-
这可能是因为我不太了解身份验证,但是当我们的凭据经常更改时,这不是问题吗?每次我们的凭据过期时,我们都不需要更新这些吗?
-
啊,好的,非常感谢您的提示!希望我会在某个时候恢复更新,哈哈
标签: node.js amazon-ec2 amazon-elastic-beanstalk amazon-iam aws-elasticsearch