AWS S3にテストウイルスのファイルをLambdaでアップする


はじめに

EICAR のテストウイルスが HTTP でダウンロードできなくなってしまったので、Amazon S3 の静的ウェブサイトを使ってテストウイルスのダウンロード環境を作ってみました。

Amazon S3 の設定

バケットを作成して静的ウェブサイトの設定を行います。
詳細は下記チュートリアルや他サイトを参照ください。

Lambda の設定

言語は Python 3.8 で作成。

下記コードを保存 → Deploy → Test 実行 で S3 にファイルがアップされます。
トリガなど特に設定する必要はありません。

lambda_function.py
import json
import boto3
import os

def lambda_handler(event, context):
    # ローカルにテストファイル作成
    fp = open('/tmp/eicar.com', 'w')

    # EICARテストファイルのアスキー文字列を書き込みます
    fp.write('X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*')

    # ファイルのクローズ。
    fp.close()

    # S3アップロード
    s3 = boto3.resource('s3')
    s3.meta.client.upload_file('/tmp/eicar.com', '[S3バケット名]', 'eicar.com')

    # ローカルファイル削除
    os.remove('/tmp/eicar.com')

動作確認

ブラウザ等から以下のURLにアクセスしてファイルがダウンロードできることを確認します。

http://[S3バケット名].s3-website-ap-northeast-1.amazonaws.com/eicar.com

※上記リージョンは東京ですので環境に合わせてURLを調整ください

うまくいかない場合は、S3のバケット内にファイルがアップされているか確認してください。

最後に

今回 Lambda を使いましたが、一度きりの作業で他システムからの連携もありませんので、あえて Lambda でやるメリットはあまりなかったかもしれません。
まあ環境を作って壊してを繰り返すときは Lambda にコードが残っていれば、再作成は容易いかなと思います。

参考サイト
https://rioner2525.hatenablog.com/entry/2019/07/25/185907
https://www.eicar.org/?page_id=3950