【问题标题】:Terraform getting stuck when running on JenkinsTerraform 在 Jenkins 上运行时卡住了
【发布时间】:2021-10-26 12:24:44
【问题描述】:

我正在使用带有 aws 的 terraform:

  • 地形v0.14.8
  • 提供者registry.terraform.io/hashicorp/archivev2.2.0
  • 提供者registry.terraform.io/hashicorp/awsv3.55.0

当前行为:

  • 在我的本地机器上运行良好。
  • 在 Jenkins 使用的本地 docker 上运行良好
  • 在 Jenkins 上使用相同的 docker 在 US-WEST-2 上工作正常 但是,
  • 在 Jenkins 上与 EU-CENTRAL-1 上的相同 docker 卡住。 在调试模式下,我得到:

2021-08-24T20:16:08.901Z [信息] plugin.terraform-provider-aws_v3.55.0_x5: 2021/08/24 20:16:08 [调试] [aws-sdk-go] 调试:发送请求 lambda/GetLayerVersion 失败, 尝试 25/25,错误 RequestError: send request failed 由于:Get “https://lambda.eu-central-1.amazonaws.com/2018-10-31/layers/awswrangler/versions/2”: 拨打 tcp 3.121.178.128:443: i/o 超时: 时间戳=2021-08-24T20:16:08.901Z 2021/08/24 20:16:08 [TRACE] 顶点 “module.key_rotation.aws_lambda_layer_version.lambda_layer”:访问 完成 2021/08/24 20:16:08 [TRACE] 顶点 “module.key_rotation.aws_lambda_layer_version.lambda_layer”:动态 子图遇到错误 2021/08/24 20:16:08 [TRACE] 顶点 “module.key_rotation.aws_lambda_layer_version.lambda_layer”:访问 完成 2021/08/24 20:16:08 [TRACE] 顶点 “module.key_rotation.aws_lambda_layer_version.lambda_layer(扩展)”: 动态子图遇到错误 2021/08/24 20:16:08 [TRACE] vertex “module.key_rotation.aws_lambda_layer_version.lambda_layer(扩展)”: 访问完成 2021/08/24 20:16:08 [TRACE] dag/walk: 上游 “module.key_rotation.aws_lambda_function.sync_apps_db_lambda_function (expand)" 出错,因此跳过 2021/08/24 20:16:08 [TRACE] dag/walk: 上游 “module.key_rotation.aws_lambda_function.cleanup_lambda_function (expand)" 出错,因此跳过 2021/08/24 20:16:08 [TRACE] dag/walk: 上游 “module.key_rotation.aws_lambda_function.check_application_keys_lambda_function (expand)" 出错,因此跳过 2021/08/24 20:16:08 [TRACE] dag/walk: 上游 “module.key_rotation.aws_cloudwatch_event_target.event_target_lambda (expand)" 出错,因此跳过 2021/08/24 20:16:08 [TRACE] dag/walk: 上游 “module.key_rotation.aws_lambda_permission.allow_cloudwatch_to_call_cleaner_lambda (expand)" 出错,因此跳过 2021/08/24 20:16:08 [TRACE] dag/walk: 上游 “module.key_rotation.aws_lambda_permission.allow_cloudwatch_to_call_lambda (expand)" 出错,因此跳过 2021/08/24 20:16:08 [TRACE] dag/walk: 上游 “module.key_rotation.aws_cloudwatch_event_target.event_target_cleaner_lambda (expand)" 出错,因此跳过 2021/08/24 20:16:08 [TRACE] dag/walk: “module.key_rotation (close)”上游出错,所以跳过 2021/08/24 20:16:08 [TRACE] dag/walk:上游 "provider["registry.terraform.io/hashicorp/aws"] (close)" 出错, 所以跳过 2021/08/24 20:16:08 [TRACE] dag/walk: 上游 “meta.count-boundary (EachMode fixup)”错误,所以跳过 2021/08/24 20:16:08 [TRACE] dag/walk: "root" 上游出错,所以跳过

好像和 lambda 上传有关。

我试过了:

  • 将 terraform 更新到最新版本
  • 毁灭一切
  • 同时从 S3 中删除所有状态

同样的结果。

【问题讨论】:

    标签: jenkins jenkins-pipeline terraform terraform-provider-aws


    【解决方案1】:

    我认为您的问题的根本原因是:

    获取“https://lambda.eu-central-1.amazonaws.com/2018-10-31/layers/awswrangler/versions/2”:拨打 tcp 3.121.178.128:443:i/o 超时

    根据您提供的信息无法说明为什么terraform 二进制文件无法连接到 Lambda 服务的eu-central-1 端点。

    您没有说明 Jenkins 的部署地点或方式。我假设在 AWS 上的某个容器中?

    这可能是暂时的网络故障,或者由于某种原因,您的 Jenkins 部署阻止了与 eu-central-1 的连接。

    您是否在几个小时后重试?

    您是否能够始终如一地重现此行为?

    【讨论】:

    • 是的,我在 docker 上运行。这在上周是一致的。我可以在 eu-central-1 上运行命令,terrafor 正在创建用户和角色,但似乎无法创建 lambda。
    • (你的意思是 作为一个 docker 容器)我很抱歉,但我没有选择 :-)
    【解决方案2】:

    找到问题了。

    正如其他回复中所述,问题是:

    获取 “https://lambda.eu-central-1.amazonaws.com/2018-10-31/layers/awswrangler/versions/2”: 拨打 tcp 3.121.178.128:443: i/o 超时

    原因是我们的代理上缺少 lambda 域。

    【讨论】:

      猜你喜欢
      • 2019-12-19
      • 2021-08-13
      • 2020-03-02
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多