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.tfvariables.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のデプロイを簡単に自動化できます。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です