「Lambda のデッドレターキュー(以下、DLQ) 通知先として、別アカウントの SNS トピックを指定したい —— そんな課題に直面したことはありませんか? 私自身、DLQ 通知をアカウント横断で一元管理する必要があり、クロスアカウント構成を模索していましたが、参考になる情報がほとんどなく、手探りでの検証を余儀なくされました。 そこで本記事では、Lambda 関数の DLQ 通知先として、別 AWS アカウントの SNS トピックを指定する方法を、以下の観点から解説します 同じように、「DLQ 通知の通知先をアカウント横断で 1 つの SNS トピックに集約したい」と考えている方の参考になれば幸いです。 Lambda 関数で発生したエラーを、別アカウントにある SNS トピックへ送信し、DLQ 通知を一元管理する構成です。 Lambda と SNS トピックは、いずれも事前に作成済みの前提とします。 設定の流れは以下の通りです。 ① SNS トピック側(アカウント B)に、Lambda 側(アカウント A)からの sns:Publish を許可するポリシーを追加 ③ CLI で update-function-configuration を実行し、DLQ 通知先を設定 SNS トピックに、アカウント A の Lambda 関数からの Publish を許可するアクセスポリシーを追加します。 既存のアクセスポリシーに以下のポリシー内容を追記しました。 この追記した権限は、以下の AWS re:Post の内容を参考にしています。
※参考:Cross-Account Dead-Letter Queue for Lambda(2025年10月20日アクセス) Lambda 関数にアタッチしている IAM ロールに、SNS トピックへの sns:Publish 権限を追加します。 マネジメントコンソールでは、同一アカウントの SNS トピックしか選択できないため、CLI を使って設定を行います。 なお、以下の DLQ 通知先の SNS トピックを選択するプルダウンには、ARN を直接入力することはできません。
Lambda が存在する AWS アカウント A 側の AWS CloudShell などで以下のコマンドを実行します。 設定が正しく反映されると、Lambda 関数の非同期呼び出し設定に通知先として指定した SNS トピックが登録されます。 Lambda の DLQ は非同期呼び出し時のみ発火します。 動作確認のため、Lambda 関数をエラーになるように修正し、CloudShell から非同期で呼び出します。 実行結果は以下の通りで、ステータスコード 202 が返されました。 Event呼び出しタイプの場合、呼び出しのアクションが成功すると、HTTP ステータスコード 202 が返ります。 HTTP ステータスコードは、成功したリクエストの 200 の範囲内にあります。RequestResponse呼び出しタイプの場合、ステータスコードは 200 です。Event呼び出しタイプの場合、ステータスコードは 202 です。 ※引用:AWS公式ドキュメント「AWS Lambda API リファレンス」(2025年10月19日アクセス)URL:https://docs.aws.amazon.com/ja_jp/lambda/latest/api/API_Invoke.html
その後、AWS アカウント B の SNS トピック経由で、以下の通り DLQ 通知を正常に受信できたことを確認できました。 本記事では、Lambda 関数の DLQ 通知先として、別アカウントの SNS トピックを指定する方法について解説しました。 アカウントをまたいで DLQ 通知を一元管理したい方の参考になれば幸いです。
はじめに(目的・背景)
でもその方法に関する情報が少なく、マネジメントコンソールでもそれらしい設定項目が見当たらない...」
Lambda の DLQ 通知をクロスアカウントで設定する方法
構成概要

設定手順
1. SNS トピック側(アカウント B):ポリシーで Lambda からの Publish を許可
{
"Sid": "cross-account-lambda-access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<AWSアカウントAのアカウントID>:root"
},
"Action": "sns:Publish",
"Resource": "arn:aws:sns:<リージョン>:<AWSアカウントBのアカウントID>:<SNSトピック名>"
}

2. Lambda 側(アカウント A):実行ロールに SNS への Publish 権限を付与
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:<リージョン>:<AWSアカウントBのアカウントID>:<SNSトピック名>"
}
]
}
3. Lambda 側(アカウント A):DLQ 通知先を CLI で設定

aws lambda update-function-configuration \
--function-name <Lambda 関数名> \
--dead-letter-config TargetArn=arn:aws:sns:<リージョン>:<AWSアカウントBのアカウントID>:<トピック名>

動作確認
aws lambda invoke \
--function-name <Lambda 関数名> \
--invocation-type Event \
--cli-binary-format raw-in-base64-out \
--payload '{"errorMessage":"Simulate DLQ notification"}' event.json


まとめ