AWS S3コマンド:アップ&ダウンロード(Windows・Python)

まずPowerShellを開く。

・AWS CLIなるものをインストール。

> pip install awscli

・ AWSアクセスキーの作成(自身のIAMユーザに対して作る)
IAM=Identity and Access ManagementのことでAWS リソースへのアクセスを安全に管理するためのウェブサービス
これについて初回は(?)コマンドでやらずにIAMの「コンソール」⇒右上の「セキュリティ認証情報」⇒「アクセスキーの作成」からやったほうがいいっぽし。
作成したらcsvファイルでダウンロード可能。
ちなみにコマンドでやる場合は以下の通りみたいですが以下の通りエラりました。

 > aws iam create-access-key -–user-name MyUser
Unable to locate credentials. You can configure credentials by running "aws configure".

・ AWS CLI のセットアップ

> aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXX             ⇐作成したアクセスキーを入力
AWS Secret Access Key [None]: XXXXXXXXXXXXXXX        ⇐作成したシークレットアクセスキーを入力
Default region name [None]: ap-northeast-1           ⇐指定なし(None)でも良さげ。例は東京指定
Default output format [None]: json                   ⇐jsonが無難?

・ S3のバケット一覧出力

> aws s3 ls

・ ファイルを個別にアップロードして確認

> aws s3 cp sample.txt s3://mybucketname/
upload: .\sample.txt to s3://mybucketname/sample.txt

> aws s3 ls s3://mybucketname
2022-01-21 15:13:59          0 sample.txt

・ オブジェクトの同期

構文

$ aws s3 sync <source> <target> [--options]
(aws s3 sync <同期元> <同期先>となる)

方向的に「同期元」⇒「同期先」と考えるとよい。
同期元がローカル or S3 ⇒ 同期先がS3 or ローカルとる。
(S3 ⇒ S3もきっとできるんでしょうけどまだやり方知らない)

・オプションなしで実行した場合
 source側の「ファイル」と「配下にファイルが存在しているフォルダ」がtarget(S3)へアップロードされる。
 source側になくてtarget側にある既存の別ファイル・別フォルダは残る。
 また、このときsource側の空フォルダについてはアップロードされない
 参考:https://dev.classmethod.jp/articles/tsnote-s3-empty-folder-01/

> aws s3 sync . s3://mybucketname/

・–delete指定した場合
 target側にしかないファイルは削除される。target側にしかないフォルダは残る(空フォルダで残る)。

> aws s3 sync . s3://mybucketname/ --delete

・空フォルダをアップロード(作成)したい場合は以下2パターンか。

パターン1:
 target側でフォルダ名を指定してファイルコピー後、--deleteオプションで同期する。すると空フォルダだけtarget側に残せる。
 ※このときtarget側に存在していないフォルダ名を指定すると勝手に作ってくれる。

  aws s3 cp sample.txt s3://mybucketname/sample-folder/
  aws s3 sync . s3://mybucketname --delete

パターン2:s3apiを使ってtarget側に空フォルダを作成する
 aws s3api put-object --bucket mybucketname --key "newfolder/"
 (この場合併せてストレージクラスとかも指定したほうがいいぽい)

・ 以下ついでにメモ

 ・設定一覧の表示

> cat ~/.aws/config

 ・アクセスキーとシークレット一覧

> cat ~/.aws/credentials

コメント

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