【问题标题】:Getting InvalidSignatureException error whereas my time on the machine is correct出现 InvalidSignatureException 错误,而我在机器上的时间是正确的
【发布时间】:2021-02-02 01:08:25
【问题描述】:

terraform apply 给我以下错误:

错误:创建 Lambda 函数时出错:InvalidSignatureException:签名已过期:20190628T091524Z 现在早于 20190628T092024Z(20190628T092524Z - 5 分钟)

许多人建议在我运行 terraform 命令的本地计算机上修复时间,但这对我来说似乎不是问题。我的本地机器时间是正确的,没有问题。

这个没有解决我的问题:(Terraform apply failed due to mismatch time

【问题讨论】:

  • 如果您改为运行 AWS CLI 命令会发生什么?你是如何运行 Terraform 的?直接使用二进制文件还是在 Docker 容器中?这是发生在本地还是在另一台机器或虚拟机中?
  • 我没有从 AWS CLI 尝试过。我正在运行的是直接来自本地机器(没有 docker,没有 VM)上的二进制文件(版本 0.12.3)。
  • 是什么阻止您运行 AWS CLI 命令? aws sts get-caller-identity 之类的东西应该没问题
  • 运行你提到的命令没有发现任何问题。
  • 是不是上面提到的速度问题:github.com/apex/apex/issues/632

标签: amazon-web-services lambda terraform


【解决方案1】:

我认为这是由于网速慢的问题,所以我按照以下步骤解决了这个问题。

  • 即时安装 NPM 模块
  • 动态创建 zip
  • 将 zip 推送到 s3
  • 然后从 s3 指定目标密钥,而不是从本地推送 zip

这是工作代码。

 resource "null_resource" "npm" {
      provisioner "local-exec" {
        command = "cd ../lambda-functions/loadbalancer-to-es && npm install --prod=only && chmod -R 777 node_modules"
      }
    }

resource "aws_s3_bucket_object" "file_upload" {
  bucket = "${var.env_prefix_name}${var.s3_suffix}"
  key    = "lambda-functions/loadbalancer-to-es.zip"
  source = "${data.archive_file.source.output_path}"
  # etag   = "${filemd5("../lambda-functions/loadbalancer-to-es.zip")}"
}

# Zip the Lambda function on the fly
data "archive_file" "source" {
  type        = "zip"
  source_dir  = "../lambda-functions/loadbalancer-to-es"
  output_path = "../lambda-functions/loadbalancer-to-es.zip"
  depends_on  = ["null_resource.npm"]
}


# Created AWS Lamdba Function: Memory Size, NodeJS version, handler, endpoint, doctype and environment settings
resource "aws_lambda_function" "elb_logs_to_elasticsearch" {
  function_name = "${var.env_prefix_name}-alb-logs-to-elk-test"
  s3_bucket = "${var.env_prefix_name}${var.s3_suffix}"
  s3_key    = "${aws_s3_bucket_object.file_upload.key}"
  description   = "elb-logs-to-elasticsearch"
  memory_size   = 1024
  timeout       = 900
  runtime       = "nodejs8.10"
  role          = "${aws_iam_role.role.arn}"
  depends_on  = ["null_resource.npm" ]
  source_code_hash = "${base64sha256(data.archive_file.source.output_path)}"
  handler       = "index.handler"


  environment {
    variables = {
      ELK_DOCKTYPE = "some env"
    }
  }
}

【讨论】:

    猜你喜欢
    • 2015-11-08
    • 2020-09-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    相关资源
    最近更新 更多