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

Artillery结合AWS Lambda在eu-west-1区域超时问题求助

Artillery + AWS Lambda (eu-west-1) 超时问题排查与解决

问题概述

我是Artillery新手,已安装nvs及Node.js 20.2.0版本,使用最新版Artillery。在结合AWS Lambda运行性能测试时,eu-west-1区域触发超时错误。执行Artillery的AWS Lambda命令时出错,但Artillery生成的zip包已成功上传至S3存储桶。

错误日志

λ Creating AWS Lambda function...  
- Bundling test data
  - acFamily.yml
- Installing dependencies
- Installing extra engines & plugins: artillery-plugin-http-ssl, artillery-engine-lambda
- Creating zip package
Preparing AWS environment...
- C:\ProgramData\nvs\node_modules\artillery\node_modules\aws-sdk\lib\http\node.js:87
      errCallback(AWS.util.error(new Error(msg), {code: 'TimeoutError'}));
                             ^

Error [TimeoutError]: Connection timed out after 120000ms

at ClientRequest. (C:\ProgramData\nvs\node_modules\artillery\node_modules\aws-sdk\lib\http\node.js:87:34)
at Object.onceWrapper (node:events:625:28)
at ClientRequest.emit (node:events:511:28)
at ClientRequest.emit (node:domain:489:12)
at TLSSocket.emitRequestTimeout (node:_http_client:840:9)
at Object.onceWrapper (node:events:625:28)
at TLSSocket.emit (node:events:523:35)
at TLSSocket.emit (node:domain:489:12)
at Socket._onTimeout (node:net:583:8)
at listOnTimeout (node:internal/timers:573:17) {
code: 'TimeoutError',
time: 2023-12-13T07:15:02.756Z,
region: 'eu-west-1',
hostname: 'artilleryio-test-data-eu-west-1-{IAM}.s3.eu-west-1.amazonaws.com',
retryable: true
}

Node.js v20.2.0

排查与解决步骤

  • 验证网络连通性
    确认本地网络可访问eu-west-1区域的AWS服务端点。用curl测试目标S3桶的连通性:

    curl -v https://artilleryio-test-data-eu-west-1-{IAM}.s3.eu-west-1.amazonaws.com
    

    若无法访问,检查防火墙、代理设置,或确保网络未限制AWS服务访问。

  • 延长AWS SDK超时时间
    Artillery依赖的AWS SDK默认超时120秒,可通过环境变量调整:

    export AWS_HTTP_TIMEOUT=300000 # 设为5分钟
    

    也可在Artillery测试配置文件中添加超时设置:

    config:
      aws:
        httpOptions:
          timeout: 300000
    
  • 检查IAM权限配置
    确保执行命令的IAM实体拥有以下权限:

    • lambda:CreateFunction
    • lambda:UpdateFunctionCode
    • s3:GetObject(针对测试数据所在S3桶)
    • iam:PassRole(若Lambda需要关联执行角色)
      确认权限未被区域限制,且未遗漏必要操作权限。
  • 修复Node.js与AWS SDK兼容性
    Node.js 20部分版本与AWS SDK存在兼容性问题,尝试降级Artillery依赖的AWS SDK:

    1. 进入Artillery安装目录:cd C:\ProgramData\nvs\node_modules\artillery
    2. 安装兼容版本:npm install aws-sdk@2.1470.0
    3. 重新运行Artillery命令。
  • 检查S3桶访问限制
    确认S3桶的访问策略允许当前IAM实体访问,且桶未设置IP白名单等严格网络限制,导致Artillery无法读取测试数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:26:01