LocalStackを使用しAWS S3バケットにファイルをアップロード、ダウンロードする

スポンサーリンク

LocalStackを使用しAWS S3バケットにファイルをアップロード、ダウンロードしてみます。

この記事は「LocalStackを使用しローカル上にAWS開発環境を構築する」という記事の続きでもあります。

■PC環境

Windows10

>git –version

git version 2.35.1.windows.2

>docker –version

Docker version 20.10.12, build e91ed57

>docker-compose -v
docker-compose version 1.29.2, build 5becea4c

>aws –version
aws-cli/2.5.6 Python/3.9.11 Windows/10 exe/AMD64 prompt/off

■LocalStackの起動

C:\Users\user_>cd localstack

ローカル上にAWS開発環境を構築しましたので、Dockerには「localstack」というコンテナが作られており、これを起動します。起動のために、まずは上記のコマンドを入力し、Enterキーを押します。「cd」コマンドで「localstack」ディレクトリ内へ移動します。

C:\Users\user_> docker-compose up -d

移動後、上記のコマンドを入力し、Enterキーを押します。docker-compose.yamlを参照してdocker-composeを起動します。「-d」オプションでデタッチド・モード、バックグラウンドでコンテナを再開します。

Starting localstack_main ... done

Enterキーを押すと上記のメッセージが出力され、コンテナが再開されます。

■アップロードするファイルを用意する

再開後、前回ローカル上にAWS開発環境を構築し、「test-xx01」というS3バケットを作成しましたので、このS3バケットにファイルをアップロードしてみます。その前にアップロードするファイルを用意します。

今回は「C:\Users\user_\test(フォルダパス)」内に「sample.txt」というtxt形式のテキストファイルを用意しました。

■AWS CLIを用いてAWS S3バケットにファイルをアップロード

ファイルの用意ができましたので、AWS CLIを用いてAWS S3バケットにファイルをアップロードしてみます。

C:\Users\user_\localstack>aws s3 cp C:\Users\user_\test\sample.txt s3://test-xx01 --endpoint-url=http://localhost:4566 --profile localstack

アップロードするために、上記のコマンドを入力し、Enterキーを押します。「aws s3 cp」コマンドでローカルディレクトリからオブジェクトをコピーします。今回はローカルディレクトリは「C:\Users\user_\test(フォルダパス)」内の「sample.txt」(オブジェクト)を指定しています。指定後のその後ろにターゲットとなるS3バケットを指定しています。さらに「–endpoint-url」オプションでリクエストの送信先のURLをローカルである「http://localhost:4566」に指定します。さらに「–profile」オプションで、先程作成した名前付きプロファイルである「localstack」を指定します。

upload failed: ..\test\sample.txt to s3://test-xx01/sample.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist

Enterキーを押すと、上記のメッセージが出力されました。内容を確認すると「指定されたバケットは存在しません」という内容でしたので、「LocalStackを使用しローカル上にAWS開発環境を構築する」で公開したLocalStackのCLIプロファイルの作成をもう1度行い、再び「test-xx01」というS3バケットを作成しました。作成した上で同じコマンドを入力し、Enterキーを押します。

upload: ..\test\sample.txt to s3://test-xx01/sample.txt

Enterキーを押すと、今度は先程のエラーメッセージは出力されず、アップロードが完了しました。どうやら、Docker内の「localstack」コンテナを停止、終了してしまうと、LocalStackのCLIプロファイルなどはリセットされてしまう。

■AWS CLIを用いてAWS S3バケットにファイルをダウンロード

ファイルのアップロードが完了しましたので、今度はアップロードしたファイルをダウンロードしてみます。

C:\Users\user_\localstack>aws s3 cp s3://test-xx01/sample.txt C:\Users\user_\download_1 --endpoint-url=http://localhost:4566 --profile localstack

ダウンロードするために上記のコマンドを入力し、Enterキーを押します。今回も先程と同じく「aws s3 cp」コマンドを用います。今回はS3バケットが対象となり、ターゲットとして今回は「C:\Users\user_\download_1(フォルダパス)」という空のディレクトリを用意し指定しています。その後ろは先程と同じで「–endpoint-url」オプションでリクエストの送信先のURLをローカルである「http://localhost:4566」に指定し、「–profile」オプションで、先程作成した名前付きプロファイルである「localstack」を指定します。

download: s3://test-xx01/sample.txt to ..\download_1\sample.txt

Enterキーを押すと、上記のメッセージが出力され、ダウンロードが完了します。

完了後、「C:\Users\user_\download_1(フォルダパス)」内を確認すると、今回用意した「sample.txt」がダウンロードされていることが確認できました。

コメント

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