クラウド工房 Powered by Amazon Web Services

  • 03-3342-9620
  • 受付時間 9:00~18:00 定休日:土日祝

クラウド工房 Powered by Amazon Web Services

menu
9:00~18:00(平日)

「AWS Lambda for Python」で署名付きURLを自動生成する

「AWS Lambda for Python」で署名付きURLを自動生成する

こんにちは。クラウドコンサルティング事業部の関口です。

今回は、S3へファイルをアップロードしたタイミングで「AWS Lambda」を使って署名付きURLを自動生成する方法です。
もう既に利用されていると思うので今さらな感じなのかもしれませんが、なかなか設定方法がまとまったものが無かったのでブログに掲載したいと思います。
(ほぼ私の備忘録です。)

やりたい事

① S3にファイルをアップロードする
② 「AWS Lambda」で署名付きURLが生成
③ 「AWS SNS」で生成した署名付きURLをメール通知
④ メール通知を受けたユーザがファイルをダウンロードする
⑤ 一定時間経過後にダウンロード不可にする
generate_presigned_url1

前提条件

今回は、以下は準備されていることを前提とします。

1. ファイルアップロード先のS3バケット
2. AWS Lambda用のIAM Role
3. AWS SNS Topic・Subscriptions

また、Lambdaに設定するコードは、Pythonで作成しました。

AWS Lambdaの設定

「AWS Lambda」の設定を行っていきます。

1.AWSマネジメントコンソールにログインし、AWS Lambdaの設定画面の「Get Start Now」を押下します。

(既に別のLambda functionがある場合は「Create a Lambda function」を押下します。)
blog48_eyecatch

2.今回はBlueprintを使わない為、スキップします。

generate_presigned_url2

3.Triggerを設定します。“Bucket”名と“Event Type”を選択し、「Next」を押下します。

(S3にファイルがアップロードされたタイミングでLambdaを実行したいので、“”Event Type“を「Put」にしています。)
generate_presigned_url3

4.“Configure function”“で実行するスクリプト等の設定をして、「Next」を押下します。

■Configure function
・Name: ※適当な名前を設定
・Description: ※説明文を入力。
・Runtime: ※“Python2.7”を選択する。
■Lambda function code
以下の様なコードを設定しました。ダウンロード可能な期限は10分としました。

■Lambda function handler and role
・Handler:lambda_function.lambda_handler ※デフォルトのまま
・Role: ※作成したRoleを選択する
■Advanced settings
・Memory (MB):128MB ※といあえずデフォルトの最小値を設定
・Timeout:30sec ※適当な値に調整

5.設定内容を確認し、「Create function」を押下します。

generate_presigned_url4

テスト実行

AWS Lambdaの設定が完了したので、動作確認を行ってみます。

1.”Lambda” -> “Functions” -> <設定した“Lamda Function”名>へ移動します。

2.”Action” -> “Configure test event”へ移動し、Eventを発生させるテストコードを作成します。

以下の様なコードを設定しました。

3.テストコード入力後、「Save and test」を押下し、テスト実行します。

4.「Execution result succeeded」と表示されれば成功です。

blog48_009

また、問題なければバックアップ完了のメールもAWS SNSで設定したメール送信先に届いていると思います。
generate_presigned_url5

S3にファイルをアップロードしてみる

では、実際にS3のバケットにファイルをアップロードしてみて署名付きURLが生成される事を確認します。

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

generate_presigned_url6

2.署名付きURLが発行され、メールで通知されました。

generate_presigned_url7

3.URLをクリックすると、無事にダウンロードできました。

generate_presigned_url08

4.10分経過後に再度URLをクリックするとアクセスが拒否されています。

generate_presigned_url9

以上です。それではまた次回。

  • このエントリーをはてなブックマークに追加

関口 直行

株式会社システムサポート 東京支社 クラウドコンサルティング事業部所属
AWS Summit Tokyoで事例公開された案件などのプロジェクトリーダーを担当
AWS認定ソリューションアーキテクト-プロフェッショナルレベル

株式会社システムサポート 東京支社 クラウドコンサルティング事業部所属
AWS Summit Tokyoで事例公開された案件などのプロジェクトリーダーを担当
AWS認定ソリューションアーキテクト-プロフェッショナルレベル


ニュース&ブログ

トピックス

∧