Terraform Archive Provider

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。
本文缩写(英文全称与中文含义)
缩写 英文全称/名称 中文含义
CI Continuous Integration 持续集成

用途#

将文件、目录或字符串打包为归档文件,常用于小型 Lambda 部署包。

示例#

将一段 Python 代码打包为 ZIP,无需额外源文件。

terraform {
  required_providers {
    archive = {
      source  = "hashicorp/archive"
      version = "~> 2.0"
    }
  }
}

data "archive_file" "lambda" {
  type                    = "zip"
  output_path             = "${path.module}/lambda.zip"
  source_content_filename = "handler.py"
  source_content          = <<-PYTHON
    def handler(event, context):
        return {"statusCode": 200, "body": "ok"}
  PYTHON
}

output "package_hash" {
  value = data.archive_file.lambda.output_base64sha256
}

对接 aws_lambda_function 时,将 filename 设置为 data.archive_file.lambda.output_path,source_code_hash 设置为上面的哈希值。

注意事项#

  • source_file、source_dir、source、source_content 配合文件名这几种输入方式只能选一种。
  • 输入已知时,data source 通常在 plan 阶段生成文件;分开运行 plan/apply 的 CI 必须保留并传递 ZIP 产物。
  • 打包目录时,将输出放在源目录之外,避免将归档本身再次打包。
  • 归档不会安装依赖或编译代码;大型项目应在 CI 中构建,再让 Terraform 部署产物。

参考#

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭