Deploy Puppeteer di Elastic Beanstalk
Puppeteer merupakan node library yang menyediakan API untuk mengontrol chrome
atau chromium
diatas protokol DevTools. Puppeteer membutuhkan browser chrome
atau chromium
untuk dapat berjalan. Masalah utama ketika menjalankan Puppeteer di Elastic Beanstalk adalah chrome
tidak include secara default, jadi kita harus install secara manual.
Mengakses Elastic Beanstalk
Untuk dapat mengakses instance Elastic Beanstalk melalui EB CLI, kita harus konfigurasi SSH terlebih dahulu.
eb ssh --setup
Konfigurasi SSH membutuhkan key pairs
sebagai credential, untuk mendapatkannya silahkan lihat di sini.
Install Chrome pada Elastic Beanstalk
Setelah terhubung dengan Elastic Beanstalk, kita bisa install secara chrome
secara manual melalui CLI:
curl https://intoli.com/install-google-chrome.sh | bash
Perintah diatas akan menjalankan script instalasi chrome pada Elastic Beanstalk. Setelah berhasil terinstall, langkah terakhir adalah mengganti pengaturan default Puppeteer untuk mengakses chrome
yang barusan kita install.
// puppeteer
const browser = await puppeteer.launch({
executablePath: '/usr/bin/google-chrome-stable',
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
// puppeteer-cluster
const cluster = await Cluster.launch({
concurrency: Cluster.CONCURRENCY_CONTEXT,
maxConcurrency: 2,
puppeteerOptions: { // ONLY FOR AWS ENVIRONMENT
executablePath: '/usr/bin/google-chrome-stable',
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox']
}
});
ref: