3

我正在使用Terraform将 lambda 发布到 AWS。当我部署到 AWS 时它工作正常,但在针对localstack.

下面是我的.tf配置文件,您可以看到我将 lambda 端点配置为http://localhost:4567.

provider "aws" {
  profile    = "default"
  region     = "ap-southeast-2"

  endpoints {
      lambda = "http://localhost:4567"
  }
}

variable "runtime" {
  default = "python3.6"
}

data "archive_file" "zipit" {
    type        = "zip"
    source_dir  = "crawler/dist"
    output_path = "crawler/dist/deploy.zip"
}
resource "aws_lambda_function" "test_lambda" {
  filename      = "crawler/dist/deploy.zip"
  function_name = "quote-crawler"
  role          = "arn:aws:iam::773592622512:role/LambdaRole"
  handler       = "handler.handler"
  source_code_hash = "${data.archive_file.zipit.output_base64sha256}"
  runtime = "${var.runtime}"

}

以下是 docker compose 文件localstack

version: '2.1'

services:
  localstack:
    image: localstack/localstack
    ports:
      - "4567-4583:4567-4583"
      - '8055:8080'
    environment:
      - SERVICES=${SERVICES-lambda }
      - DEBUG=${DEBUG- }
      - DATA_DIR=${DATA_DIR- }
      - PORT_WEB_UI=${PORT_WEB_UI- }
      - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR-docker-reuse }
      - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"

有谁知道如何解决这个问题?

4

3 回答 3

7

这就是我解决类似问题的方法:

  • 设置export TF_LOG=TRACE最详细的日志记录。
  • terraform plan ....
  • 在日志中,我得到了问题的根本原因,它是:
dag/walk: vertex "module.kubernetes_apps.provider.helmfile (close)" is waiting for "module.kubernetes_apps.helmfile_release_set.metrics_server"
  • 从日志中,我确定了导致问​​题的状态module.kubernetes_apps.helmfile_release_set.metrics_server: .

  • 我删除了它的状态:

terraform state rm module.kubernetes_apps.helmfile_release_set.metrics_server
  • 现在terraform plan再次运行应该可以解决问题。

这不是最好的解决方案,这就是为什么我联系了该提供商的所有者以在没有此解决方法的情况下解决问题

于 2020-07-21T09:35:05.237 回答
3

我失败的原因是因为terraform尝试针对 AWS 检查凭证。在 .tf 配置文件中添加以下两行可以解决问题。

skip_credentials_validation = true
  skip_metadata_api_check     = true
于 2019-07-19T06:11:59.207 回答
0

我遇到了同样的问题,并通过从控制台登录到 aws dev 配置文件来修复它。所以别忘了登录。

provider "aws" {
  region = "ap-southeast-2"
  profile = "dev"
}
于 2022-02-03T04:43:13.900 回答