TerraformとPythonを使用してAWS Lambdaをデプロイする方法について説明します。この記事は、以下の参考情報を元に作成されています。
Terraformとは
Terraformは、インフラストラクチャーをコード化し、バージョン管理を行うためのツールです。AWS、Google Cloud、Azureなど、さまざまなクラウドプロバイダーをサポートしています。
AWS Lambdaとは
AWS Lambdaは、サーバーを管理することなくコードを実行できるAWSのサービスです。コードをアップロードするだけで、高可用性を持つアプリケーションを構築できます。
Terraformを使用したAWS Lambdaのデプロイ
以下に、Terraformを使用してAWS Lambdaをデプロイする手順を示します。
1. ディレクトリ構成
まず、以下のようなディレクトリ構成を作成します。
root
┣━ lambda
┃ ┗━ test
┃ ┗━ src
┃ ┣━ test_terraform.py
┃ ┗━ test_terraform.zip
┣━ main.tf
┣━ variables.tf
┗━ lambda.tf
2. Terraform設定ファイルの作成
次に、Terraformの設定ファイルを作成します。以下に、main.tf
、variables.tf
、およびlambda.tf
の例を示します。
main.tf
:
provider "aws" {
access_key = var.access_key
secret_key = var.secret_key
region = var.region
}
resource "aws_iam_role" "lambda_iam_role" {
name = "terraform_lambda_iam_role"
assume_role_policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
POLICY
}
resource "aws_iam_role_policy" "lambda_access_policy" {
name = "terraform_lambda_access_policy"
role = aws_iam_role.lambda_iam_role.id
policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:CreateLogGroup",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}
POLICY
}
variables.tf
:
variable "region" {
default = "ap-northeast-1"
}
variable "access_key" {
default = "自分のaccess_key"
}
variable "secret_key" {
default = "自分のsecret_key"
}
lambda.tf
:
data "archive_file" "test_terraform" {
type = "zip"
source_dir = "lambda/test/src"
output_path = "lambda/test/src/test_terraform.zip"
}
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_iam_role.arn
handler = "test_terraform.handler"
}
3. Pythonコードの作成
最後に、AWS Lambdaで実行するPythonコードを作成します。以下に、test_terraform.py
の例を示します。
test_terraform.py
:
def handler(event, context):
print('test')
return()
以上が、TerraformとPythonを使用してAWS Lambdaをデプロイする方法です。この方法を使用すれば、AWS Lambdaのデプロイを簡単に自動化できます。.