Я пытаюсь развернуть лямбда-функции, используя terraform более CircleCI
resource "aws_lambda_function" "demo_function" {
function_name = "my-dummy-function"
handler = "index.handler"
role = "${var.IAM_LAMBDA_ARN}"
filename = "${var.API_DIR}"
source_code_hash = "${base64sha256(data.local_file.dist_file.content)}"
runtime = "nodejs8.10"
}
data "local_file" "dist_file" {
filename = "${var.API_DIR}"
}
Ошибка
on lambda/main.tf line 10, in data "local_file" "dist_file":
10: data "local_file" "dist_file" {
Все переменные в порядке,Локальное развертывание также работает нормально.Пробовал также с разными версиями Terraform (0.11.xx и 0.12.0)
.circleci / config.yml
version: 2
jobs:
build:
working_directory: ~/tmp
docker:
- image: circleci/node:8
- image: hashicorp/terraform
steps:
- checkout
- restore-cache:
keys:
- v1-dependencies-{{ checksum "backend/package.json" }}
- vi-dependencies-
- run:
name: Installing modules
command: cd backend/ && npm ci
- save-cache:
paths:
- ./backend/node_modules
key: v1-dependencies-{{ checksum "backend/package.json" }}
- run:
name: Building backend code
command: cd backend/ && npm run build
- persist_to_workspace:
root: backend/dist
paths:
- terraform_demo-api.zip
deploy:
working_directory: ~/tmp
docker:
- image: alpine:3.8
steps:
- run:
name: Setting up
command: apk update && apk add ca-certificates openssl wget && update-ca-certificates
- run:
name: Installing
command: |
wget https://releases.hashicorp.com/terraform/0.12.0/terraform_0.12.0_linux_amd64.zip
apk add --update git curl openssh make python py-pip groff less unzip
unzip terraform_0.12.0_linux_amd64.zip -d /bin
rm -f terraform_0.12.0_linux_amd64.zip
pip install --quiet --upgrade pip && \
pip install --quiet awscli==1.14.5
- checkout
- attach_workspace:
at: infrastructure/lambda
- restore-cache:
keys:
- v1-infrastructure-{{ checksum "infrastructure/.terraform/terraform.tfstate" }}
- run:
name: Initialising terraform
command: cd infrastructure/ && terraform init -reconfigure -force-copy -backend=true -backend-config "bucket=geet-tf-state-bucket" -backend-config "key=terraform.tfstate" -backend-config "region=us-west-2"
- run: cd infrastructure/lambda/ && cat terraform_demo-api.zip >> api.zip
- run:
name: Executing plan
command: cd infrastructure/ && terraform plan -var="UI_BUCKET_NAME=$UI_BUCKET_NAME" -var="API_DIR=$API_DIR" -var="AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" -var="AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" -out .terraform/service.tfplan
- run:
name: Applying infrastructure
command: cd infrastructure/ && terraform apply -auto-approve .terraform/service.tfplan
- save-cache:
paths:
- ./infrastructure/.terraform
key: v1-infrastructure-{{ checksum "infrastructure/.terraform/terraform.tfstate" }}
workflows:
version: 2
build_and_deploy:
jobs:
- build
- deploy:
requires:
- build
На случай, если сказать, чтопуть к файлу может отличаться, или я могу использовать $ {path.module}, я попытался получить доступ к локальному файлу (пример output.tf) из того же каталога, но все же я получаю проблему с файлом не найден.