■ はじめに
大分、久しぶりに、Terraformを使うので リハビリがてらに、AWS Lambdaをまとめていく
目次
【1】API 1)aws_lambda_function 2)aws_lambda_layer_version 3)aws_lambda_permission 【2】Tips 1)archive_file で ZIP圧縮する 【3】Hello World 0)前提条件 1)サンプル 2)実行
【1】API
1)aws_lambda_function
* Lambda関数を作成
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function
2)aws_lambda_layer_version
* Lambda レイヤー を作成
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_layer_version
3)aws_lambda_permission
* S3などのリソースに対して、Lambda関数のアクセス許可を付与
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission
【2】Tips
1)archive_file
* archive_fileで ZIP圧縮する
https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file
# Archive a single file. data "archive_file" "init" { type ="zip" source_file ="${path.module}/init.tpl" output_path ="${path.module}/files/init.zip" }
2)filebase64sha256
* ファイルをbase64エンコードしたSHA256ハッシュ値を返す
https://developer.hashicorp.com/terraform/language/functions/filebase64sha256
【3】Hello World
手始めに、最小単位の物を作ってみる
0)前提条件
* Lambda の IAMロールは、既に作成してあるもの ("arn:aws:iam::123456789012:role/your-role")とし、 それを使うものとする
1)サンプル
* TFコードとLambdaの基になるPythonコードを作成する
フォルダ構成
├── lambda_function │ └── main.py └── main.tf
main.tf
# LambdaのファイルをZIP圧縮する data "archive_file" "demo_zip" { type ="zip" source_dir ="${path.module}/lambda_function" output_path ="${path.module}/demo_lambda.zip" } # Lambda関数の作成 resource "aws_lambda_function" "demo_lambda" { function_name ="demo-lambda" handler ="main.handler" runtime ="python3.12" filename= data.archive_file.demo_zip.output_path source_code_hash = filebase64sha256(data.archive_file.demo_zip.output_path) role ="arn:aws:iam::123456789012:role/your-role" } # resource "aws_cloudwatch_log_group" "demo_log_group" { name ="/aws/lambda/${aws_lambda_function.demo_lambda.function_name}" retention_in_days =30}
main.py
import json defhandler(event, context): response = { 'statusCode': 200, 'body': 'Hello, World!' } return response
2)実行
terraform init terraform plan terraform apply
参考文献
https://zenn.dev/not75743/articles/7a7d3a2fc7e788
https://qiita.com/curlneko/items/15607f8ef319cc97a75e
https://qiita.com/neruneruo/items/feca4ea15e2230c188b4
https://hands-on.cloud/s3-trigger-lambda-terraform-example/
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000
Terraform ~ AWS ECR ~
https://dk521123.hatenablog.com/entry/2023/05/23/002314
Lambda ~ Python / 入門編 ~
https://dk521123.hatenablog.com/entry/2021/10/07/103317
Lambda ~ Python / 外部モジュール追加 ~
https://dk521123.hatenablog.com/entry/2024/05/25/005456
Lambda ~ Python / S3トリガー ~
https://dk521123.hatenablog.com/entry/2024/05/23/162229