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?

SQSからLambdaへメッセージを渡す

Posted at

概要

SQSに届いたメッセージをLambdaに渡す処理を調べたので、設定や実装方法をメモとして記載する

前提

以下の記事でSQSにメッセージを渡す処理を実装しておく

準備

Lambda実行ロール作成

AWSLambdaSQSQueueExecutionRole 許可ポリシーをアタッチしたロールを作成する

許可されている定義に、sqs:DeleteMessagesqs:GetQueueAttributessqs:ReceiveMessageが含まれている

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:ReceiveMessage",
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

create_iam_for_lambda.jpg

参考記事
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-sqs-example.html
https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-lambda-function-trigger.html#configure-lambda-function-trigger-prerequisites

Lambda関数作成

上で作成したLambda実行ロールをデフォルトの実行ロールとして指定して作成する

スクリーンショット 2026-01-04 10.39.03.png

ソースコード更新

SQSから渡されたメッセージを出力するコードを用意

require 'json'

def lambda_handler(event:, context:)
  event['Records'].each do |record|
    # メッセージ本文 (Body) を取得
    body = record['body']
    puts "Message received: #{body}"
  end
  
  { statusCode: 200, body: JSON.generate('Success') }
end

SQSをトリガーに設定

Lambda関数の画面でトリガーを追加を選択
トリガーの設定でSQSを指定し、SQSキューに登録しているキュー情報を指定する

※SQSキュー情報設定については、前提のリンクにある記事を参照

スクリーンショット 2026-01-04 10.39.59.png

設定後、トリガーにSQSが追加される

スクリーンショット 2026-01-04 10.40.49.png

動作確認

Railsアプリから実行

タイトルとコメントを指定して、Create Sqs messageを選択
スクリーンショット 2026-01-04 10.43.22.png

Lambda側確認

モニタリングタブにて

処理が成功しているか、エラーカウントと成功率のグラフで確認
※処理直後は、間隔を狭めて(30秒などにして)確認
スクリーンショット 2026-01-04 10.45.10.png

CloudWatchログ表示を選択し、SQSから渡されたメッセージが出力されていることを確認
スクリーンショット 2026-01-04 10.44.17.png

無事にSQSから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?