AWSのS3パケットをローカル(自分のPC)に一括コピーしてくる方法
プロジェクトを一旦Closeしたサービスがあり、いつでも復元できるようAWSのS3のデータを控えておくためにローカルに一旦落としてくることを実施したので、その方法を例も含めご紹介します。
今回の対応について
AWSのアカウント配下に自分用のIAMユーザーを作成して、その作成したユーザーのアクセスキーをローカルに記載しておくことで接続できるようになり、任意のコマンドを実行することでS3からローカルに保存することができました。
その手順について下記に方法を記載します。
①IAMユーザーを作成しS3関連の読み取りできるロールを付与
まず、アカウント配下に自分用のIAMユーザーを作成し、AdministratorやPowerUserなど(S3関連の読み取りできる)ロールをアタッチします。
※既に利用可能なIAMユーザーが存在する場合はこの手順をスキップしても大丈夫です。
今回はAdministratorで作成します。
ユーザー作成
AdministratorAcessのグループ作成
今回は一番上の「AdministratorAcess」で作成します。
作成が完了
「アクセスキーID」と「シークレットアクセスキー」を控えておきます。
②ローカルに1の接続するために必要な情報を記述する
~/.aws/credentials
に1. で控えておいた「アクセスキー ID」と「シークレットアクセスキー」の情報を書きます。
vimとかで書き換えてもらって
vim ~/.aws/credentials
下記のように記載する感じです。
[sample]
aws_access_key_id=[アクセスキー ID]
aws_secret_access_key=[シークレットアクセスキー]
region=ap-northeast-1
③S3の指定したところからローカルにコピーする
AWS CLIのs3 syncコマンドを利用してローカルにコピーしてきます。
そこでは、実行時のprofileオプションで3で設定したprofileを指定します。
aws s3 sync --profile sample s3://[バケット名] [ローカルファイルのディレクトリ]
例
例えば、「sample-packet」というパケットを保存したいと思ったら
①S3にあるパケットを確認する
②AWS CLIのs3 syncコマンドの実行
aws s3 sync --profile sample s3://sample-packet ./
こんな感じでコピーされていきます
これでパケットごとにコピーすることができました。
他に必要なパケットがあれば同様に実行すればOKです。
まとめ
今回は、AWSのS3パケットをローカル(自分のPC)に一括コピーしてくる方法をご紹介しました。
特に難しいことはなく以外と簡単に行うことができました。
今回はS3→ローカルでしたが、応用することによってローカル→S3やS3内の別パケットに移動などもできたりするので調べてみてください。
参考
- AWS CLI の開始方法
- S3のバケットをローカルに一括コピーする
Discussion