小编Hom*_*mer的帖子

AWS Lambda:处理程序外部的异步调用(初始化部分,调用 lambda)

我想通过以下代码在 lambda 处理程序之外调用异步函数:

var client;
(async () => {
    var result =  await initSecrets("MyWebApi");
    var secret = JSON.parse(result.Payload);
    client= new MyWebApiClient(secret.API_KEY, secret.API_SECRET); 
});

async function initSecrets(secretName) {
    var input = {
    "secretName" : secretName
    };
    var result = await lambda.invoke({
       FunctionName: 'getSecrets',
       InvocationType: "RequestResponse",
       Payload: JSON.stringify(input)
    }).promise();
    return result;
}

exports.handler = async function (event, context) {

    var myReq = await client('Request');
    console.log(myReq);
};
Run Code Online (Sandbox Code Playgroud)

“客户端”未初始化。如果在处理程序中执行,相同的代码可以完美运行。initSecrets 包含 getSecrets() 的 lambda 调用,它调用 AWS SecretsManager 有谁知道如何在处理程序外部正确调用异步函数以进行初始化?

非常感谢您的支持。

asynchronous initialization async-await aws-lambda aws-secrets-manager

10
推荐指数
1
解决办法
2217
查看次数

如何在异步函数中创建 AWS S3 对象的读取流?

如何在异步函数中创建 AWS S3 对象的读取流?

如果我尝试

exports.handler = async (event) => {
  var csvreadstream = await s3.getObject({ Bucket: bucket, Key: filename }).promise().createReadStream()
}
Run Code Online (Sandbox Code Playgroud)

或者

exports.handler = async (event) => {
  var s3Object = await s3.getObject({ Bucket: bucket, Key: filename }).promise();
  var csvreadstream = s3Object.createReadStream();
}
Run Code Online (Sandbox Code Playgroud)

我明白了

{
  "errorType": "TypeError",
  "errorMessage": "(intermediate value).createReadStream is not a function",
  "trace": [
    "TypeError: (intermediate value).createReadStream is not a function",
    "    at Runtime.exports.handler (/var/task/app.js:29:86)",
    "    at processTicksAndRejections (internal/process/task_queues.js:94:5)"
  ]
}
Run Code Online (Sandbox Code Playgroud)

谁能建议如何以异步(异步/等待方式)函数从 S3 对象创建读取流?谢谢你!

感谢 Mark BI,我又向前迈进了一步: …

amazon-s3 amazon-web-services node.js async-await aws-lambda

2
推荐指数
1
解决办法
1万
查看次数