0
0

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でAWS Lambda関数を作成する方法:シンプルな実装ガイド

Posted at

はじめに

AWSのサーバーレスコンピューティングサービスであるLambdaは、アプリケーション開発において非常に強力なツールです。本記事では、Terraformを使用してAWS Lambda関数を簡単に作成する方法を、aws-terraform-sandboxプロジェクトのs04_simple_lambdaサンプルを参考に解説します。

プロジェクト構成

まず、プロジェクトの基本構成を確認しましょう。

s04_simple_lambda/
├── main.tf
├── variables.tf
├── terraform.tfvars
├── client.py
└── lambda/
    └── test/
        └── src/
            └── test_terraform.py

Terraform設定ファイル

3.1 main.tf

main.tfは、Terraformプロジェクトの中心となるファイルです。ここでは、Lambda関数とそれに関連するAWSリソースを定義します。

provider "aws" {
  region = var.aws_region
}

resource "aws_lambda_function" "test_terraform" {
  function_name    = "test_terraform"
  filename         = data.archive_file.test_terraform.output_path
  source_code_hash = data.archive_file.test_terraform.output_base64sha256
  runtime          = "python3.9"
  role             = aws_iam_role.lambda.arn
  handler          = "test_terraform.handler"

  environment {
    variables = {
      ENVIRONMENT = var.environment
    }
  }
}

# その他のリソース定義(VPC、サブネット、セキュリティグループなど)

3.2 variables.tf

variables.tfでは、プロジェクトで使用する変数を定義します。

variable "aws_region" {
  description = "The AWS region to deploy resources in"
  type        = string
}

variable "project_name" {
  description = "The name of the project"
  type        = string
}

# その他の変数定義

3.3 terraform.tfvars

terraform.tfvarsで、variables.tfで定義した変数に具体的な値を設定します。

aws_region           = "ap-northeast-1"
project_name         = "simple-lambda-demo"
vpc_cidr             = "10.0.0.0/16"
public_subnet_cidr   = "10.0.1.0/24"
private_subnet_cidr  = "10.0.2.0/24"
lambda_function_name = "simple-lambda-demo_test_lambda"
environment          = "dev"

Lambda関数の実装

Lambda関数の実装はlambda/test/src/test_terraform.pyで行います。

import json

def handler(event, context):
    print('test')
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

デプロイ手順

Lambda関数をデプロイするには、以下の手順を実行します:

  1. Terraformの初期化:
terraform init
  1. 実行プランの確認:
terraform plan
  1. リソースのデプロイ:
terraform apply

Lambda関数の呼び出し

デプロイしたLambda関数を呼び出すには、client.pyスクリプトを使用します:

import boto3
import json

def invoke_lambda():
    lambda_client = boto3.client('lambda', region_name='ap-northeast-1')
    response = lambda_client.invoke(
        FunctionName='test_terraform',
        InvocationType='RequestResponse',
        Payload=json.dumps({})
    )
    return json.loads(response['Payload'].read())

if __name__ == "__main__":
    result = invoke_lambda()
    print(result)

リソースの削除

プロジェクトが不要になった場合は、以下のコマンドでリソースを削除できます:

terraform destroy

まとめ

本記事では、Terraformを使用してAWS Lambda関数を簡単に作成する方法を解説しました。この方法を利用することで、インフラストラクチャをコードとして管理し、効率的にサーバーレスアプリケーションを開発することができます。

Terraformとの組み合わせにより、Lambda関数の作成、更新、削除が簡単になり、開発者の生産性が向上します。また、バージョン管理システムと組み合わせることで、インフラストラクチャの変更履歴も簡単に追跡できます。

このアプローチを活用して、より効率的なクラウドネイティブアプリケーションの開発に取り組んでみてください。

リポジトリ

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?