0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

scpコマンドによるS3ファイル転送時にLambdaが実行されない問題を解決する方法

Last updated at Posted at 2025-04-16

目次

  1. はじめに
  2. 登場するサービス、OS
  3. 用語解説
  4. 作業の目的
  5. 誤った作業
  6. エラー発生
  7. 解決方法
  8. 参考文献

はじめに

S3バケットにファイルをアップロードした際に、自動的にLambdaを実行する仕組みを作ろうと考え、S3バケットをEC2にマウントして毎晩ローカルサーバからEC2経由でファイルを転送するプロセスを構築しました。
しかし、scpコマンドでファイルをコピーした際にはS3イベント通知が実行されず、Lambdaが動作しないという問題に直面しました。
この記事では、この問題を解決するために行った方法について説明します。

登場するサービス、OS

  • ローカルサーバ: Windows Server
  • EC2インスタンス: Amazon Linux
  • S3: オブジェクトストレージサービス
  • Lambda: サーバーレスコンピューティングサービス

用語解説

  • scpコマンド: ファイルを安全にコピーするためのコマンド。特にリモートサーバー間で使用されます。
  • S3イベント通知: S3バケット内で指定されたイベント(ファイルのアップロードなど)が発生した際に、通知やトリガーを発行する機能。
  • Lambda: AWSが提供するサーバーレスコンピューティングサービス。イベント駆動型でコードを実行します。

作業の目的

毎晩、ローカルサーバからEC2経由でS3にファイルを自動的に転送し、その際にS3イベント通知を使ってLambdaを実行することで、ファイルのバックアップ状況を確認するシステムを構築することを目指しました。

誤った作業

最初に試みたのは、scpコマンドを使ってファイルをS3バケットにコピーする方法です。
しかし、この方法では、S3イベント通知が実行されず、Lambdaが起動しないという問題が発生しました。

エラー発生

S3バケットがEC2にマウントされている環境で、scpコマンドによるファイル転送ではS3イベント通知が実行されないことが判明しました。
これにより、S3にファイルを配置しても、Lambdaが自動的に実行されないというエラーが発生しました。

イメージ図
S3夜間バックアップ_qiira用_lambda起動前.drawio.png

解決方法

この問題を解決するために、以下の手順を取りました。

  1. scpコマンドでファイル転送を実行: まずは、必要なファイルをscpコマンドでS3バケットにコピーします。
  2. AWS CLIコマンドでトリガーファイルを作成: ファイル転送が完了したら、AWS CLIを使って特定のテキストファイル(例: done.txt)をS3バケットに作成します。
  3. AWS CLIコマンドでトリガーファイルを削除: done.txtが作成された後、一定時間内にこのファイルを削除します。

これらのステップをbatファイルに組み込み、タスクスケジューラーを使用して毎晩定期的に実行するように設定しました。
これにより、ファイル転送後にS3イベント通知が実行され、Lambdaが正しく実行されることを確認しました。

イメージ図
S3夜間バックアップ_qiira用_lambda起動後.drawio.png

重要なポイント

  • scpコマンドではS3イベント通知が実行されないことが最大のポイントです。
    これにより、Lambdaの自動実行が行われないため、AWS CLIを補完的に使用しました。
  • AWS CLIで作成したファイルが大量のイベントを実行しないようにするため、必要最小限のファイル操作のみを行い、不要なLambdaの実行を防止しました。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?