Amazon S3 に特定のディレクトリ以下のファイルのバックアップを送信する手順を紹介します。
Amazon S3 の準備
バケットの作成
- AWSサービスの「ストレージ」にある「S3」を選択します。
- 「バケットを作成する」のボタンをクリックします。
- 「バケットの作成」画面が開くので「バケット名」を入力して、「次へ」を押します。
- 今回はデフォルトの設定でバケットを作成していきます。
- 最後に下の画像のような画面が出てくるので設定内容を確認したら「バケットを作成」をクリックします。
- バケットの一覧が表示されるので自分が作ったバケットが存在する事を確認します。
GUIからファイルをアップロードする
- 試しにGUIからファイルをアップロードしてみます。
- バケットの一覧から先ほど作成したバケットをクリックします。
- 次の画像のような画面が表示されたら、「アップロード」のボタンをクリックします。
- 「ファイルを追加」をクリックしてアップロードしたいファイルを選択するか、ファイルをドラッグ&ドロップします。
- 選択したファイルが表示されている事を確認して「次へ」ボタンを押します。
- 今回はデフォルトの設定でアップロードします。
- 最後に設定内容を確認して、「アップロード」をクリックします。
- 「概要」にアップロードされたファイルの一覧が表示されるので自分がアップロードしたファイルが存在する事を確認します。
これでファイルのアップロードは完了です。
Amazon CLI からファイルをアップロード
Amazon CLI の準備
- Amazon CLI のインストールとセッティングを行います。
- この記事ではインストールとセッティングの手順については省略するので下の記事を参考にしてください。
amazon linux2でAWS Command Line Interface のインストールとセッティング
Amazon CLI からファイルをアップロードする
aws s3 cp [ファイル名] [バケット名]
でアップロードができます。
$ aws s3 cp ./sample.txt s3://test-hacknote-20180921/ upload: ./sample.txt to s3://test-hacknote-20180921/sample.txt
- 「概要」にアップロードしたファイルが追加されている事を確認します。
- ファイルが一覧に表示されていない場合は一度、右上の更新ボタンを押してください。
「概要」にアップロードしたファイルが存在すればCLIからのアップロードは成功です。
Python(Boto3)を使ってファイルをアップロード
準備
- Boto3が必要になるのでBoto3をインストールします。手順は下の記事を参照してください。 https://aws.amazon.com/jp/sdk-for-python/
特定のファイルをアップロードする
import boto3 accesskey = "IAMのACCESS-KEY" secretkey = "SECRET-ACCESS-KEY" region = "ap-northeast-1" s3 = boto3.client('s3', aws_access_key_id=accesskey, aws_secret_access_key= secretkey, region_name=region) filename = "アップロードしたいファイル名" bucket_name = "アップロード先のバケット名" s3.upload_file(filename,bucket_name,filename) print("uploaded {0}".format(filename))
$ python upload.py uploaded aaa.txt
- 「概要」にアップロードしたファイルが追加されている事を確認します。
- ファイルが一覧に表示されていない場合は一度、右上の更新ボタンを押してください。
「概要」にアップロードしたファイルが存在すればアップロードは成功です。
特定のディレクトリ以下のファイルのバックアップをS3に送る
指定したディレクトリ以下にある全てのファイルを一括でS3にアップロードします。
import boto3 import os accesskey = "IAMのACCESS-KEY" secretkey = "SECRET-ACCESS-KEY" region = "ap-northeast-1" current_dir = "/home/ec2-user" filepath = "/home/ec2-user" bucket_name = "test-hacknote-20180921" s3 = boto3.client('s3', aws_access_key_id=accesskey, aws_secret_access_key= secretkey, region_name=region) for dirpath, dirnames, filenames in os.walk(current_dir): for file in filenames: if file.startswith(".") == 0: filepath = dirpath + "/" + file s3.upload_file(filepath,bucket_name,file) print("uploaded {0}".format(file)) print("upload completed")
$ python backup.py uploaded backup.py uploaded upload.py uploaded test.txt uploaded bbb.txt uploaded sample.txt uploaded aaa.txt uploaded authorized_keys uploaded ddd.txt upload completed
- 「概要」にアップロードしたファイルが追加されている事を確認します。
- ファイルが一覧に表示されていない場合は一度、右上の更新ボタンを押してください。
「概要」にアップロードしたファイルが存在すればアップロードは成功です。