[小ネタ] Lambda のイベントソースマッピングで SQS からメッセージを取得する際に ReceiveMessage API が実行されていることを確認してみた
Amazon SQS での Lambda の使用 - AWS Lambda
Amazon SQS イベントソースマッピングでは、Lambda はキューをポーリングし、イベントと共に関数を同期的に呼び出します。各イベントには、キューからの複数のメッセージのバッチを含めることができます。Lambda は、これらのイベントをバッチとして (一度に 1 バッチずつ) 受け取り、バッチごとに関数を 1 回呼び出します。関数が正常にバッチを処理すると、Lambda はキューからそのメッセージを削除します。
上記ドキュメントに記載されている通り、Lambda のイベントソースマッピングで SQS を使用する場合、SQS キューからのメッセージの取得や削除は自動的に行われます。
一方で、イベントソースマッピングを使用しない場合には SQS キューからのメッセージの取得や削除を明示的に実装する必要があります。
SQS + Lambda という⾮同期処理 ⻩⾦パターン再⼊⾨ #AWSDevDay / SQS-Lambda-DevDay2022 - Speaker Deck
- SQS キューからのメッセージの取得: ReceiveMessage API
- SQS キューからのメッセージの削除: DeleteMessage API
今回はイベントソースマッピングを使用した場合に上記 API が実行されていることを確認してみました。
検証内容
まずはデフォルト設定で SQS の標準キューを作成しました。

Lambda 関数については以下の設定で作成しました。
- ランタイム: Python 3.14
- 実行ロール: AdministratorAccess 権限を付与したカスタム実行ロール
- コード: 以下の通り
import json
def lambda_handler(event, context):
print(json.dumps(event))
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
関数作成後、トリガーとしてデフォルト設定で SQS キューを指定しました。

また、ReceiveMessage API の記録を確認するために CloudTrail の証跡で SQS のデータイベントを記録するよう設定しました。

準備ができたので SQS のコンソールからテストメッセージを送信します。

テストメッセージ送信後、Lambda 関数が実行されて CloudWatch Logs に以下のような実行ログが出力されます。
{
"Records": [
{
"messageId": "e5f31a5c-54db-4024-9def-4414de0328d8",
"receiptHandle": "xxx",
"body": "test",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1784177185000",
"SenderId": "xxx",
"ApproximateFirstReceiveTimestamp": "1784177185004"
},
"messageAttributes": {},
"md5OfBody": "098f6bcd4621d373cade4e832627b4f6",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:ap-northeast-1:012345678901:test",
"awsRegion": "ap-northeast-1"
}
]
}
上記ログのみではどの API が実行されたのかを確認することはできません。
そこで、CloudTrail の証跡が保存されている S3 バケットのログを確認したところ、ReceiveMessage と DeleteMessageBatch の記録を確認できました。
ReceiveMessage
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "xxx:awslambda_668_20260716044054942",
"arn": "arn:aws:sts::012345678901:assumed-role/LambdaBasicExecutionRole/awslambda_668_20260716044054942",
"accountId": "012345678901",
"accessKeyId": "xxx",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "xxx",
"arn": "arn:aws:iam::012345678901:role/LambdaBasicExecutionRole",
"accountId": "012345678901",
"userName": "LambdaBasicExecutionRole"
},
"attributes": {
"creationDate": "2026-07-16T04:40:54Z",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "2026-07-16T04:41:54Z",
"eventSource": "sqs.amazonaws.com",
"eventName": "ReceiveMessage",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "52.196.50.243",
"userAgent": "Lambda:SQSaaES, aws-internal/3 aws-sdk-java/1.12.797 Linux/4.14.355-282.733.amzn2.aarch64 OpenJDK_64-Bit_Server_VM/17.0.19+10-LTS java/17.0.19 kotlin/1.8.22 vendor/Amazon.com_Inc. cfg/retry-mode/standard cfg/auth-source#unknown m/P",
"requestParameters": {
"queueUrl": "https://sqs.ap-northeast-1.amazonaws.com/012345678901/test",
"attributeNames": ["All"],
"messageAttributeNames": ["HIDDEN_DUE_TO_SECURITY_REASONS"],
"maxNumberOfMessages": 10,
"waitTimeSeconds": 20
},
"responseElements": null,
"requestID": "6ad4e891-527f-5a53-b98a-8a4331417347",
"eventID": "15a8b88f-e16b-410b-ad9b-81da621ac32b",
"readOnly": true,
"resources": [
{
"accountId": "012345678901",
"type": "AWS::SQS::Queue",
"ARN": "arn:aws:sqs:ap-northeast-1:012345678901:test"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "012345678901",
"eventCategory": "Data",
"tlsDetails": {
"tlsVersion": "TLSv1.3",
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "sqs.ap-northeast-1.amazonaws.com"
}
}
DeleteMessageBatch
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "xxx:awslambda_760_20260716044054891",
"arn": "arn:aws:sts::012345678901:assumed-role/LambdaBasicExecutionRole/awslambda_760_20260716044054891",
"accountId": "012345678901",
"accessKeyId": "xxx",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "xxx",
"arn": "arn:aws:iam::012345678901:role/LambdaBasicExecutionRole",
"accountId": "012345678901",
"userName": "LambdaBasicExecutionRole"
},
"attributes": {
"creationDate": "2026-07-16T04:40:54Z",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "2026-07-16T04:46:25Z",
"eventSource": "sqs.amazonaws.com",
"eventName": "DeleteMessageBatch",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "18.181.85.135",
"userAgent": "Lambda:SQSaaES, aws-internal/3 aws-sdk-java/1.12.797 Linux/4.14.355-282.733.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/17.0.19+10-LTS java/17.0.19 kotlin/1.8.22 vendor/Amazon.com_Inc. cfg/retry-mode/standard cfg/auth-source#unknown m/P",
"requestParameters": {
"queueUrl": "https://sqs.ap-northeast-1.amazonaws.com/012345678901/test",
"entries": [
{
"id": "e5f31a5c-54db-4024-9def-4414de0328d8",
"receiptHandle": "xxx"
}
]
},
"responseElements": {
"successful": [{ "id": "e5f31a5c-54db-4024-9def-4414de0328d8" }]
},
"requestID": "72c7ff43-25c2-54a4-86c6-9d9141a373f7",
"eventID": "0d813c89-3e89-4789-bc6e-4188eefa0890",
"readOnly": false,
"resources": [
{
"accountId": "012345678901",
"type": "AWS::SQS::Queue",
"ARN": "arn:aws:sqs:ap-northeast-1:012345678901:test"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "012345678901",
"eventCategory": "Data",
"tlsDetails": {
"tlsVersion": "TLSv1.3",
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "sqs.ap-northeast-1.amazonaws.com"
}
}
以上より、 Lambda のイベントソースマッピングで SQS からメッセージを取得する際に ReceiveMessage API が実行されていることを確認できました。
また、DeleteMessageBatch API によってメッセージが削除されていることも確認できました。
まとめ
今回は Lambda のイベントソースマッピングで SQS からメッセージを取得する際に ReceiveMessage API が実行されていることを確認してみました。
どなたかの参考になれば幸いです。
参考資料
- Amazon SQS での Lambda の使用 - AWS Lambda
- SQS + Lambda という⾮同期処理 ⻩⾦パターン再⼊⾨ #AWSDevDay / SQS-Lambda-DevDay2022 - Speaker Deck
- ReceiveMessage - Amazon Simple Queue Service
- DeleteMessage - Amazon Simple Queue Service
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました







