【AWS】EC2からS3へ自動でログファイルを転送する方法

aws-ec2-to-s3
  • URLをコピーしました!

AWS CLIを使い、EC2に保存されている複数のファイルを、S3自動的に一括アップロードする方法をご紹介します。
今回は、EC2内にあるログファイル定期的にS3へバックアップするのが目的です。

目次

目標と前提条件

出典:Amazon EC2(Amazon linux)から直接S3へのファイルコピー #AWS – Qiita

今回はEC2(OSはUbuntu)のcronを使って、ログファイル/var/log/配下)を自動でS3にコピーするコマンドを設定することが目標です。
ですので、Linuxコマンドをある程度理解していること、それから、コマンドで操作する場合はroot権限で実行することを前提とします。

また、予めバックアップ先であるS3バケットを作成しておいてください。
ここでは例として、s3://bucket/logs/に転送することにします。

IAMロールで許可を追加する

出典:Amazon EC2(Amazon linux)から直接S3へのファイルコピー #AWS – Qiita

まずは、IAMロールS3フルアクセスを許可する必要があるので、以下の手順にしたがって設定してください。

IAMロール設定手順
  • AWSで「IAM」を開く
  • 「ロール」からEC2に割り当てているロールを探してクリック
  • 「許可を追加」→「ポリシーをアタッチ」をクリック
  • 検索窓で「S3」と検索し、「AmazonS3FullAccess」をチェックして「許可を追加」ボタン押下
  • タグやロール名は任意で

AWS CLIのインストールと設定

EC2SSH接続して、以下のコマンドで最新版のAWS CLIダウンロードします。
AWS CLIをインストールするには、curlunzipコマンドを使用します

ダウンロードしたZIPを解凍します。

インストーラーを実行し、AWS CLIをインストールします。

インストールが完了したら、バージョンを確認してみましょう!

フォルダ内の全てのファイルをS3へ転送

まずは、EC2からS3にアクセスできるか確認してみましょう。
以下のコマンドを実行し、作成したS3のバケット内のファイル一覧が表示されればOKです。

上記が確認できたら、EC2からS3アップロードしてみます。
ここでは/var/log/フォルダ内の全てのファイルを、S3に作成したbucketバケットlogsというフォルダにアップロードします。
その時、再起的にしたい(サブフォルダも含めたい)ので、--recursiveオプションを付けておきます。

Cronで毎日自動でS3へアップロード

いつもの如く、上記で確認したコマンドcronにを設定していきます。
例として、毎日3:30にEC2からS3へアップロードする設定にします。

設定が終わったら、設定を反映させるためにcronを再起動してください。

cronの正しい書き方については、こちらをご参照ください。

実際にログファイルが転送されたかどうか確認してくださいね!
以上、お疲れ様でした!

著:佐竹 陽一, 著:山﨑 翔平, 著:小倉 大, 著:峯 侑資
¥2,970 (2024/04/23 12:42時点 | Amazon調べ)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次