AWS

AmazonLinux2でコマンドラインからS3にファイルコピーする

即席で作った EC2(AmazonLinux2)の Web サーバや RDS などのサービス。

【初期設定編】AWSでEC2(AmazonLinux2)のWebサーバ環境構築をする久し振りに EC2 を構築しようと思ったら、AmazonLinux の提供が 2020 年 12 月で終了していた。 2023 年...

簡易的な環境とは言え、せめて RDS(MySQL)のバックアップだけでも、毎日 S3 にアップロードしておきたいですよね。

っと思い aws コマンドを実行したのですがエラーに・・・。

そういえばトークンやシークレットの設定をしていないことに気付く。

今回は、管理者ユーザで S3 にファイルをコピーする方法を紹介していきます。

管理者ユーザのセキュリティ認証情報

通常、AWS のコンソールや API にアクセスするユーザを IAM で作成するのですが、今回は管理者ユーザで説明します。

最低限、管理者ユーザの二段階認証などの多要素認証(MFA)は設定しておくようにしましょう。

※管理者ユーザで実行すると、以下のような警告が表示されるようになりますが例外としてください

AmazonLinux2でコマンドラインからS3にファイルコピーする

コンソール画面の右上にある自分のアカウント名をクリックし、「マイセキュリティ資格情報」を選択します。

すると、セキュリティ認証情報ページの中に「アクセスキー (アクセスキー ID とシークレットアクセスキー)」の項目が表示されるので、ここで「新しいアクセスキーの作成」のボタンをクリックします。

AmazonLinux2でコマンドラインからS3にファイルコピーする

すると、キーファイルのダウンロードダイアログが表示されます。

AmazonLinux2でコマンドラインからS3にファイルコピーする

早速、ダウンロードして内容を確認してみましょう。

AWSAccessKeyId=XXXXXXXXXX
AWSSecretKey=XXXXXXXXXXXXXXXXXXXX

また、作成した情報が一覧画面にも反映されています。

AmazonLinux2でコマンドラインからS3にファイルコピーする

万が一、「アクセスキーID」や「シークレットキー」の情報をなくしてしまった場合は、ここで使用状況を確認して(前回利用日時が意図しない時間帯だったり)、すぐに無効化するといいでしょう。

AWS認証情報の設定

「アクセスキーID」や「シークレットキー」を入手したら、aws configure コマンドで認証情報を設定します。
(以下は東京リージョンの例)

今後、別の認証情報を追加する予定がある場合は、あらかじめ –profile オプションでプロファイル名を指定して作成しておくといいですね。

何も指定しない場合は、「default」というプロファイル名が付けられます。

S3へのファイルコピー

では、RDS のデータベースの中身をダンプして、zip ファイルに圧縮した後、S3 にアップロードするプログラムを書いてみます。
(ファイルやディレクトリの存在など細かいチェックを省略します)

あとは、このシェルを cron に仕込んでおけば、デイリーでバックアップが取得できます。

まとめ

ここまで、管理者ユーザで S3 にファイルをコピーする方法を紹介してきました。

今回のように簡易的なサーバの場合は、ダンプしたファイルから mysql コマンドでリストアする方が早そうなので、このバックアップ方法もアリかなと思っています。

実運用ではスナップショットから復元するケースの方が多いでしょうけど・・・。

他にも、セキュリティ的に困る情報が含まれない場合は、zip ファイルを uuencode してメールに添付するという方法も考えられます。
(gmail のような容量の多いストレージがある場合)

しかし、せっかく AWS を利用しているなら S3 をどんどん活用していきたいですね。