Table of Contents
はじめに
S3バケットにファイルがアップロードされたら自動的に処理を行い、最終的にメールでファイルを送信する仕組みをつくってみました。
事前準備
使用するサービス
- Amazon S3:ファイル格納用
- AWS Glue:ファイル前処理やETL用(必要な場合)
- Amazon EventBridge:イベントトリガー
- AWS Lambda:メール送信ロジック(ファイル添付以外の単純なメール送信はAmazon SESのみでも可能)
- Amazon SES:メール送信
IAMロールの準備
Lambda に対して以下のアクセス許可があるロールを作成(追加のロールが必要な場合もある)
- s3:GetObject
- ses:SendEmail
- logs:*
Glueに対して以下のアクセス許可があるロールを作成(追加のロールが必要な場合もある)
- Glue に S3 読み取り・書き込みのパーミッション
S3バケットの作成と設定
- AWSコンソールからS3バケットを作成。(例:
my-upload-bucket
) - バケットポリシーで、GlueとLambdaが読み取れるように設定。
AWS Glue ジョブの作成(任意)
ファイルの前処理(CSVのクレンジングなど)が不費用な場合は読み飛ばしてください。
- Glueコンソールでジョブを作成。
- ソースとしてS3を指定。
- 必要な変換処理(例:CSV→JSON)を記述。
- 出力先として別のS3バケット or 同じバケットを指定。
EventBridge の設定(イベントルール)
- EventBridge コンソールにアクセス。
- 新しいルールを作成。
- イベントソース: S3
- パターン:オブジェクト作成(例:PutObject)
- 対象バケット:my-upload-bucket
- ターゲットに Lambda 関数を指定。
Lambda 関数の作成
- Lambda コンソールで新しい関数を作成。(例:
send-email-function
) - 環境変数(任意、直接コードに書き込み可能)
- RECIPIENT_EMAIL:送信先メールアドレス
- SENDER_EMAIL:SESで認証済みの送信元メールアドレス
- Lambdaコード作成(コードは省略)
SES(Simple Email Service)の設定
- メール認証(Verify Email Address)
- SENDER_EMAIL と RECIPIENT_EMAIL を SESで認証。
- サンドボックス解除(本番利用時)
- SESサポートに申請して「Productionモード」へ移行。
動作確認手順
- my-upload-bucket にファイルをアップロード。
- EventBridge がトリガーされ、Lambda 実行。
- SES を通じてメールが送信される。
最後に
Glueジョブが不要な場合、EventBridge → Lambda だけでも十分構築可能です。定期的にS3のファイルをレポート送信したい場合などにこの自動化がおすすめです。