【问题标题】:AWS kms.generateRandom in a lambda function does not worklambda 函数中的 AWS kms.generateRandom 不起作用
【发布时间】:2019-10-25 10:42:07
【问题描述】:

我正在尝试使用 kms.generateRandom 在 lambda 中生成随机密钥。 我尝试了文档中提到的示例,但它没有返回任何内容。 没有错误没有数据。 有人用过吗?我是否必须授予对我的 lambda 的任何访问权限? 下面是我正在尝试的代码

/* The following example uses AWS KMS to generate 32 bytes of random data. */

 var params = {
  NumberOfBytes: 32// The length of the random data, specified in number of bytes.
 };
 kms.generateRandom(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
   /*
   data = {
    Plaintext: <Binary String>// The random data.
   }
   */
 });

【问题讨论】:

  • 您发布的代码中没有任何内容可以“返回”任何内容。它应该在日志中打印一些东西。 Lambda 函数的日志中显示了什么?
  • 我的意思是控制台不记录任何东西。 cloudWatchLog 中没有任何记录。
  • 如果使用回调,则需要在完成时指定回调。没有控制台被记录是有道理的,因为您的 lambda 函数在执行 generateRandom 时完成

标签: javascript amazon-web-services aws-lambda unique-key aws-kms


【解决方案1】:

改进了以下代码,这有助于我找出访问权限的问题。

let result = await new Promise((resolve, reject) => {
        kms.generateRandom(params, function(err, data) {
            if (err)
            {
                console.log('Error occurred: ' + err, err.stack);
                reject();
            } // an error occurred
            else
            {
                console.log('Data: ' + data);
                resolve(data);
            } // successful response
        });
    });

我已将 IAM 政策更新为具有以下内容:

"Action": [
    "kms:*"
  ],
"Resource": "*"

它返回给我的数据如下: 数据:{“明文”:{“类型”:“缓冲区”,“数据”:[238,80,205,34,52,91,37,158,167,126,109,222,246,0,59,132,116,169,49,35,244,19,146,86,104,72,190,227,89,}16,16 }

将缓冲区转换为字符串的代码如下:

let test = new Buffer.from(data.Plaintext); console.log('buff:' + test.toString('base64'));

【讨论】:

    猜你喜欢
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2020-08-25
    • 2018-08-02
    相关资源
    最近更新 更多