【AWS基本の”キ”:vol3】AWS Lambdaで簡単な自動化スクリプトを作ってみよう

AWS Lambdaは、サーバーレスコンピューティングを提供するサービスで、コードを実行するためのインフラ管理が不要です。これにより、自動化スクリプトを手軽に実装し、運用の効率化が図れます。本記事では、Lambdaを活用して簡単な自動化スクリプトを作成する手順を解説します。

Lambdaで自動化できる例

以下のようなタスクをLambdaで自動化できます:

  • S3バケットへのファイルアップロード時の通知
  • S3バケットなどへアップロードされたデータ(画像など)の加工処理
  • DynamoDBテーブルのデータ処理

今回は、「S3バケットに新しいファイルがアップロードされたときに通知メールを送る」スクリプトを例に、手順を説明します。

必要な事前準備

  1. AWSアカウント作成 AWSアカウントが必要です。公式サイトから登録してください。
  2. IAMロールの作成 LambdaがS3とSNSにアクセスできるようにするIAMロールを作成します。
    • ポリシーには以下を含めます:
      • AWSLambdaBasicExecutionRole
      • AmazonS3ReadOnlyAccess
      • AmazonSNSFullAccess

サンプルとしてLambdaAutomationScriptRoleというIAMロールを作成しました。赤枠部分のIAM Policyの割り当てを間違えないように気をつけてください。

  1. S3バケットとSNSトピックの作成
    • S3バケットにファイルをアップロードします。
    • SNSトピックを作成し、通知を受け取るメールアドレスをサブスクライブします。

今回はbucket-automation-script-20250110というS3バケットとTopicAutomationScriptというSNS Topicを作成しました。サブスクリプションにはメールアドレスを設定しています。

Lambda関数の作成

1. 関数の設定

  1. AWSマネジメントコンソールでLambdaサービスを開きます。
  2. 「関数の作成」をクリック。
  3. ランタイムとして「Python 3.13」を選択(作成時期によってバージョンが異なる場合があります)。
  4. ロールに先ほど作成したIAMロールを選択。

Lambdaの設定画面はこんな感じです。アーキテクチャはデフォルトのx86_64を選択しています。特にこだわりがなければデフォルトのx86_64で問題ありません。

2. コードの記述

以下は、S3イベントをトリガーにSNS通知を送るPythonコードの例です。

import json
import boto3
sns_client = boto3.client('sns')
def lambda_handler(event, context):
    # S3イベントから情報を取得
    bucket_name = event['Records'][0]['s3']['bucket']['name']
    file_name = event['Records'][0]['s3']['object']['key']

    # メッセージ内容を作成
    message = f"New file uploaded to S3 bucket: {bucket_name}/{file_name}"
    subject = "S3 Upload Notification"

    # SNS通知を送信
    response = sns_client.publish(
        TopicArn='<作成したSNS TopicのARN>',
        Message=message,
        Subject=subject
    )

    print(f"Notification sent: {response}")
    return {
        'statusCode': 200,
        'body': json.dumps('Notification sent successfully!')
    }

サンプルのPythonコードを使用される場合はご自身で作成されたSNSトピックARNを入力することを忘れないように気をつけてください。コードの作成後は忘れずにデプロイしましょう。

3. トリガーの設定

  1. Lambda関数のトリガーにS3を設定。

    画像のように、作成したS3バケットがトリガーに追加されたらOKです。
  2. 作成したS3バケットの「イベント通知」セクションで、新しいファイルがアップロードされたときにLambda関数を呼び出すよう設定。
    作成したS3バケットのページに移動し、プロパティタブを選択します。

    送信先が作成したLambda関数になっているイベントのイベントタイプが「全てのオブジェクト作成イベント」になっていれば設定は完了です。

動作確認

  1. S3バケットにファイルをアップロードします。

作成したS3バケットにtest.txtというファイルをアップロードしてみました。

  1. 登録したメールアドレスに通知が届くことを確認します。

メールを確認するとこのようなメールが届いていました!

ポイントと注意事項

  • コスト管理: Lambdaはリクエスト数と実行時間に応じて課金されるため、トリガーイベントの頻度に注意しましょう。
  • エラーハンドリング: 実運用では、エラー処理を含めることで信頼性を向上させることが重要です。

まとめ

AWS Lambdaを使えば、サーバーの管理なしで柔軟な自動化スクリプトを作成できます。今回はS3アップロード通知を例に取り上げましたが、他のAWSサービスとも組み合わせることで多彩なタスクの自動化が可能です。ぜひ一度試してみてください!

コメント

タイトルとURLをコピーしました