■前準備(サーバーはAmazon LinuxのEC2を想定)
- インストールされている全てのパッケージのアップデートをしておく
$ sudo yum -y update
- pipをインストールしておく
$ sudo easy_install pip
- EC2にMySQLクライアント(mysqlコマンド)をインストールしておく(詳細割愛)
- EC2にAWS CLIをインストール
$ sudo pip install awscli
- デフォルトのAWS CLI環境設定ファイルを作成
$ mkdir -m 700 .aws
$ vi .aws/config
aws_access_key_id = [Access Key ID]
aws_secret_access_key = [Secret Access Key]
region = [Region Name]
- EC2上にCSV出力先ディレクトリを作成
mkdir -m 700 [source-dirname]
- S3上にCSV格納先(EC2->S3)のバケットおよびディレクトリを作成
$ aws s3 mb s3://[bucketname]/[target-dirname]
■実行手順
- CSV出力(RDS->EC2)処理
$ mysql -h[RDS Public DNS] -u[username] -p[password] [dbname] --batch -e "select * from [tablename]" | sed 's/t/","/g;s/^/"/;s/$/"/;s/n//g' > [tablename].csv
- CSV格納(EC2->S3)処理
$ aws s3 sync [sourcedir] s3://[bucketname]/[target-dirname]
- 確認
aws s3 ls s3://[bucketname]/[target-dirname]
■特記事項
- awscliのs3 syncコマンドは対象のS3バケットとローカルを比較し「新規」/「変更」ファイルをS3バケットに対して書込みを行う
- ローカルから「削除」されていてもS3からは削除されない安心設計
こちらの記事はなかの人(yoshidashingo)監修のもと掲載しています。
元記事は、こちら