はじめに
以前にオンプレのSubversionサーバーをクラウドへ移行という記事に、S3へバックアップを保管する方法について書いたことがあります。
上記の記事は「AWS上のサーバー(EC2)からS3へのバックアップ方法」となるため、今回は改めて「オンプレのサーバーからS3へのバックアップ方法」についてまとめてみました。
AWS上のサーバーとの違い
オンプレのSubversionサーバーをクラウドへ移行に書いてある内容との相違点は以下の通りです。
- Amazon Linuxではないため、AWS CLIをインストールする必要があります。
- S3にアクセスするためのユーザーを作り、そのユーザーのアクセスキーを使う必要があります。
- AWS上のサーバーは「ロールを付与」することでS3にアクセスできますが、オンプレ環境ではこの方法は使えません。
設定手順
以下の手順は、Alma Linux 8で構築したサーバー上での手順となります。
AWS上の設定
IAMユーザーの作成
- AWSでは「最小権限の原則」というものがあるため、バックアップに必要な権限のみを付与したIAMユーザーを作成します。
- ここでは
s3-backup
というグループを指定していますが、これはユーザー作成と同時に新規作成したグループとなります。 -
s3-backup
というグループに割り当てる権限は、AmazonS3FullAccess
のみとします。
- ここでは
- ユーザー作成時にアクセスキーを1回だけDLできるので、安全な場所に保管しておきます。
項目 | 設定値 |
---|---|
IAMユーザー名 | backup |
AWS認証情報タイプ | アクセスキー |
グループ名 | s3-backup |
グループのポリシー | AmazonS3FullAccess |
S3バケットの作成
- バックアップ先となるバケットを作成します。
- ここではバケット名を
nkojima-backup
としています。 - AWSの管理コンソールからもバケットを作れますが、もしAWS CLIをインストール&設定済みであれば以下のコマンドでバケットを作成できます。
- ここではバケット名を
[nkojima@akagi ~]# aws s3 mb s3://nkojima-backup/
make_bucket: nkojima-backup
AWS CLIの導入
インストール
- こちらのページに書かれているLinuxのインストール手順に沿ってインストールします。
// インストール
[nkojima@akagi ~]# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
[nkojima@akagi ~]# unzip awscliv2.zip
[nkojima@akagi ~]# sudo ./aws/install
// インストール後にバージョンを確認
[nkojima@akagi ~]# aws --version
aws-cli/2.5.5 Python/3.9.11 Linux/4.18.0-240.22.1.el8.x86_64 exe/x86_64.rocky.8 prompt/off
セットアップ
-
aws configure
と入力した後、バックアップ用のユーザーを作成した際にDLしたアクセスキーの情報を指定します。
[nkojima@akagi ~]# aws configure
AWS Access Key ID [None]: {アクセスキー}
AWS Secret Access Key [None]: {シークレットアクセスキー}
Default region name [None]: ap-northeast-1
Default output format [None]: json
動作テスト
- 適当なファイル(※ここでは
test.txt
)を作成して、aws s3
コマンドで所定のS3バケットにアップロードできることを確認します。
[nkojima@akagi ~]# touch test.txt
[nkojima@akagi ~]# aws s3 cp /root/test.txt s3://nkojima-backup/
upload: ./test.txt to s3://nkojima-backup/test.txt
バックアップ用スクリプトの作成
- 上記の動作テストと同じく、以下のように
aws s3
コマンドを呼び出すスクリプトを作成します。 - このスクリプトをcrontabなどに登録して、定期実行するように設定すればバックアップを自動化できるはずです。
backup.sh
#!/bin/sh
echo "バックアップ開始..."
/usr/local/bin/aws s3 cp {バックアップファイルのパス} s3://nkojima-backup/
echo "バックアップ終了"