【问题标题】:How to do AWS Signature Version 4 from a local machine?如何从本地计算机执行 AWS 签名版本 4?
【发布时间】:2019-09-29 15:03:33
【问题描述】:

我正在尝试从我的本地机器测试一些 Node.js 代码,以便在 AWS Lambda 函数中使用。这涉及使用签名版本 4 签署请求。

我已使用 AWS CLI 使用我的访问密钥登录,但是当我尝试使用以下代码发出请求时,我在 signer.addAuthorization 收到此错误。我错过了哪一步?它在 Lambda 函数中运行良好。

代码:

const AWS = require('aws-sdk');
const creds = new AWS.EnvironmentCredentials('AWS');
...
var signer = new AWS.Signers.V4(req, 'es');
signer.addAuthorization(creds, new Date());

错误:

TypeError [ERR_INVALID_ARG_TYPE]: The "key" argument must be one of type string, TypedArray, or DataView. Received type undefined
    at new Hmac

【问题讨论】:

    标签: amazon-web-services aws-cli


    【解决方案1】:

    根据documentation of EnvironmentCredentials

    默认情况下,该类将查找以给定 envPrefix 为前缀的匹配环境变量

    因此,您需要在调用代码之前设置AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN 环境变量。

    在 AWS Lambda 环境中,这些环境变量已经设置,这就是它起作用的原因。

    【讨论】:

      猜你喜欢
      • 2017-08-09
      • 2023-02-01
      • 2016-10-11
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      相关资源
      最近更新 更多