LoginSignup
1
0

More than 1 year has passed since last update.

【Terraform】null_resourceを使ってコードを用意せずにLambda実行環境を作成する

Posted at

背景

TerraformでLambda実行環境を作成しようと試みたものの、エラーが発生

Error: filename, s3_* or image_uri attributes must be set

TerraformでLambda関数を作成するときは、関数ファイルを用意しなければならない。
しかし、とりあえずLambdaの実行環境だけ作成して、関数は後で用意したいパターンもある。
そういうときはどうすればいいのか・・?

解決策

null_resourceを使ってterraform apply時に空のzipファイルを生成し、それを

コード

main.tf
# 関数作成
resource "aws_lambda_function" "lambda" {
    filename = data.archive_file.null.output_path
    function_name = "hoge_function"
    handler = "hoge_function"
    runtime = "go1.x"
    role  = data.aws_iam_role.role.arn
}

# ダミーの関数ファイルを作成する
data "archive_file" "null" {
    type        = "zip"
    output_path = "${path.module}/null.zip"
    source {
        content  = "null"
        filename = "bootstrap"
    }

    depends_on = [
        null_resource.this
    ]
}

resource "null_resource" "this" {}

# 適当なロール(for Lambda)を用意しておく
data "aws_iam_role" "role" {
    name = "hoge-role"
}

depends_on = [
    null_resource.this
]

archive_fileとnull_resourceの間で依存関係を設定しており、
terraform applyを実行すると、null_resourceの生成をトリガーに、ダミーファイル(null.zip) が生成される

スクリーンショット 2022-12-22 16.25.20.png

terraform apply時にローカルにダミーファイルが作成される。

コンソールで作成したLambda関数を確認

ダミーファイルがコードソースとして登録されている。
スクリーンショット 2022-12-22 18.03.29.png

実行環境が作成できているのを確認したら、別途でソースコードをアップロードすればOK

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0