我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用 Amazon CloudWatch Synthetics 和 亚马逊云科技 Systems Manager 参数存储观察动态站点
概述
维护和改善最终用户体验是关键,随着业务的增长,您需要观察的端点数量可能会迅速增加。建造多个加那利群岛来观测它们可能会变得更具挑战性和更耗时。该解决方案旨在展示如何使用一致的自动化方法使用单个金丝雀观测多个端点。
您可以使用 Amazon CloudWatch Synthetics 来创建 Canaries、按计划运行的可配置脚本以及监控您的端点和 API 操作。Canaries 可以模仿用户体验并执行与客户相同的操作,这样即使您的应用程序上没有任何客户流量,也可以持续验证您的客户体验。通过使用加那利,你可以先于客户发现问题。
如果您的金丝雀使用 “syn-nodejs-puppeteer-3.1” 或更高版本的运行时版本,则可以使用
在这篇博客中,我们将引导您完成创建金丝雀的步骤,该金丝雀将从 亚马逊云科技 Systems Manager (SSM) 参数存储库中导入一个包含需要监控的 URL 列表的参数。下面的架构图描述了金丝雀的工作原理。
架构图
图 1。描述解决方案工作流程的架构图
解决方案概述
- 当我们创建金丝雀时,它会在后台创建一个 Lambda 函数。
- 我们正在使用 SSM 参数存储来存储包含我们要监控的所有 URL 的字符串。
- 我们正在创建一个 IAM 角色,该角色具有访问参数存储的适当权限。
- 当金丝雀执行时,lambda 函数从参数存储中获取 URL,然后对所有 URL 执行测试。
草率排练
1。创建 SSM 参数:
2。获取参数的 ARN,以便可以在以下命令中将其用作资源值:
3。创建金丝雀:
-
您现在可以 从 CloudWatch 控制台
创建 Can ary 了。 - 使用行内编辑器粘贴以下脚本代码。
- 运行时版本是 “syn-python-selenium-2.0”。
-
Lambda 处理程序的值为 “.handler”。例如,如果金丝雀被称为 “url”,则 Lambda 处理程序的值为 “url.handler” - 在创建金丝雀时选择 “创建新角色” 选项。
from aws_synthetics.selenium import synthetics_webdriver as syn_webdriver
from aws_synthetics.common import synthetics_logger as logger
import boto3
def main():
ssmParamName='url-list'
client = boto3.client('ssm')
response = client.get_parameter(Name=ssmParamName)
urlList=response['Parameter']['Value'].split(',')
# Set screenshot option
takeScreenshot = True
browser = syn_webdriver.Chrome()
for url in urlList:
browser.get(url)
if takeScreenshot:
browser.save_screenshot("loaded.png")
response_code = syn_webdriver.get_http_response(url)
if not response_code or response_code < 200 or response_code > 299:
raise Exception("Failed to load page!")
logger.info("Canary successfully executed")
def handler(event, context):
# user defined log statements using synthetics_logger
logger.info("Selenium Python heartbeat canary")
return main()
4。创建 json 策略文件 (ssmPolicy.json),此策略将允许 Canary 访问 SSM 参数所需的额外权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ssm:GetParameter",
"Resource": "arn:aws:ssm:<region>:<account-id>:parameter/url-list"
}
]
}
注意:请确保将资源 ARN 字段替换为我们在步骤 [2] 中提取的 ARN,或者替换您在 ex us-east-1 中运营的区域、亚马逊云科技 账号和您创建的 SSM 参数的名称。在上面的示例中,在步骤 [1] 中创建的 SSM 参数被称为 “url-list”。
5。根据我们在步骤 [4] 中创建的策略文档 “ssmPolicy.json” 创建 IAM 策略,并将其附加到新创建的 Canary IAM 角色中:
注意:
成本
-
加那利群岛按次收费。例如,在美国东部地区的每次 Canary 运行向您收取 0.0012 美元的费用。有关定价的更多详细信息可以
在这里 找到 。 - 参数存储:标准参数不收取额外费用。
正在清理
在你完成实验后,为了避免产生额外费用,你可能需要删除作为本文的一部分创建的金丝雀。为此,请按照删除金丝雀
作者简介
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。