AWSPython

PythonのBoto3を使ってS3の署名付き(期限付き)URLを発行する

AWS

PythonのS3へローカルのファイルをアップロードする方法についてのメモとなります。 boto3は便利ですね。

1. 署名付きURLとは

署名付きURLとは、S3バケットへのアクセス権限を持たないユーザーに対して一時的なアクセスを許可するために発行する一時的なURLです。

プライベートなS3バケットにプライベートなファイルを格納している場合でも、署名付きURLを発行することでURL経由でファイルを一時的に共有することができます。

有効期間を設定することで例えば5分間だけアクセス可能とする、などの制御ができます。

2. 前提条件

  • Pythonがインストールされている
  • AWS CLIの設定が完了している

3. S3へファイルをアップする

以下のスクリプトで「sample-s3-bucket」バケットにローカルファイル(./image/sample_file.txt)をアップロードできます。簡単ですね。

import boto3

bucket_name = "sample-s3-bucket"
local_file = "./image/sample_file.txt"
bucket_file = "file/sample_file.txt"

s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket_name)
print(local_file --> bucket_file)
bucket.upload_file(local_file, bucket_file)

4. S3の署名付きURLを作成する

さらに先ほどアップしたファイルの署名付きURLを作成します。

今回は有効期限を120秒としています。

presigned_url = s3.generate_presigned_url(
    ClientMethod='get_object',
    Params={'Bucket': bucket_name, 'Key': bucket_file},
    ExpiresIn=120,
    HttpMethod='GET')

print(presigned_url)

うまくいくと以下のような感じのURLが表示されます。 https://sample-s3-bucket.s3.amazonaws.com/file/sample_file.txt?AWSAccessKeyId=XXXXXXX&Signature=XXXXX&Expires=1633481626

5. まとめ

boto3を使うことで非常に簡単にファイルのアップや署名付きURLを作成することができました。 一時的にアクセスさせたいファイルについての制御が非常に簡単になりますね。

Pythonのオススメ勉強方法

私がオススメするPythonの効果的な学習方法は「Udemy(ユーデミー)」によるビデオ学習です。

「Udemy」は、オンライン学習の提供サイトです。学びたい人は多くある講座の中から受講したいコースを選択することができ、動画で学べるのが特徴です。

多くあるPythonのコースの中でもオススメするPythonのコースは以下となります!!

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

このコースでは合計で28.5時間のビデオ講座があって、それらを受講するだけで、Pythonの基礎から応用まで学ぶことができます。

私も購入して受講していますが、内容としては初心者の方から上級者まで対応する幅広い内容になっています。

下手な書籍を何冊か購入するより、この動画コースを最初からじっくりと受けることで総合的なスキルを習得することができるできます。おそらくこれ以上の教材はないと思いますので、絶対おすすめです。

ちなみに、Udemyでは頻繁にセール(1か月に2,3回程度)が開催されているので、セールのタイミングで購入すれば90%OFFになる講座もあるため、セールが開催されてからの購入をオススメします!

今回は以上となります。

コメント

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