AWS Lambdaを使用してS3上のファイルを圧縮する方法


  1. AWS Management Consoleにログインし、Lambdaサービスを開きます。

  2. 「関数の作成」をクリックして新しいLambda関数を作成します。

  3. 関数の設定画面で、適切な関数名とランタイム(Python、Node.jsなど)を選択します。

  4. 「アクセス権限」セクションで、適切なロールを選択し、必要な権限を付与します。S3へのアクセス権限が必要です。

  5. 関数コードの編集画面で、以下のコードを使用してS3上のファイルを圧縮します。

import boto3
import zipfile
def lambda_handler(event, context):
    s3 = boto3.resource('s3')
    bucket_name = 'your_bucket_name'
    key = 'path/to/your/file'
    # Zipファイルの作成
    zip_file_name = 'compressed.zip'
    with zipfile.ZipFile(zip_file_name, 'w') as zip_file:
        zip_file.write(key)
    # S3に圧縮ファイルをアップロード
    s3.meta.client.upload_file(zip_file_name, bucket_name, zip_file_name)
    return {
        'statusCode': 200,
        'body': 'ファイルの圧縮とS3へのアップロードが完了しました。'
    }
  1. コード内のyour_bucket_namepath/to/your/fileを適切なバケット名とファイルパスに置き換えます。

  2. ファンクションコードの下部にある「デプロイ」ボタンをクリックして関数をデプロイします。

  3. Lambda関数のトリガーを設定します。S3バケット内のオブジェクトが作成または更新された際にLambda関数がトリガーされるように設定します。

これで、S3上のファイルが自動的に圧縮され、圧縮ファイルが同じバケットにアップロードされるようになります。この方法を使用すると、ファイルのバックアップや圧縮が簡単に行えます。