aws lambda函数chromedriver不可执行

问题描述:

我一直坚持这个错误"Caused by: java.lang.IllegalStateException: The driver is not executable: /var/task/chromedriver" 当我将我的jar项目部署到aws lambda函数。该项目在我的本地机器上正常工作,但似乎由于某种原因,aws无法执行chromedriver。 我的chromedriver文件被放置在资源文件夹中。aws lambda函数chromedriver不可执行

以下是我的测试配置文件:

@Configuration 
public class TestConfig { 

    private static final Logger l = LoggerFactory.getLogger(TestConfig.class); 

    private String chromeDriver = org.apache.commons.lang.SystemUtils.IS_OS_WINDOWS ? "chromedriver.exe" : "chromedriver" ; 

    public WebDriver getDriver(){ 
     URL resource = getClass().getClassLoader().getResource(chromeDriver); 
     String chromePath = null; 
     try { 
      chromePath = Paths.get(resource.toURI()).toString(); 
     } catch (URISyntaxException e) { 
      l.info("cannot find chromedriver in resources"); 
     } 
     System.setProperty("webdriver.chrome.driver", chromePath); 
     return new ChromeDriver(); 
    } 
} 

我都chromedriver和chromedriver.exe,我尝试了和chmod 777文件,但没有成功。

+0

我不认为'chmod'会在创建zip文件之前做到这一点 - 在zip文件中没有(afaik)结构来存储权限。在本地解压zip文件来检查。也许你可以首先标记文件可执行文件[使用Java](https://*.com/a/43859098/1695906)? –

+0

在lambda函数本身内部调用chmod。我将作为独立的jar部署到lambda函数中,而不是使用zip。我也尝试用链接和setPosixFilePermissions来标记它,但仍然出现这个错误。 –

+0

另一个想法是:从[构建Lambda环境的基本映像]创建服务器(http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html)并验证这在这样的机器上按预期运行。 –

Lambda的限制为300秒,内存限制为1536MB。

这是一个非常糟糕的方法,您可以尝试在您的lambda函数中启动一个chromedriver。你应该做的是建立一个Selenium网格,然后使用RemoteWebDriver在远程机器上启动Chrome浏览器