0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

#AWS で SQSのメッセージ受信をトリガーに lambda で関数を実行させる手順

0
Last updated at Posted at 2019-09-21

この例ではlambdaとSQSのコンソールを行き来して作業する

参考

書いた後に気づいたけど、こちらの記事がずっと詳しい。

AWS LambdaがSQSをイベントソースとしてサポートしました! | DevelopersIO

HELP

AWS Lambda を Amazon SQS に使用する - AWS Lambda

AWS lambda が SQS を使えるように、実行ロールを作成しておく

#AWS Lambda の実行ロールを作成する ( SQSの実行権限を与えて見る例 ) · Issue #2496 · YumaInaura/YumaInaura

SQSのキューを作成する

image

Lambda の関数を選んで設定に進む

image

Lambdaに SQS が使える実行ロールを与えておく

image

Lambda の設定で「トリガーを追加」を選ぶ

image

トリガーに SQSを選ぶ

image

SQSのキューを選ぶ

image

SQSのコンソールを開いてキューを見ると、Lambdaが設定されているのがわかる

image

SQS のキューでメッセージの送信をする

どうやら一瞬でメッセージが処理されるようで、すぐに一覧画面を更新しても「利用可能メッセージ」の件数さえ、増えるのは分からなかった。
キュー実行に遅延時間を与えてやれば、動きがわかるかもしれない。

image

image

Lambdaでモニタリング / CloudWatchのログなどを確認して、履歴を見る

メッセージが処理されているのが分かる。

image

image

LambdaでSQSのメッセージ内容はどうやって扱うの?

Hello world のテンプレートに event という表記が見える。
そもそも各言語で event を簡単に参照できるっぽい?

当方Lambda未経験者につき。

Ruby の例

require 'json'

def lambda_handler(event:, context:)
    # TODO implement
    { statusCode: 200, body: JSON.generate('Hello from Lambda!') }
end

SQSのメッセージイベントはこんなん

{
    "Records": [
        {
            "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d",
            "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...",
            "body": "test",
            "attributes": {
                "ApproximateReceiveCount": "1",
                "SentTimestamp": "1545082649183",
                "SenderId": "AIDAIENQZJOLO23YVJ4VO",
                "ApproximateFirstReceiveTimestamp": "1545082649185"
            },
            "messageAttributes": {},
            "md5OfBody": "098f6bcd4621d373cade4e832627b4f6",
            "eventSource": "aws:sqs",
            "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue",
            "awsRegion": "us-east-2"
        },
        {
            "messageId": "2e1424d4-f796-459a-8184-9c92662be6da",
            "receiptHandle": "AQEBzWwaftRI0KuVm4tP+/7q1rGgNqicHq...",
            "body": "test",
            "attributes": {
                "ApproximateReceiveCount": "1",
                "SentTimestamp": "1545082650636",
                "SenderId": "AIDAIENQZJOLO23YVJ4VO",
                "ApproximateFirstReceiveTimestamp": "1545082650649"
            },
            "messageAttributes": {},
            "md5OfBody": "098f6bcd4621d373cade4e832627b4f6",
            "eventSource": "aws:sqs",
            "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue",
            "awsRegion": "us-east-2"
        }
    ]
}

AWS Lambda を Amazon SQS に使用する - AWS Lambda

SQS のテストイベントを作成しておくと、簡単にテストできそう

image

Ruby

こんなノリ?

require 'json'

def lambda_handler(event:, context:)
    # TODO implement
    { statusCode: 200, body: JSON.generate(event['Records'][0]['messageId']) }
end

テストは成功

image

JSON の出力結果のログってどこで見るの?

宿題。

ところでリモートワークで365日8時間ずつ稼働しようとしてたら

体力は余ってるんだけど、目がかすんで仕方がない。人間の体って難儀だ。

大阪の夜の街をぼんやり眺めて、視力回復するしかないか?

image

著者近影

image

image

Original by Github issue

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?