Python canary 스크립트 작성
이 스크립트는 성공적인 실행으로 전달되고 문자열을 반환합니다. 실패한 canary가 어떻게 보이는지 확인하려면 fail = False를 fail = True로 변경합니다.
def basic_custom_script(): # Insert your code here # Perform multi-step pass/fail check # Log decisions made and results to /tmp # Be sure to wait for all your code paths to complete # before returning control back to Synthetics. # In that way, your canary will not finish and report success # before your code has finished executing fail = False if fail: raise Exception("Failed basicCanary check.") return "Successfully completed basicCanary checks." def handler(event, context): return basic_custom_script()
Python canary 파일 패키징
.py 파일이 두 개 이상 있거나 스크립트에 종속 항목이 있는 경우 이들을 모두 단일 ZIP 파일로 번들링할 수 있습니다. syn-python-selenium-1.1
런타임을 사용하는 경우 ZIP 파일은 python
폴더 내에 주요 canary .py 파일을 포함해야 합니다(예: python/my_canary_filename.py
). syn-python-selenium-1.1
이상을 사용하는 경우 다른 폴더를 사용할 수 있습니다(예: python/myFolder/my_canary_filename.py
).
이 ZIP 파일은 필요한 모든 폴더와 파일을 포함해야 하지만, python
폴더의 다른 파일을 포함하지 않아도 됩니다.
스크립트 진입점의 파일 이름 및 함수 이름과 일치하도록 canary의 스크립트 진입점을 my_canary_filename.functionName
으로 설정해야 합니다. syn-python-selenium-1.0
런타임을 사용하는 경우 functionName
은 handler
여야 합니다. syn-python-selenium-1.1
이상을 사용 중인 경우 이 핸들러 이름 제한은 적용되지 않으며 canary를 별도의 폴더에 저장할 수도 있습니다(예: python/myFolder/my_canary_filename.py
). 별도의 폴더에 저장하는 경우 스크립트 진입점에 해당 경로를 지정합니다(예: myFolder/my_canary_filename.functionName
).
기존 Selenium 스크립트를 변경하여 Synthetics canary로 사용
canary로 사용할 기존의 Python 및 Selenium 스크립트를 빠르게 수정할 수 있습니다. Selenium에 대한 자세한 내용은 www.selenium.dev/
이 예에서는 다음 Selenium 스크립트로 시작합니다.
from selenium import webdriver def basic_selenium_script(): browser = webdriver.Chrome() browser.get('https://example.com') browser.save_screenshot('loaded.png') basic_selenium_script()
변환 단계는 다음과 같습니다.
canary로 사용할 Selenium 스크립트를 변환하려면
다음과 같이
aws_synthetics
모듈의 Selenium을 사용하도록import
문을 변경합니다.from aws_synthetics.selenium import synthetics_webdriver as webdriver
aws_synthetics
의 Selenium 모듈은 canary가 지표 및 로그를 내보내고 HAR 파일을 생성하며 다른 CloudWatch Synthetics 기능과 함께 작동할 수 있도록 합니다.핸들러 함수를 생성하고 Selenium 메서드를 호출합니다. 핸들러는 스크립트의 진입점 함수입니다.
syn-python-selenium-1.0
을 사용하는 경우 핸들러 함수의 이름을handler
로 지정해야 합니다.syn-python-selenium-1.1
이상을 사용하는 경우 함수 이름은 맘대로 지정할 수 있지만 스크립트에서 사용되는 이름과 같아야 합니다. 또한syn-python-selenium-1.1
이상을 사용하는 경우 스크립트를 아무 폴더 아래에 저장하고 해당 폴더를 핸들러 이름의 일부로 지정할 수 있습니다.def handler(event, context): basic_selenium_script()
이제 스크립트가 CloudWatch Synthetics canary로 업데이트되었습니다. 다음은 업데이트된 스크립트입니다.
webdriver
는 SyntheticsWebDriver 클래스의 인스턴스이고, webdriver.Chrome()
에서 반환하는 브라우저는 SyntheticsBrowser의 인스턴스입니다.
from aws_synthetics.selenium import synthetics_webdriver as webdriver def basic_selenium_script(): browser = webdriver.Chrome() browser.get('https://example.com') browser.save_screenshot('loaded.png') def handler(event, context): basic_selenium_script()
비표준 인증서를 인증하도록 기존 Puppeteer Synthetics 스크립트 변경
Synthetics canary의 중요한 사용 사례 중 하나는 자체 엔드포인트를 모니터링하는 것입니다. 외부 트래픽을 수용할 준비가 되지 않은 엔드포인트를 모니터링하려는 경우 이러한 모니터링으로 인해 신뢰할 수 있는 타사 인증 기관에서 서명한 적절한 인증서가 없는 경우가 있을 수 있습니다.
이 시나리오에 대해 다음과 같이 두 가지 해결 방법이 있습니다.
클라이언트 인증서를 인증하려면 Amazon CloudWatch Synthetics를 사용하여 인증을 검증하는 방법-2부
를 참조하십시오. 자체 서명된 인증서를 인증하려면 Amazon CloudWatch Synthetics에서 자체 서명된 인증서를 사용하여 인증을 검증하는 방법
을 참조하십시오.
CloudWatch Synthetics canary를 사용할 때는 이 두 가지 옵션에만 국한되지 않습니다. canary 코드를 확장하여 이러한 특성을 확장하고 비즈니스 로직을 추가할 수 있습니다.
참고
Python 런타임에서 실행되는 Synthetics canary는 기본적으로 --ignore-certificate-errors
플래그가 활성화되어 있으므로 이러한 canary는 비표준 인증서 구성을 가진 사이트에 도달하는 데 문제가 없어야 합니다.