Ansible로 AWS에서 Google 크롬을 헤드리스 실행 가능한 환경 자동 구축

소개



요 전날 어쩌면 서버에서 Google 크롬을 헤드리스 실행하고,
스크린샷을 찍고 싶은 수요가 있었기 때문에,
AWS EC2에 Google 크롬을 헤드리스 실행 가능한 환경을 구축했습니다.

그 때에 곧바로 환경을 재현할 수 있도록 Ansible의 Playbook을 작성했으므로 Github에서 공개합니다.

3행 정리


  • Selenium에서 Google 크롬을 헤드리스 실행하여 스크린 샷을 찍고 싶습니다
  • AWS EC2의 OpenSUSE 및 Python3 + Selenium + chromedriver 사용
  • 이 환경을 EC2 인스턴스 생성에서 Ansible로 구축



  • 전제


  • ansible, boto 설치
  • AWS 서버 구축에 사용할 IAM 사용자가 생성되었습니다
  • AWS Management Console에서 키 쌍을 등록했습니다

  • 무엇을 구축하는가



    다음 내용을 Ansible로 자동 구축합니다.
  • AWS 환경
  • VPC 만들기
  • Internet Gateway 만들기
  • 서브넷 만들기
  • 루트 테이블 만들기
  • 보안 그룹 만들기
  • EC2 인스턴스 만들기

  • 애플리케이션
  • Zypper 패키지 (python3, 일본어 글꼴 등) 설치
  • Google 크롬 설치
  • python-selenium 설치
  • chromedriver 다운로드
  • 동작 확인을위한 샘플 소스 배치


  • 환경 구축의 방법은 이쪽의 기사를 참고로 했습니다.
  • EC2 우분투에서 Google 크롬을 헤드리스 실행하여 스크린 샷을 수집하는 단계

  • Ansible에서 AWS 환경을 구축하는 내용은 과거 기사를 참조하십시오.
  • Ansible로 AWS 환경 자동 구축

  • 무엇을 할 수 있을까



    python3의 selenium을 사용하여 Google 크롬을 헤드리스 실행할 수 있습니다.

    예를 들어 아래 샘플 소스를 실행하여 서버에서 Google 검색한 결과의 스크린샷을 찍을 수 있습니다.
    조금 selenium을 꽉 실행하기위한 서버 세우고 싶었을 때 명령 한 번으로 환경 구축할 수 있습니다.

    sample.py
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument('--headless')
    
    driver = webdriver.Chrome('chromedriver', chrome_options=options)
    
    driver.get('https://www.google.co.jp/search?q=chrome')
    driver.save_screenshot('screenshot.png')
    driver.quit()
    

    좋은 웹페이지 즐겨찾기