【问题标题】:Getting error while trying to deploy AWS lambda function through Terraform尝试通过 Terraform 部署 AWS lambda 函数时出错
【发布时间】:2021-10-05 09:57:14
【问题描述】:

我在尝试通过 terraform 脚本部署 AWS lambda.py 时遇到错误。我对 AWS Terraform 非常陌生,目前无法找出错误。

请在下面找到 lambda 的 terroform 脚本:

resource "null_resource" "push_invoke_container" {
     depends_on = [aws_ecr_repository.<xx>_ecr]
     triggers = {
      dockerfile = "${sha256(file("./lambda/Dockerfile"))}"
      app_code   = "${sha256(file("./lambda/main.py"))}"
    }
    provisioner "local-exec" {
      command = "sh ./lambda/deploy.sh ${aws_ecr_repository.<xx>_ecr.name} ${aws_ecr_repository.<xx>_ecr.repository_url}"
    }
  }
 
  resource "aws_lambda_function" "invoker" {
    package_type  = "Image"
    depends_on    = [aws_ecr_repository.lambda_ecr, null_resource.push_invoke_container]
    function_name = "${var.app_prefix}_invoker_lambda_${var.environment}_test"
    image_uri     = "${aws_ecr_repository.lambda_ecr.repository_url}:latest" #"${aws_ecr_repository.lambda_ecr.repository_url}:latest"
    role          = var.invoker_lambda_role_arn_crawler
    timeout       = 90
    tracing_config {
      mode = "Active"
    }
    environment {
 

      variables = {
        CLUSTER          = "${aws_ecs_cluster.<xx>.id}",
        LAUNCH_TYPE      = "FARGATE",
        ASSIGN_PUBLIC_IP = "DISABLED",
        SUBNETS          = "${var.subnet_id}",
        SECURITY_GROUPS  = "${aws_security_group.<xx>_ecs_security_group.id}",
        TASK_DEFINITION  = "${aws_ecs_task_definition.<xx>.arn}"
      }
    }
  }

通过terraform init 运行上述脚本时,我收到以下错误:

 Error: error configuring S3 Backend: error validating provider credentials: error calling sts:GetCallerIdentity: RequestError: send request failed
│ caused by: Post "https://sts.amazonaws.com/": dial tcp 52.xx.yyy.zzz:443: i/o timeout

任何帮助将不胜感激

【问题讨论】:

  • 我认为这与 Lambda 代码无关。在我看来,您似乎无法连接到 AWS API。您是否在使用代理或类似的网络中?还是一些过热的防火墙?
  • 我们没有使用任何代理。你也能解释一下我热心的防火墙。我不认为我们正在使用任何类型的防火墙。上面的脚本有什么问题吗?我的 lambda 代码运行良好。
  • 看看错误就知道了。对我来说,它看起来与您的代码没有任何关系。但这很容易验证。如果您删除该代码,它会再次起作用吗?但是查看错误,您无法谈论 AWS STS。你得到一个超时。这通常会发生,因为您遇到了网络问题。

标签: amazon-web-services docker aws-lambda terraform-provider-aws


【解决方案1】:

此错误表明您没有登录 AWS 账户,如果您在本地运行它,请尝试传递 aws 账户的安全和访问密钥,如下所示。

terraform init -backend-config="access_key=<your access key>" -backend-config="secret_key=<your secret key>"

另外,验证是否为 S3 后端提供了“区域”。

【讨论】:

    猜你喜欢
    • 2020-07-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2016-09-20
    • 2021-05-13
    • 2018-11-17
    相关资源
    最近更新 更多