AWS S3サービスの利用

 
AWSで提供されているオブジェクトストレージサービスであるS3を用いて、ファイルのアップロードやダウンロードを行いました。

今回もDocker imageであるtomomano/labcのhandsonフォルダ内のファイルを利用させていただきました。




 

スタックのデプロイ

 
まず、handsonフォルダ内に用意されたファイルを利用するために、以下のようにプロジェクトのディレクトリに移動しました。

$ cd handson/serverless/s3

 
次にvenvを用いて、Pythonの依存ライブラリをインストールしました。

$ python3 -m venv .env
$ source .env/bin/activate
$ pip install -r requirement.txt

 
最後にデプロイを行いました。

cdk deploy


 
私の環境では以下のようなエラーが発生しました。
 

 
このエラーが発生した場合には以下のコマンドを用いて"cdk bootstrap"のバケットを作成する必要があります。

$ npx cdk bootstrap

 
このコマンドを実行するとターミナルに以下のような出力が表示されます。
 


 
デプロイに成功すると以下のような出力が表示されます。
 

ここに表示されている"SimpleS3.BucketName = "以降の文字列は以降のコマンド実行に使用します。


 
また、AWSコンソールを確認すると以下のようにバケットが追加されました。
 




 

ファイルのアップロード

 
まず、アップロードするファイルを以下のように作成しました。

$ echo "Hello world!" >> tmp.txt

 
次に,作成したファイルをバケットにアップロードしました。

アップロードにはhandsonフォルダ内のsimple_s3.pyファイルを利用させていただきました。
 
コマンド内には先ほど表示された文字列を入力してください。

$ python simple_s3.py <SimpleS3.BucketName> upload tmp.txt

 
アップロードに成功するとターミナル上に以下のように表示されます。
 


 
また、以下のようにkeyをスラッシュで区切ることにより階層構造によってファイルを管理することができます。

$ python simple_s3.py <SimpleS3.BucketName> upload tmp.txt --key a/b/tmp.txt


 
アップロードされたファイルは以下のようにAWSコンソール上で確認することができます。
 

 
上の画像より、最初にアップロードしたファイルと階層構造化したファイルを確認することができました。




 

ファイルのダウンロード

 
アップロードしたファイルをダウンロードするには以下のコマンドより行うことができます。

python simple_s3.py <SimpleS3.BucketName> download tmp.txt

 
アップロードに成功するとターミナル上に以下のように表示されます。
 

 

ダウンロードしたファイルはデプロイした時のディレクトリに保存されます。




 

スタックの削除

スタックの削除は以下のコマンドより行うことができます。

$ cdk destroy

 
このコマンドを使ってもcdk bootstrapのバケットが削除されない場合には以下のコマンドにより削除することができます。
 
コマンド内には削除するバケット名を入力してください。

$ aws s3 rb "s3//<バケット名>" --force