1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Terraform]Lambda構築に必要なリソースと引数の概要

Posted at

はじめに

Terraformを使ってAWS Lambdaを構築する際に、「Lambdaが利用するリソースで何ができるのか」「そのリソースの引数に何を指定すべきか」が分からず手間取ったので、簡単に整理しました。

Lambda構築に使用したTerraformコード

以下は、Terraformを使ってLambdaを作成するためのコード例です。

# Lambda
data "archive_file" "lambda_function_file" {
  type        = "zip"
  source_dir  = "./src/"
  output_path = "./upload/lambda_function.zip"
}

resource "aws_lambda_function" "get_gang_info" {
  filename         = data.archive_file.lambda_function_file.output_path
  function_name    = "get_gang_info"
  role             = aws_iam_role.dynamodb_read_only.arn
  handler          = "lambda_function.lambda_handler"
  source_code_hash = data.archive_file.lambda_function_file.output_base64sha256
  runtime          = "python3.12"
  timeout          = 29
}

resource "aws_lambda_permission" "tr_lambda_permit" {
  statement_id  = "get_gang_info_api"
  action        = "lambda:InvokeFunction"
  function_name = aws_lambda_function.get_gang_info.arn
  principal     = "apigateway.amazonaws.com"
  source_arn    = "${aws_api_gateway_rest_api.get_gang_info_api.execution_arn}/*/GET/gang"
}

使用したリソースと指定する内容

1. archive_file

機能

Lambda関数用のスクリプトファイルをZIP化します。

archive_fileを使用するには、Terraformのプロバイダーとしてhashicorp/archiveをrequired_providersに追加する必要があります。

主な引数

引数 指定する内容
type zipを指定する
soruce_dir スクリプトが格納されたフォルダを指定する
output_path zip化したフォルダの出力先を指定する

2. aws_lambda_function

機能

Lambda関数を作成します。

主な引数

引数 指定する内容
filename zip化したファイルのパスを指定する
function_name Lambda関数名を指定する
role 他のAWSサービスに対してアクションを実行するのに必要なロールを指定する
handler スクリプトにあるメイン関数を指定する
source_code_hash 「archive_file.ラベル名.output_base64sha256」で指定する
runtime スクリプトで使用した開発言語を指定する
timeout スクリプトで使用した開発言語を指定する
runtime スクリプト処理の制限時間を指定する

3. aws_lambda_permission

機能

他のAWSサービスにLambda関数の呼び出し権限を付与します。

主な引数

引数 指定する内容
statement_id アクセス権の名前を指定する
action 「lambda:InvokeFunction」ポリシーを指定する
function_name Lambda関数のARNを指定する
principal アクセス権を与えるAWSサービスのプリンシパルを指定する
source_arn アクセス権を与えるAWSサービスのARNを指定する

おわりに

今回のコード例は、基本的な構築に焦点を当てていますが、こちらの記事が小さな疑問や不明点を解消する一助となれば幸いです。次のステップとして、サービスからの呼び出しをシミュレーションする方法や、エラーハンドリングのパターンにも挑戦していきたいと考えています。

参考

https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?