Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何从本地计算机执行AWS签名版本4?_Amazon Web Services_Aws Cli - Fatal编程技术网

Amazon web services 如何从本地计算机执行AWS签名版本4?

Amazon web services 如何从本地计算机执行AWS签名版本4?,amazon-web-services,aws-cli,Amazon Web Services,Aws Cli,我正在尝试测试本地机器上的Node.js代码,以便在AWS Lambda函数中使用。这涉及使用签名版本4对请求进行签名 我已使用AWS CLI使用访问密钥登录,但当我尝试使用以下代码发出请求时,我在signer.addAuthorization处收到此错误。我错过了哪一步?它可以通过Lambda函数正常工作 代码: const AWS = require('aws-sdk'); const creds = new AWS.EnvironmentCredentials('AWS'); ... va

我正在尝试测试本地机器上的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
错误:

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
据报道,

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

因此,在调用代码之前,需要设置
AWS\u ACCESS\u KEY\u ID
AWS\u SECRET\u ACCESS\u KEY
AWS\u SESSION\u TOKEN
环境变量

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