AWS Lambda で Websocket を使用すると、Websocket URL タイムアウト エラーが発生することがあります。この問題により、Websocket への接続を確立または維持できなくなり、アプリケーションの通常の動作に影響が出る可能性があります。この記事では、この問題の原因と解決策を紹介し、開発者が Websocket URL タイムアウト エラーを解決し、アプリケーションの安定性と信頼性を確保できるように支援します。初心者も経験豊富な開発者も、この記事から AWS Lambda と Websocket に関する貴重な情報を得ることができます。
Go言語を使用してaws lambdaを開発しています。 chromedp と docker イメージを使用して go lang コードをデプロイしていますが、WebSocket URL タイムアウト エラーが発生します。私のラムダは、3008 MB の RAM メモリ、512 MB のストレージ、15 分のタイムアウトに設定されています。問題とその解決方法を特定できますか?ファイル main.go
と dockerfile
ファイル main.go
(chromedp 部分)
ファイル dockerfile
func getpage(url string, linenum string, stationnm string) { // settings for crawling ctx, cancle := chromedp.newcontext( context.background(), chromedp.withlogf(log.printf), ) defer cancle() opts := []chromedp.execallocatoroption{ chromedp.disablegpu, chromedp.nosandbox, chromedp.headless, chromedp.flag("no-zygote", true), chromedp.flag("single-process", true), chromedp.flag("homedir", "/tmp"), chromedp.flag("data-path", "/tmp/data-path"), chromedp.flag("disk-cache-dir", "/tmp/cache-dir"), chromedp.flag("remote-debugging-port", "9222"), chromedp.flag("remote-debugging-address", "0.0.0.0"), chromedp.flag("disable-dev-shm-usage", true), } allocctx, cancel := chromedp.newexecallocator(ctx, opts...) defer cancel() ctx, cancel = chromedp.newcontext(allocctx, chromedp.withlogf(log.printf)) defer cancel() var htmlcontent string ch := chromedp.waitnewtarget(ctx, func(i *target.info) bool { return strings.contains(i.url, "/timetable/web/") }) }
chromedp/headless-shell は小さく、AWS Lambda により適しているため、使用することをお勧めします。
chromedp/headless-shell を使用して簡単なデモをテストしましたが、動作しました。
ドッカーファイル: リーリー
main.go: リーリー
この例は、https://github.com/andiedie/chromedp-aws-lambda-example に基づいています。リストされている chromedp.execallocatoroption は、このリポジトリから直接コピーされていることに注意してください。それは機能しますが、これが最適なオプションのリストであるかどうかはわかりません。必要に応じて調整する必要があるかもしれません。
以上がAWS Lambda で WebSocket URL タイムアウトに達したエラーが発生するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。