LoginSignup
0
0

Terraformを使用したAWS SQSとLambdaの統合

Posted at

この記事では、AWSのSimple Queue Service(SQS)とLambdaをTerraformを使用して統合する方法について説明します。具体的には、SQSキューからLambda関数をトリガーする設定と、Lambda関数からSQSキューにメッセージを送信する設定に焦点を当てます。

SQSキューからLambdaをトリガーする

必要なリソース

  • SQSキュー
  • Lambda関数
  • IAMロール
  • VPC設定(VPC内でLambdaを実行する場合)

ステップバイステップ

1.SQSキューの作成

resource "aws_sqs_queue" "example_queue" {
  name = "example-queue"
}

2.Lambda関数の作成

resource "aws_lambda_function" "example_lambda" {
  function_name = "example_lambda_function"

  // VPC設定
  vpc_config {
    subnet_ids         = [aws_subnet.example_subnet.id]
    security_group_ids = [aws_security_group.lambda_sg.id]
  }
}

3.IAMロールの作成

resource "aws_iam_role" "lambda_exec_role" {
  name = "lambda_exec_role"

  assume_role_policy = jsonencode({
    Version = "2012-10-17",
    Statement = [
      {
        Action = "sts:AssumeRole",
        Effect = "Allow",
        Principal = {
          Service = "lambda.amazonaws.com"
        },
      },
    ],
  })
}

4.イベントソースマッピングの設定

resource "aws_lambda_event_source_mapping" "example_mapping" {
  event_source_arn = aws_sqs_queue.example_queue.arn
  function_name    = aws_lambda_function.example_lambda.arn
  batch_size       = 10
}

LambdaからSQSへのメッセージ送信

Lambda関数の設定

Lambda関数がSQSキューにメッセージを送信するためのIAMロールとポリシーを設定し、Lambda関数を定義します。

resource "aws_iam_role" "lambda_exec_role" {
  // IAMロールの設定...
}

resource "aws_iam_role_policy" "lambda_sqs_policy" {
  // IAMポリシーの設定...
}

resource "aws_lambda_function" "producer_lambda" {
  // Lambda関数の設定...
}

モジュールの使用と出力

モジュールの定義

モジュール内でリソースを定義し、必要な出力を設定します。

# モジュール内のoutputs.tf

output "lambda_function_arn" {
  value = aws_lambda_function.example_lambda.arn
  description = "ARN of the Lambda function"
}

モジュールの使用

モジュールを使用して出力を取り出します。

module "example_module" {
  source = "./path/to/module"
}

output "module_lambda_function_arn" {
  value = module.example_module.lambda_function_arn
  description = "ARN of the Lambda function from the module"
}

まとめ

この記事では、Terraformを使用してAWSのSQSとLambdaを統合する方法を紹介しました。SQSキューからLambda関数をトリガーする設定と、Lambda関数からSQSキューにメッセージを送信する設定の両方をカバーしました。

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