You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地开发中安装AWS Synthetics Canaries的aws_synthetics.selenium包?

AWS CloudWatch Synthetics本地开发导入问题解决方案

核心说明

aws_synthetics.selenium模块是AWS CloudWatch Synthetics Canaries运行时环境专属内置的依赖,并没有发布到PyPI,无法通过pip直接安装。它和AWS CDK的aws_cdk.aws_synthetics完全不是同一类包——后者是用于部署Canary基础设施的CDK构造库,和运行时代码依赖无关。

实现本地直接导入的两种方案

方案1:创建本地模拟包结构

在你的项目根目录手动创建以下目录和文件,模拟AWS的模块结构:

  1. 创建aws_synthetics目录,里面新建空的__init__.py文件
  2. 在aws_synthetics下创建selenium目录,里面新建__init__.py文件,写入以下代码:
# 模拟Synthetics的webdriver,实际调用本地selenium
from selenium import webdriver as _webdriver
synthetics_webdriver = _webdriver

# 模拟Synthetics日志工具
import logging
synthetics_logger = logging.getLogger("aws_synthetics")

完成后,本地代码就能直接使用from aws_synthetics.selenium import synthetics_webdriver as webdriver的导入语句,无需环境判断。

方案2:使用mock动态注入模块

在本地运行/测试代码的入口处,用unittest.mock动态模拟aws_synthetics模块:

import sys
from unittest.mock import MagicMock
from selenium import webdriver
import logging

# 构建模拟模块
mock_aws_synthetics = MagicMock()
mock_aws_synthetics.selenium.synthetics_webdriver = webdriver
mock_aws_synthetics.selenium.synthetics_logger = logging.getLogger("aws_synthetics")

# 注入到系统模块列表
sys.modules["aws_synthetics"] = mock_aws_synthetics
sys.modules["aws_synthetics.selenium"] = mock_aws_synthetics.selenium

# 现在可以直接导入
from aws_synthetics.selenium import synthetics_webdriver as webdriver

注意事项

以上模拟仅保证导入正常和基础功能运行,Synthetics运行时专属的特殊API(比如运行状态上报、特定日志格式处理)在本地环境无法直接使用,若用到这类功能需要额外编写模拟逻辑。

内容的提问来源于stack exchange,提问作者Aleksander Fidelus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:21:02