AWS LambdaでS3へのファイルアップロードを検知しSlackに通知してみた
こんにちは!前越です。
皆さん、S3にファイルがアップロードされたことをリアルタイムで知りたいと思ったことはありませんか?
今回は、AWS Lambdaを使ってAmazon S3へのファイルアップロードを検知し、Slackにリアルタイムで通知を送る仕組みを作ってみました!
事前準備
必要なもの
- AWSアカウント
- Slackワークスペース
- Slackで通知を受け取る チャンネル と Webhook URL
やってみる
1. SlackのWebhook URLを取得
Slackのワークスペースで、通知を受け取りたいチャンネルを用意します。
Slack APIサイトからアプリを作成して、Incoming Webhookを有効化し Webhook URLを取得します。
Webhook URL は以下のような形式です。
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
2. S3バケットの作成
S3 サービスにアクセスし 「バケットを作成」 します。
バケット名を入力し、必要に応じてリージョンやオプションを設定します。
例:my-s3-event-bucket-maegoshi
「作成」 をクリックしてバケットを作成します。
3. Lambda関数の作成
S3のイベントを受け取って、Slackに通知を送るLambda関数を作成します。
Lambdaサービスにアクセスし、「関数の作成」 をクリックします。
関数の詳細を設定します。
関数名:NotifyS3UploadToSlack
ランタイム:Python 3.12
Lambdaの関数コードを下記のようにします。
Lambda
import json
import urllib3
import os
http = urllib3.PoolManager()
def lambda_handler(event, context):
slack_url = os.environ['SLACK_WEBHOOK_URL']
# S3のイベント情報を取得
bucket_name = event['Records'][0]['s3']['bucket']['name']
object_key = event['Records'][0]['s3']['object']['key']
message = f"S3バケット '{bucket_name}' に新しいオブジェクトがアップロードされました!!!!!\nファイル名: {object_key}"
encoded_data = json.dumps({"text": message}).encode('utf-8')
response = http.request(
'POST',
slack_url,
body=encoded_data,
headers={'Content-Type': 'application/json'}
)
print(f"Slackへの送信結果: {response.status}")
return {
'statusCode': response.status,
'body': response.data.decode('utf-8')
}
環境変数 を設定します。
キー:SLACK_WEBHOOK_URL
値:先ほど取得したSlackのWebhook URL
4. Lambdaトリガーの設定
Lambda関数がS3のイベントでトリガーされるように設定します。
Lambda関数の詳細ページで、「トリガーを追加」 をクリックします。
トリガーの設定
- トリガーの種類:S3
- バケット:my-s3-event-bucket-maegoshi(作成したバケット)
- イベントタイプ:オブジェクトの作成(すべて)
- プレフィックスやサフィックス:必要に応じて指定 (今回は指定なし)
動かしてみる
実際にLambdaのトリガー先の S3 にtest.txtをファイルをアップロードしてみます!
ドキドキっ!!!
Slackを確認・・・
無事通知できてました!
Slackに通知が届き、AWS LambdaとAmazon S3を利用して、バケットへのファイルアップロードをリアルタイムで受け取ることができました!
まとめ
今回は、AWS Lambda を使用して、Amazon S3 へのファイルアップロードを検知し Slack に通知する仕組みを構築しました。
これにより、ファイルアップロードなどの重要なイベントを即座にキャッチし、迅速に対応することが可能になります。
ぜひ皆さんも試してみてください!
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新ITテクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。