AWS S3に指定ディレクトリのバックアップをアップロードするために必要な作業のメモです。
AWSコンソール外からS3にアクセスできるユーザーの作成
AWS管理画面にログインし以下のような手順でユーザーを作成。
Identity & Access Management(以下IAM)をクリック
新規ユーザーの作成ボタンをクリック
任意のユーザー名を入力して作成ボタンをクリック。今回はS3へのアクセスのみ許可するユーザーを作成するため「s3user」と入力。AWS上で表示される名前なので用途がわかる程度でOK。
認証情報のダウンロードボタンをクリックするとCSV形式のファイルがダウンロードできます。
IAMの管理画面トップからユーザータブをクリックし、先ほど作成したユーザーの詳細画面を開きます。詳細画面のアクセス許可タブをクリックし、ポリシーのアタッチボタンをクリック。
条件入力欄にS3と入力するなどして、AmazonS3FullAccessにチェックを入れ、ポリシーのアタッチボタンをクリック。アッタチ?(´・ー・`)?
AWSコマンドラインインターフェイスをインストール
コマンドラインからawsにアクセスできるようにAWSコマンドラインインターフェイス(以下awscli)をインストール。
# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" # python get-pip.py # pip install awscli
awscliのインストールにはpipというのが必要なので、そちらを先にインストール。
# aws --version aws-cli/1.10.31 Python/2.6.6 Linux/2.6.32-504.1.3.el6.x86_64 botocore/1.4.21
インストールされてるかの確認
# aws configure --profile s3backup AWS Access Key ID [None]: (AWS管理画面でダウンロードした認証情報のAccess Key Id列の値を入力) AWS Secret Access Key [None]: (AWS管理画面でダウンロードした認証情報のSecret Access Key列の値を入力) Default region name [None]: ap-northeast-1 Default output format [None]: json
aws configureコマンドで先ほどAWS管理画面で作成したユーザーのアクセス情報を設定。
profileオプションを付けない場合はデフォルトユーザーで作成されます。今回は後のバックアップシェルの過程でプロファイル名を指定するため「s3backup」と設定しています。
コンテンツバックアップシェルの作成
コンテンツのバックアップを取得し、S3にアップロードするスクリプトを作成します。
#!/bin/sh # バックアップファイル名 BACKUP_FILENAME=`date "+%Y%m%d"`_filebackup.tar.gz # tmpディレクトリにバックアップを作成 tar -czf /tmp/${BACKUP_FILENAME} -C /var test # S3にアップロード aws --profile s3backup s3 cp /tmp/${BACKUP_FILENAME} s3://tests3bucket >/dev/null 2>&1 # tmpディレクトリのバックアップを削除 rm -f /tmp/${BACKUP_FILENAME}
上記シェルを実行すると/varディレクトリに存在するtestディレクトリのバックアップが作成され、tests3bucketという名前のS3バケットにアップロードされます。
最後に上記シェルをcronに登録することで毎日指定時間にs3にバックアップがアップロードされるようになります。