Escrever um script o canário do Python - Amazon CloudWatch

Escrever um script o canário do Python

Esse script é executado com êxito e retorna uma string. Para ver como é um canário com falha, altere fail = False to 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()

Empacotamento dos arquivos do canário para Python

Se você tiver mais de um arquivo .py ou se o script tiver uma dependência, será possível agrupá-los em um único arquivo ZIP. Se você usar o runtime syn-python-selenium-1.1, o arquivo ZIP deverá conter o arquivo .py canário principal dentro de uma pasta python, como python/my_canary_filename.py. Se você usar syn-python-selenium-1.1 ou posterior, poderá usar uma pasta diferente, como python/myFolder/my_canary_filename.py.

Este arquivo ZIP deverá conter todas as pastas e arquivos necessários, mas os outros arquivos não precisam estar na pasta python.

Defina o ponto de entrada do script o canário como my_canary_filename.functionName para corresponder ao nome do arquivo e ao nome da função do ponto de entrada do script. Se você estiver usando o runtime syn-python-selenium-1.0, functionName deverá ser handler. Se estiver usando syn-python-selenium-1.1 ou posterior, essa restrição de nome do manipulador não se aplicará, e você também poderá, opcionalmente, armazenar o canário em uma pasta separada, como python/myFolder/my_canary_filename.py. Se você armazenar em uma pasta separada, especifique esse caminho no ponto de entrada do script, como myFolder/my_canary_filename.functionName.

Alterar um script existente do Selenium para ser usado como canário do Synthetics

É possível modificar rapidamente um script existente para Python e Selenium a ser usado como canário. Para obter mais informações sobre o Selenium, consulte www.selenium.dev/

Neste exemplo, começaremos com o seguinte script 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()

As etapas de conversão são as seguintes.

Para converter um script Selenium para ser usado como canário
  1. Altere a instrução import para usar o Selenium a partir do módulo aws_synthetics:

    from aws_synthetics.selenium import synthetics_webdriver as webdriver

    O módulo Selenium a partir de aws_synthetics garante que o canário poderá emitir métricas e logs, gerar um arquivo HAR e trabalhar com outros recursos do CloudWatch Synthetics.

  2. Crie uma função de manipulador e chame seu método Selenium. O manipulador é a função de ponto de entrada para o script.

    Se estiver usando syn-python-selenium-1.0, a função do manipulador deverá ser nomeada handler. Se estiver usando syn-python-selenium-1.1 ou posterior, a função poderá ter qualquer nome, mas deverá ser o mesmo nome usado no script. Além disso, se você estiver usando syn-python-selenium-1.1 ou posterior, poderá armazenar scripts em qualquer pasta e especificar essa pasta como parte do nome do manipulador.

    def handler(event, context): basic_selenium_script()

Agora, o script é atualizado para ser um canário do CloudWatch Synthetics. Veja a seguir o script atualizado:

O webdriver é uma instância da classe SyntheticsWebDriver e o navegador retornado por webdriver.Chrome() é uma instância de 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()

Como alterar um script existente do Puppeteer Synthetics para autenticar certificados não padrão

Um caso de uso importante dos canários Synthetics é monitorar seus próprios endpoints. Se você quiser monitorar um endpoint que não esteja pronto para tráfego externo, esse monitoramento poderá, às vezes, significar que você não tenha um certificado adequado assinado por uma autoridade de certificação terceirizada confiável.

Duas soluções possíveis para esse cenário são as seguintes:

Você não está limitado a essas duas opções ao usar os canários CloudWatch Synthetics. Você pode estender esses recursos e adicionar sua lógica de negócios estendendo o código canário.

nota

Os canários Synthetics executados em runtimes do Python têm o sinalizador --ignore-certificate-errors habilitado de forma inata, portanto, esses canários não devem ter problemas para acessar sites com configurações de certificado não padrão.