AWS Lambdaは、サーバーレスコンピューティングを提供するサービスで、コードを実行するためのインフラ管理が不要です。これにより、自動化スクリプトを手軽に実装し、運用の効率化が図れます。本記事では、Lambdaを活用して簡単な自動化スクリプトを作成する手順を解説します。
Lambdaで自動化できる例
以下のようなタスクをLambdaで自動化できます:
- S3バケットへのファイルアップロード時の通知
- S3バケットなどへアップロードされたデータ(画像など)の加工処理
- DynamoDBテーブルのデータ処理
今回は、「S3バケットに新しいファイルがアップロードされたときに通知メールを送る」スクリプトを例に、手順を説明します。
必要な事前準備
- AWSアカウント作成 AWSアカウントが必要です。公式サイトから登録してください。
- IAMロールの作成 LambdaがS3とSNSにアクセスできるようにするIAMロールを作成します。
- ポリシーには以下を含めます:
- AWSLambdaBasicExecutionRole
- AmazonS3ReadOnlyAccess
- AmazonSNSFullAccess
- ポリシーには以下を含めます:
サンプルとしてLambdaAutomationScriptRoleというIAMロールを作成しました。赤枠部分のIAM Policyの割り当てを間違えないように気をつけてください。
- S3バケットとSNSトピックの作成
- S3バケットにファイルをアップロードします。
- SNSトピックを作成し、通知を受け取るメールアドレスをサブスクライブします。
今回はbucket-automation-script-20250110というS3バケットとTopicAutomationScriptというSNS Topicを作成しました。サブスクリプションにはメールアドレスを設定しています。
Lambda関数の作成
1. 関数の設定
- AWSマネジメントコンソールでLambdaサービスを開きます。
- 「関数の作成」をクリック。
- ランタイムとして「Python 3.13」を選択(作成時期によってバージョンが異なる場合があります)。
- ロールに先ほど作成した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. トリガーの設定
- Lambda関数のトリガーにS3を設定。
画像のように、作成したS3バケットがトリガーに追加されたらOKです。 - 作成したS3バケットの「イベント通知」セクションで、新しいファイルがアップロードされたときにLambda関数を呼び出すよう設定。
作成したS3バケットのページに移動し、プロパティタブを選択します。
送信先が作成したLambda関数になっているイベントのイベントタイプが「全てのオブジェクト作成イベント」になっていれば設定は完了です。
動作確認
- S3バケットにファイルをアップロードします。
作成したS3バケットにtest.txtというファイルをアップロードしてみました。
- 登録したメールアドレスに通知が届くことを確認します。
メールを確認するとこのようなメールが届いていました!
ポイントと注意事項
- コスト管理: Lambdaはリクエスト数と実行時間に応じて課金されるため、トリガーイベントの頻度に注意しましょう。
- エラーハンドリング: 実運用では、エラー処理を含めることで信頼性を向上させることが重要です。
まとめ
AWS Lambdaを使えば、サーバーの管理なしで柔軟な自動化スクリプトを作成できます。今回はS3アップロード通知を例に取り上げましたが、他のAWSサービスとも組み合わせることで多彩なタスクの自動化が可能です。ぜひ一度試してみてください!
コメント