/blog/*

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: