最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

执行基于node.js的aws lambda函数时访问被拒绝

运维笔记admin7浏览0评论

执行基于node.js的aws lambda函数时访问被拒绝

执行基于node.js的aws lambda函数时访问被拒绝

我正在为node.js开发一个基于ytdl模块的函数。实际上,我只是想下载一个YouTube视频。当我测试我的功能时,我收到了这个错误:

2017-12-16T17:25:48.627Z 27dbca8d-e286-11e7-9f17-851e6c66e221 Error: spawn EACCES
at exports._errnoException (util.js:1018:11)
at ChildProcess.spawn (internal/child_process.js:319:11)
at exports.spawn (child_process.js:378:9)
at exports.execFile (child_process.js:143:15)
at call (/var/task/node_modules/youtube-dl/lib/youtube-dl.js:163:5)
at Function.getInfo (/var/task/node_modules/youtube-dl/lib/youtube-dl.js:285:5)
at module.exports (/var/task/node_modules/youtube-dl/lib/youtube-dl.js:107:10)
at exports.handler (/var/task/index.js:6:14)

在一些谷歌搜索请求后,我发现它与访问问题有关。但是,我的代码没有需要访问权限的特殊操作。你能帮忙吗?

var path = require('path');
var fs = require('fs');
var ytdl = require('./node_modules/youtube-dl');
exports.handler = (event, context, callback) => {

    var video = ytdl('',
            // Optional arguments passed to youtube-dl.
            ['-o', '/tmp/test.mp4']);


        var size = 0;
        video.on('info', function(info) {
            'use strict';
            size = info.size;

            console.log('Got video info');
            var file = path.join(__dirname, info._filename);
            video.pipe(fs.createWriteStream(file));

        });

        var pos = 0;
        video.on('data', function data(chunk) {
            'use strict';
            pos += chunk.length;

            // `size` should not be 0 here.
            if (size) {
                var percent = (pos / size * 100).toFixed(2);
                process.stdout.cursorTo(0);
                process.stdout.clearLine(1);
                process.stdout.write(percent + '%');
            }
        });

        video.on('end', function end() {
            'use strict';
            console.log('\nDone');
        });


callback(null, 'Hello from Lambda');

};
回答如下:

node-ytdl使用预编译的二进制文件,因此您应该从与目标相同的OS / arch部署lambda。

或者使用纯javascript模块:

如果您只对从youtube下载感兴趣,则应考虑使用纯Javascript youtube下载模块。 => https://github/fent/node-ytdl

来源:https://www.npmjs/package/youtube-dl

发布评论

评论列表(0)

  1. 暂无评论