カテゴリ: AWS Lambda 更新日: 2026/05/02

【AWS入門】LambdaとS3の連携方法を完全解説!トリガー設定・ファイル処理の自動化手順

266
【AWS】LambdaとS3の連携方法!トリガー設定・ファイル処理の自動化手順

先生と生徒の会話形式で理解しよう

生徒

「先生、AWS LambdaとS3を連携してファイル処理を自動化したいんですが、どうやればいいか分かりません…」

先生

「LambdaとS3の連携は、イベント駆動の仕組みを使えば簡単にできますよ。特にS3バケットにファイルがアップロードされたときにLambdaを自動で呼び出す設定ができます。」

生徒

「それって、たとえばCSVファイルをアップロードしたら、自動的に処理される感じですか?」

先生

「その通りです。それじゃあ、S3トリガーの設定方法とLambda関数の実装方法を詳しく見ていきましょう。」

1. AWS LambdaとS3の基本的な連携の仕組み

1. AWS LambdaとS3の基本的な連携の仕組み
1. AWS LambdaとS3の基本的な連携の仕組み

AWS LambdaとAmazon S3は、イベント駆動の仕組みを活用して連携できます。たとえば、S3バケットにファイルがアップロードされたタイミングでLambda関数を自動的に起動し、そのファイルを処理するといった流れが実現できます。

この仕組みは、サーバーレスアーキテクチャに最適で、ファイル処理の自動化・画像リサイズ・CSV解析・ログ整形など、さまざまな用途に活用できます。

2. S3バケットにトリガーを設定する手順

2. S3バケットにトリガーを設定する手順
2. S3バケットにトリガーを設定する手順

S3バケットに対してLambdaトリガーを設定するには、以下の手順で行います。

  • AWSマネジメントコンソールでS3を開く
  • 対象のバケットを選択
  • 「プロパティ」タブを開く
  • 「イベント通知」セクションで新しい通知を作成
  • Lambda関数を指定してイベントタイプ(例:PUT)を設定

これで、指定した条件に一致するファイルがアップロードされたときに、Lambda関数がトリガーされるようになります。

3. Lambda関数でS3ファイルを処理する基本コード

3. Lambda関数でS3ファイルを処理する基本コード
3. Lambda関数でS3ファイルを処理する基本コード

以下は、S3にアップロードされたファイルのキー(ファイル名)を取得してログに出力するシンプルなLambda関数の例です。(Node.jsの場合)


const AWS = require('aws-sdk');
const s3 = new AWS.S3();

exports.handler = async (event) => {
    const record = event.Records[0];
    const bucket = record.s3.bucket.name;
    const key = decodeURIComponent(record.s3.object.key.replace(/\+/g, ' '));
    console.log("バケット名:", bucket);
    console.log("ファイルキー:", key);
};

このようにLambda関数のeventオブジェクトには、S3からの通知情報が入っており、アップロードされたファイルの情報が取得できます。

AWSの基本用語や仕組みを、図解でサクッと理解したい人には、 入門の定番書がこちらです。

AWSの基本が全部わかる教科書をAmazonで見る

※ Amazon広告リンク

4. S3とLambda連携時のIAMロール設定

4. S3とLambda連携時のIAMロール設定
4. S3とLambda連携時のIAMロール設定

Lambda関数がS3のファイルにアクセスするには、適切なIAMロールとポリシー設定が必要です。例えば以下のようなS3読み取り権限をロールに付与します。


{
  "Effect": "Allow",
  "Action": [
    "s3:GetObject"
  ],
  "Resource": "arn:aws:s3:::your-bucket-name/*"
}

このポリシーをLambdaの実行ロールに設定することで、ファイルの取得や処理が行えるようになります。

5. LambdaとS3連携の活用例

5. LambdaとS3連携の活用例
5. LambdaとS3連携の活用例

LambdaとS3の連携はさまざまな場面で活用されています。以下はその代表的な例です。

  • アップロードされたCSVファイルを解析してDynamoDBに保存
  • アップロード画像をリサイズし別のS3フォルダへ保存
  • テキストログを整形してAthena用に保存
  • ZIPファイルを展開してコンテンツを保存

このように、S3連携はサーバーレス開発において中心的な役割を担うことが多いです。

6. S3トリガーとLambdaの連携時の注意点

6. S3トリガーとLambdaの連携時の注意点
6. S3トリガーとLambdaの連携時の注意点

トリガー設定やLambda関数の実装時には、いくつかの注意点があります。

  • Lambda関数のタイムアウトを適切に設定する
  • ファイルサイズが大きい場合は分割処理を検討する
  • トリガー設定時のプレフィックス・サフィックスを活用して対象を絞る

例えば、.csvファイルだけを対象にするには、「サフィックス」に「.csv」を指定するとよいでしょう。

7. LambdaとS3を使った処理の自動化でできること

7. LambdaとS3を使った処理の自動化でできること
7. LambdaとS3を使った処理の自動化でできること

LambdaとS3を組み合わせることで、次のような自動処理が実現できます。

  • バッチ処理の自動化
  • 画像や動画の変換処理
  • 分析用ログの整形と保存
  • データの検証と通知

これらの処理をサーバーレスで行えるため、インフラ管理の手間を大幅に減らすことができます。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

AWS LambdaとAmazon S3を連携させる「イベント駆動」とは具体的にどのような仕組みのことですか?

イベント駆動(イベントドリブン)とは、何か特定の「出来事(イベント)」が発生したことをきっかけに、あらかじめ設定しておいたプログラムが自動的に実行される仕組みのことです。今回のケースで言えば、「Amazon S3というストレージサービスにファイルがアップロードされた」という出来事がイベントとなり、それを合図にして「AWS Lambda」というプログラム実行環境が動き出すという流れを指します。人間が手動でボタンを押したり、決まった時間に実行されるように予約したりする必要がなく、ファイルの到着に合わせて即座に処理が開始されるため、非常に効率的で無駄のないシステムを構築できるのが大きな特徴です。
AWS Lambdaの一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク