簡體   English   中英

從 S3 下載 JavaScript 文件執行 function 而不在磁盤上創建本地文件

[英]Execute function from S3 downloaded JavaScript file without creating a local file on disk

假設我們從S3下載以下腳本:

const sum_two = (a, b) => {
    return a + b;
}

使用這個下載:

async function downloadFileS3(filenameDownload) {
    const AWS = require('aws-sdk');
    const fs = require('fs');

    AWS.config.update(
        {
            accessKeyId: "XXXXXXXXXXXXXXXXXXXXXXXX",
            secretAccessKey: "YYYYYYYYYYYYYYYYYYYYY",
            correctClockSkew: true,
        }
    );

    const params = {
        Bucket: 'ZZZZZZZZZZZZZZZZZZZZZZZZ',
        Key: filenameDownload,
    }

    const s3 = new AWS.S3();
    try {
        const data = await s3.getObject(params).promise();
        if (data) {
            // do something with data.Body      
            const downloaded = data.Body.toString('utf-8');
            // grab sum_two from "downloaded" and use below 
            
            .......
            .......
            .......
        }
    }
    catch (error) {
        console.log(error);
    }

}

我們如何在不創建本地文件的情況下從downloaded的文件中提取sum_two (並在之后使用它)?

意思是我不想使用下面的代碼!!!

// fs.writeFile(`${filenameDownload}`, downloaded, function (err) {
//    if (err) {
//         console.log('Failed to create file', err);
//    }
// console.log(sum_two(.... , ....));
// });

您可以為此使用 node.js 本機vm模塊。

從下載的代碼創建Script

在當前上下文中運行它

之后下載的 function 就可以使用了:

const vm = require('vm');

// ...

const downloaded = data.Body.toString('utf-8');
const script = new vm.Script(downloaded);
script.runInThisContext()
console.log(sum_two(1,2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM