Skip to content

cm-fujikawa/s3-download-file

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

s3-download-file

概要

サンプルコードを使用し、S3バケットに保管してあるファイルをS3 presigned URLでダウンロードする方法についてご紹介します。

前提

次のものが動作する環境が必要です。

  1. AWS CLI
  2. AWS SAM CLI
  3. Docker Desktop
  4. WSL2(Windowsの場合)

構築方法

ソースコードを取得

  1. ソースコードを取得します。

    git clone https://github.com/cm-fujikawa/s3-download-file.git

ビルド&デプロイ

  1. バケット名をユニークにするため、パラメータストアを作成し、任意の文字列を格納しておきます。

    aws ssm put-parameter --name S3DownloadFileSuffix --value `date "+%Y%m%d%H%M%S"` --type String --profile HOGEHOGE
  2. ビルドして、AWSにデプロイします。ローカルにPython環境を構築しなくても済むように、ここでは、ローカルのコンテナ環境でビルドしています。

    cd s3-download-file
    sam build --use-container
    sam deploy --guided --stack-name s3-download-file --region ap-northeast-1 --profile HOGEHOGE

コードを書き換え

コードを2ヶ所書き換えます。 sam deployコマンドの実行結果の末尾に表示されるListPyListHtmlの値を控えておきます。

Lambda関数

  1. AWSマネジメントコンソールCloudFormationを開き、s3-download-fileスタックを開きます。

  2. リソースタブを開きます。

  3. 論理IDListFunctionという名称のLambda関数を開きます。

  4. コードソースlist.pyファイルをダブルクリックします。

  5. XXXXXXXXXXListPyの値に書き換えます。

    S3DownloadFileApi = 'XXXXXXXXXX'
  6. Deployボタンをクリックします。

HTMLファイル

  1. ローカルでcontentsフォルダにあるlist.htmlファイルを開きます。
  2. XXXXXXXXXXListHtmlの値に書き換えます。

静的コンテンツをアップロード

HTMLファイル

  1. s3-list-files-bucket-XXXXXXXXバケットを開きます。
  2. contentsフォルダの階層ごと(contentsフォルダとlist.htmlファイル)をコピーします。

ダウンロードファイル

  1. s3-download-file-bucket-XXXXXXXXバケットを開きます。
  2. ダウンロードさせたいファイルをアップロードします。

使用方法

  1. sam deployコマンドの実行結果の末尾に表示されるAccessUrlにアクセスします。

  2. AccessUrlは、次のようなURLです。${S3BucketName}にはs3-list-files-bucket-XXXXXXXXバケット名です。

    https://${S3BucketName}.s3-ap-northeast-1.amazonaws.com/contents/list.html
    
  3. s3-download-file-bucket-XXXXXXXXバケットにあるファイルが一覧表示されます。

  4. 適当なリンクをクリックします。

  5. ファイルがダウンロードされます。

スタック削除

  1. S3バケット内にあるすべてのファイルを削除します。

  2. S3バケット名の末尾の文字列を確認します。

    export S3DownloadFileSuffix=`aws ssm get-parameter --name S3DownloadFileSuffix --profile HOGEHOGE \
        | jq -r '.Parameter.Value'`
    echo $S3DownloadFileSuffix
  3. S3バケットを削除します。

    aws s3 rb s3://s3-download-file-bucket-$S3DownloadFileSuffix --force --profile HOGEHOGE
    aws s3 rb s3://s3-list-files-bucket-$S3DownloadFileSuffix --force --profile HOGEHOGE
  4. 次のコマンドでスタックを削除します。

    aws cloudformation delete-stack --stack-name s3-download-file --profile HOGEHOGE

注意

HTML、API Gatewayには認証が掛かっていないため、ここで作成したS3バケットに誰でもアクセスできてしまいます。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published