🐈
AWS Lambda トラブル解決に向けた原因切り分け方法#1
はじめに
AWS料金を毎日Slackへ通知するアプリケーションを作成
Lambdaで発生したエラーの解決に向けた原因切り分け方法を記録に残す
以下UDEMY教材を使用し、Serverlessアプリ開発を学習中
エラーログ
"errorType": "Error",
"errorMessage": "A request error occurred: connect ECONNREFUSED 127.0.0.1:80",
"trace": [
"Error: A request error occurred: connect ECONNREFUSED 127.0.0.1:80",
" at requestErrorWithOriginal (webpack:///./node_modules/@slack/webhook/dist/errors.js?:26:33)",
" at IncomingWebhook.send (webpack:///./node_modules/@slack/webhook/dist/IncomingWebhook.js?:58:61)",
" at processTicksAndRejections (node:internal/process/task_queues:96:5)",
" at async Runtime.handler (webpack:///./src/costNotifier.js?:9:3)"
]
}
解決に向けた原因切り分け
エラーログからわかること
ECONNREFUSEDエラー
アプリケーションが127.0.0.1 (localhost) の80ポートに接続しようとして、接続が拒否されたことが分かる。通常、ローカルホストへ通信することはないため、Lambdaが正しく送信先を認識できているか確認がすべき。
"errorMessage": "A request error occurred: connect ECONNREFUSED 127.0.0.1:80"
解決に向けたステップ
- Slack webhookのURLが正しくAWS SSMから取得され、使用されていることを確認
Lambda関数の環境変数を確認し、Slack webhookのURLが取得できているか確認
$[ssm:udemy-aws-lamdba_SLACK_Webhook]という値は、実際のSlackのWebhook URLに置き換えるべき変数がそのまま表示されている。この変数が正しく解決されず、デフォルトの127.0.0.1が使われてしまっている可能性が考えられる。
原因
構文エラー
正しい構文
${ssm:udemy-aws-lamdba_SLACK_Webhook}
誤った構文
$[ssm:udemy-aws-lamdba_SLACK_Webhook]
Discussion