我有一个用于亚马逊Echo的技能。lambda函数是用C#.Net Core编写的,并托管在AWS上。我现在需要用使用PuppeteerSharp的功能来扩展它。我的第一个问题是,它下载chromium,并默认将其放在你的应用程序的目录中。这给了我一个错误,因为文件系统是只读的。然后我试着用HeadlessChromium.Puppeteer.Lambda.Dotnet包,但我的技能太大,无法作为lambda函数上传,因为它现在已经嵌入了chromium。
我现在尝试使用BrowserFetchOption覆盖默认的Puppeteer下载路径。这让我可以将AWS上的chromium下载到系统临时路径,但Puppeteer却找不到它。当我试图启动puppeteer时,我需要将ExecutablePath添加到LaunchOptions对象中。我已经在windows下进行了本地测试,它可以工作,我现在只需要写一些通用代码来寻找AWS下的chromium可执行文件。
下面是目前工作的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
});