在AWS Lambda函数中使用PuppeteerSharp

时间:2019-08-23 17:08:52

标签: c# aws-lambda puppeteer alexa puppeteer-sharp

我对Amazon Echo有技巧。 lambda函数是用C#/。Net Core编写的,并托管在AWS上。现在,我需要使用PuppeteerSharp的功能对其进行扩展。我的第一个问题是,它会下载Chrome,并默认将其放入应用程序的目录中。这给了我一个错误,因为文件系统是只读的。然后,我尝试了HeadlessChromium.Puppeteer.Lambda.Dotnet程序包,但是我得到的技巧太大,无法作为lambda函数上传,因为它现在已嵌入铬。

我现在正尝试使用BrowserFetchOption覆盖默认的伪造者下载路径。这使我可以将AWS上的Chrome下载到系统临时路径,但是Puppeteer找不到它。尝试启动操纵up时,需要将ExecutablePath添加到LaunchOptions对象。我已经在Windows下在本地对其进行了测试,并且可以正常工作,现在我只需要编写一些通用代码即可在AWS下找到Chrome可执行文件。

  1. 是否有比在我的下载路径下搜索chrome或chrome.exe更好的方法(我需要它在Windows以及AWS上运行以进行单元测试)?感觉如果Puppeteer提供了这对选项,那么必须有更好的方法来使用它们吗?
  2. 在lambda函数中,有没有比我尝试的方法更好的方法来使用Puppeteer?

以下是当前正在运行的Windows代码,其中包含chrome路径的硬编码:

            string cpath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "chromium");

            var bfopt = new BrowserFetcherOptions() { Path = cpath };

            await new BrowserFetcher(bfopt).DownloadAsync(BrowserFetcher.DefaultRevision);

            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { 
                ExecutablePath=System.IO.Path.Combine(cpath, "Win64-674921\\chrome-win\\chrome.exe"),
                Headless = true
            });

0 个答案:

没有答案