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

AWS S3イベント通知を設定してLambdaをトリガーする方法を初心者向けに解説!

AWS S3イベント通知を設定してLambdaをトリガーする方法
AWS S3イベント通知を設定してLambdaをトリガーする方法

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

生徒

「AWSエススリーのバケツにファイルを入れたときに、自動で何か動かすことってできるんですか?」

先生

「はい、できますよ。S3イベント通知という仕組みを使えば、ファイルが追加されたときにLambda(ラムダ)というサービスを動かすことができます。」

生徒

「ラムダってなんですか?あと、イベント通知ってどうやって設定するんですか?」

先生

「では、Lambda(ラムダ)の簡単な意味と、S3(エススリー)でイベント通知を設定する手順をやさしく説明していきますね!」

1. AWS S3(エススリー)とは?

1. AWS S3(エススリー)とは?
1. AWS S3(エススリー)とは?

AWS(エーダブリューエス)のS3は、正式には「Amazon Simple Storage Service(アマゾン・シンプル・ストレージ・サービス)」といいます。読み方はエススリーです。簡単にいうと、インターネット上にファイルを保存するためのクラウドストレージです。

S3では、ファイルを保存する場所のことを「バケット(Bucket)」と呼びます。画像やPDF、動画、テキストファイルなどを保存できます。

2. イベント通知(Event Notification)とは?

2. イベント通知(Event Notification)とは?
2. イベント通知(Event Notification)とは?

イベント通知(読み方:イベントツウチ)とは、S3のバケットで何かの「動き(イベント)」があったときに、それを別のサービスに「お知らせ」する仕組みです。

例えば、バケットにファイルがアップロードされた(追加された)とき、削除されたとき、などのイベントがあります。このような動きをトリガー(きっかけ)として、他のAWSサービスを動かすことができます。

3. Lambda(ラムダ)とは?

3. Lambda(ラムダ)とは?
3. Lambda(ラムダ)とは?

AWS Lambda(エーダブリューエス・ラムダ)は、サーバーを用意しなくてもプログラムを実行できるサービスです。読み方はラムダです。

Lambdaは、「関数(かんすう)」という単位で動作します。たとえば、「ファイルがアップロードされたらログを出す」「画像のサイズを変更する」などの処理を、Lambdaで自動的に実行できます。

4. S3イベント通知でLambdaをトリガーする流れ

4. S3イベント通知でLambdaをトリガーする流れ
4. S3イベント通知でLambdaをトリガーする流れ

ここでは、S3バケットにファイルが追加されたときに、Lambda関数が自動的に動く仕組みを作る手順を説明します。

  • ① S3バケットを作成する
  • ② Lambda関数を作成する
  • ③ Lambda関数に必要なアクセス権限(IAMロール)を設定する
  • ④ S3のイベント通知を設定して、Lambdaをトリガーにする

5. 実際の設定手順(初心者向け)

5. 実際の設定手順(初心者向け)
5. 実際の設定手順(初心者向け)

以下に、パソコンが苦手な人でもわかるように1つずつ手順を書きます。

① S3バケットの作成

AWSマネジメントコンソールにログインして、「S3」と検索します。そして「バケットを作成」ボタンを押し、バケット名(例:my-s3-lambda-bucket)を入力して、そのまま作成します。

② Lambda関数の作成

次に、同じくコンソールで「Lambda」と検索し、「関数の作成」を選びます。関数名は自由ですが、例としてs3TriggerFunctionなどにしましょう。

ランタイム(実行環境)は「Python(パイソン)3.12」や「Node.js(ノードジェイエス)18.x」などを選べます。ここではPythonを選んだとします。

③ Lambdaのアクセス権限を設定

Lambda関数には、S3からの通知を受け取るための「IAMロール(読み方:アイエーエム・ロール)」という権限設定が必要です。作成時に自動で作られますが、足りないときは「AmazonS3FullAccess(アマゾン・エススリー・フルアクセス)」などのポリシーを付け加えてください。

④ S3バケットにイベント通知を追加

作成したS3バケットに戻り、「プロパティ」タブを開きます。下の方に「イベント通知」というセクションがあります。

「通知を追加」をクリックし、名前(例:s3ToLambda)を入力します。「イベントタイプ」はPUT(ファイルのアップロード)を選びます。

通知先に「Lambda関数」を選び、先ほど作った関数名を選択してください。

最後に「変更の保存」をクリックすれば設定完了です。

6. 動作テストのやり方

6. 動作テストのやり方
6. 動作テストのやり方

ここまで設定できたら、試しにS3バケットに画像やテキストファイルをアップロードしてみましょう。Lambda関数がトリガーされ、自動的にプログラムが実行されます。

Lambdaのログは「CloudWatch(クラウドウォッチ)」というサービスに記録されます。そこを見れば、ちゃんと動作したかどうか確認できます。

7. よくあるトラブルと対処法

7. よくあるトラブルと対処法
7. よくあるトラブルと対処法
  • Lambdaが呼び出されない: S3イベント通知の設定ミスが多いです。関数名が正しいか、通知イベントがPUTになっているか確認しましょう。
  • アクセス権限エラー: LambdaにS3へのアクセス許可があるか確認してください。IAMポリシーを見直すと解決します。

まとめ

まとめ
まとめ

今回は、AWS S3イベント通知を使ってLambda関数を自動的にトリガーする仕組みについて、初心者でも分かるように丁寧に解説してきました。
特に注目すべきポイントは、S3バケットでファイルの追加(アップロード)などのイベントが発生したときに、自動でサーバーレスのLambda関数が実行されるという点です。
この組み合わせにより、例えば画像の自動リサイズ、ログの記録、データの自動加工など、さまざまな自動処理が可能になります。

S3とLambdaの組み合わせでできること

初心者が最初につまづきやすいIAMロールの設定イベント通知の条件指定も、ひとつずつステップを追えば決して難しいものではありません。
実際のシステム運用では、ログ記録や監視にも注意を払い、CloudWatchとの連携でログ確認を行うことも重要です。

S3イベント通知のサンプル構成まとめ

以下に、実際の構成例を簡単にまとめておきます:


{
  "LambdaFunctionConfigurations": [
    {
      "LambdaFunctionArn": "arn:aws:lambda:ap-northeast-1:123456789012:function:s3TriggerFunction",
      "Events": ["s3:ObjectCreated:Put"],
      "Filter": {
        "Key": {
          "FilterRules": [
            {
              "Name": "suffix",
              "Value": ".jpg"
            }
          ]
        }
      }
    }
  ]
}

このように、画像(.jpg)がアップロードされたときだけLambda関数を動かすなど、条件付きのトリガーも柔軟に設定可能です。
このフィルタリング機能を使うことで、不要なイベント処理を減らし、コストやリソースの最適化にもつながります。

Lambda関数内のサンプルコード(Python)


import json

def lambda_handler(event, context):
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key']
        print(f"バケット名: {bucket}")
        print(f"ファイルキー: {key}")
    return {
        'statusCode': 200,
        'body': json.dumps('S3アップロードイベントを受信しました')
    }

Lambda関数内では、このようにeventオブジェクトからS3バケット名やファイル名を取り出して処理するのが基本です。
初心者にとっては、最初にログを出すだけでも十分な学習体験になります。

今後の発展的な活用例

  • 画像アップロード → 自動でサムネイル画像を生成し、別のS3バケットに保存
  • PDFファイルをアップロード → テキスト抽出して全文検索用に保存
  • 動画ファイルアップロード → 自動でSNS向けの短縮動画を生成
  • CSVアップロード → 自動でDynamoDBやRDSにデータを保存

このように、AWSのサーバーレスアーキテクチャを活用すれば、コード量を最小限にしつつ、信頼性の高い処理が可能になります。
初心者の方も、まずは基本の設定からはじめて、少しずつ自動化の幅を広げていくのがおすすめです。

先生と生徒の振り返り会話

生徒

「今日の内容で、S3にファイルを入れたら自動でLambdaが動くってことは、すごく便利だと思いました!」

先生

「そうですね。手作業を減らして自動化できる点がクラウドの魅力の一つです。Lambdaはサーバーを持たなくても動くので、運用も楽になります。」

生徒

「IAMロールの設定がちょっと難しそうでしたけど、具体例を見たら分かりやすくなりました。」

先生

「最初は混乱しますが、実際に手を動かしてみると理解が深まりますよ。失敗してもログを見れば原因を特定できますから、CloudWatchもぜひ活用してみてくださいね。」

生徒

「はい!今度は画像をアップしたらサムネイルを自動で作る処理にチャレンジしてみたいです!」

先生

「いいですね!その流れで画像処理ライブラリや別のS3バケットの使い方も学べますよ。どんどんステップアップしていきましょう!」

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

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

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

AWSのS3って無料で使えるんですか?初心者でも使える料金プランがあるか知りたいです。

はい、AWS S3には無料利用枠があります。月に5GBの標準ストレージと、一定数のリクエストが無料で使えます。初心者がS3イベント通知やLambda連携を学ぶには十分な範囲です。

S3のバケットって何ですか?フォルダやディレクトリとは違うんですか?

S3のバケットとは、クラウド上のファイル保管場所のことです。通常のパソコンのフォルダのようなものですが、クラウドストレージ特有の構造を持っています。
カテゴリの一覧へ
新着記事
New1
シェルとターミナル基礎
Linuxのシェルとは?初心者でもわかる役割と基本を完全解説
New3
Linux ディストリビューション
Linuxディストリビューションの選び方完全ガイド!初心者でも失敗しない選択基準とおすすめの選び方
人気記事
No.1
Java&Spring記事人気No1
S3(オブジェクトストレージ)
AWS S3の料金体系をわかりやすく解説
No.2
Java&Spring記事人気No2
AWS 基本
AWSの公式料金計算ツール(Pricing Calculator)の使い方
No.3
Java&Spring記事人気No3
S3(オブジェクトストレージ)
AWS S3イベント通知を設定してLambdaをトリガーする方法を初心者向けに解説!
No.4
Java&Spring記事人気No4
VPC(プライベートクラウド)
AWS VPCでNATゲートウェイを構成してプライベートサブネットから外部アクセスする方法を初心者向けに解説!
No.5
Java&Spring記事人気No5
ELB(ロードバランサー)
AWS ELBでターゲットグループを設定する方法を初心者向けに解説!
No.6
Java&Spring記事人気No6
Direct Connect(専用線接続)
AWS Direct Connect Gatewayの使い方と制限事項を初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
Linux 基礎概要
Linuxとは何か?初心者向けに意味・特徴をわかりやすく解説
No.8
Java&Spring記事人気No8
RDS(データベース)
AWS RDSのスケーリング(インスタンスサイズ変更)を初心者向けにやさしく解説!