首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从GCF函数下载文件

问从GCF函数下载文件
EN

Stack Overflow用户
提问于 2020-11-20 15:23:57
回答 1查看 199关注 0票数 0

我在本地机器上使用puppeteer运行NodeJS脚本,以便从互联网上下载一些资源。我想让这个脚本作为Google Cloud function运行。

我只想知道,是否有任何与GFC相关的本地空间,我们可以在其中保存此文件并可在以后访问,或者我们是否可以指定任何云存储存储桶URL,以保存此下载。

代码语言:javascript
复制
#!/usr/bin/env node

const { program } = require('commander');
const puppeteer = require('puppeteer');

program
    .option('-e, --email <email>', 'Login Email Address', process.env.LOOKER_EMAIL || '')
    .option('-p, --password <password>', 'Login Password', process.env.LOOKER_PASSWORD || '')
    .option('-d, --dashboard <id>', 'Dashboard To Download');
program.parse(process.argv);

const fs = require('fs');
const basePath = 'C:\\card\\'

(async () => {

    const loginEmail = program.email;
    const loginPassword = program.password;
    const dashboardId = program.dashboard;

    // used puppeteer to download some files

    const browser = await puppeteer.launch({
        headless: true
    })

    let pages = await browser.pages();
    const page = await browser.newPage();

    await page.setViewport({ width: 1920, height: 1080 });
    await page.goto(loginUrl);
    await page.waitForSelector(loginEmailSelector);
    await page.type(loginEmailSelector, loginEmail);
    await page.type(loginPasswordSelector, loginPassword);
    await Promise.all([
        page.waitForNavigation(),
        page.click(loginButtonSelector)
    ]);

    await page.goto(`https://somewebsite/${dashboardId}`);
    await page.waitForSelector(menuSelector, {
        visible: true
    });
    await page.click(menuSelector);
    await page.waitForSelector(downloadSelector, {
        visible: true
    });


    const ts = Date.now()
    const downloadLoc = basePath + ts + '\\'
    console.log('downloadLoc ', downloadLoc)
    await page._client.send('Page.setDownloadBehavior', {
        behavior: 'allow',
        downloadPath: downloadLoc 
    })
    console.log(`your file's on the way!`)


})();

所以在这里的脚本,我只是下载的文件在C驱动器,我希望这存储在一些云存储,如果可能的话,请让我知道如果你有任何建议。

EN

回答 1

Stack Overflow用户

发布于 2020-11-20 19:46:49

云函数的概念假设代码应该是无状态的,这意味着任何数据都应该存储在外部,虽然有可能使用/tmp目录,但这只是暂时的目的。推荐使用云硬盘(reference)。

然而,不仅仅是云存储可以用来保持状态。对于二进制对象,即文件,这将是最好的。

另一方面,如果这些文件包含数据,您可以尝试选择谷歌NoSQL数据库之一,如Firestore、Datastore (实际上是数据存储模式下的Firestore )和Firebase Realtime database。所有这些应用程序接口都适用于多种语言,当然也包括node.js。此外,如果您计划创建更大的解决方案,甚至可以使用BigTable处理海量数据,如果您需要分析,甚至可以使用BigQuery。所有这些都取决于你需要什么。

在上面提到的Google API中,非常好和非常方便的是,在云函数中,不需要对特定的产品进行身份验证,从而节省了大量的代码和资源。所有解决方案都是无服务器的,因此您不必关心底层服务器以及解决方案增长时的可扩展性。此外,当您在GCP中执行此操作时,您可以在资源之间获得极快的网络速度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64925368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档