2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

パーソンリンク アドベントカレンダーAdvent Calendar 2021

Day 3

CloudWatch Syntheticsでシステム監視する

Last updated at Posted at 2021-12-02

パーソンリンク アドベントカレンダー 3日目です🎉
案件で外部監視のために調査したAWSの機能紹介をします。

概要

CloudWatch Syntheticsとは、CloudWatchの機能の一つで外部監査を実現するサービスです。
外部監視とは外部から見た接続状況の監視です。

CloudWatch Syntheticsを利用するためにまずCanaryを作成します。
Canaryとはスケジュールに沿って実行されるスクリプトであり、実態はLambdaレイヤです。
Canaryの設計図にGUIワークフロービルダーを選ぶと、フォーム形式で検証するためのアクションを指定できます。
要素のクリックや存在確認などを行えるため、死活監視だけでなく簡単なE2Eテストもできます。
セレクタはXpath指定です。

スクリーンショット 2021-11-19 14.10.14.png

上記アクションをそれぞれ指定した際のPythonのスクリプトです。
customer_actions_1などの関数が、フォームで指定したアクションになります。

import asyncio
from aws_synthetics.selenium import synthetics_webdriver as syn_webdriver
from aws_synthetics.common import synthetics_logger as logger, synthetics_configuration

TIMEOUT = 10

async def main():
    url = "https://example.com"
    browser = syn_webdriver.Chrome()


    # Set synthetics configuration
    synthetics_configuration.set_config({
       "screenshot_on_step_start" : True,
       "screenshot_on_step_success": True,
       "screenshot_on_step_failure": True
    });


    # ページがロードできることを確認する
    def navigate_to_page():
        browser.implicitly_wait(TIMEOUT)
        browser.get(url)

    await syn_webdriver.execute_step("navigateToUrl", navigate_to_page)


    # Execute customer steps
    # ページ内の要素をクリックする
    def customer_actions_1():
        browser.find_element_by_xpath("//h1[@id='success']").click()

    await syn_webdriver.execute_step('click', customer_actions_1)


    # 要素が存在することを確認する
    def customer_actions_2():
        browser.find_element_by_xpath("//h1[@id='success']")

    await syn_webdriver.execute_step('verifySelector', customer_actions_2)


    # ターゲット要素内の文字列を確認する
    def customer_actions_3():
        browser.find_element_by_xpath("//h1[@id='success'][contains(text(),'sample text')]")

    await syn_webdriver.execute_step('verifyText', customer_actions_3)


    # ターゲット要素にテキストを入力する
    def customer_actions_4():
        browser.find_element_by_xpath("//h1[@id='success']").send_keys("sample text")

    await syn_webdriver.execute_step('input', customer_actions_4)


    # 要素をクリックしてナビゲーションを期待する
    def customer_actions_5():
        browser.find_element_by_xpath("//h1[@id='success']").click()

    await syn_webdriver.execute_step('redirection', customer_actions_5)


    logger.info("Canary successfully executed")


async def handler(event, context):
    # user defined log statements using synthetics_logger
    logger.info("Selenium Python workflow canary")
    return await main()

確認

可用性 > Step のタブで実行結果が確認できます。

スクリーンショット 2021-11-19 16.04.08のコピー.png

削除

検証用などで消す場合、Canaryによって作成された関連リソースは自動的に削除されないので、以下も削除する必要があります。

・Lambda関数とレイヤー
・CloudWatchアラーム
・CloudWatchLogsのロググループ
・AmazonS3オブジェクトとバケット
・IAMロール

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?