ショコラ
AmasonS3 にログファイルをコピーするには?
以下の4つの手順でやってみましょう。
①AWSユーザー を作成する。
②S3にログコピー先のバケットを作成する。
③Ubuntu に awsパッケージ をインストールする。
④awsコマンド でファイルをコピーする。
もっさん先輩
① AWSユーザー を作成する
この章では、AWSユーザー を作成して、awscliコマンド を実行するための「アクセスキーID」と「シークレットアクセスキー」を取得します。
- 「ユーザー名」を入力、「アクセスキー・プログラムによるアクセス」にチェックを入れます。
「次のステップ:アクセス権限」ボタンを押します。
- 「既存のポリシーを直接アタッチ」をクリックして「AmazonS3fullAccess」を選択します。
「次のステップ:タグ」ボタンを押します。
- 「次のステップ:確認」ボタンを押します。
- 「ユーザーの作成」ボタンを押します。
- 「アクセスキーID」と「表示」リンクをクリックして「シークレットアクセスキー」を保管します。
以上
② S3 にログコピー先のバケットを作成する
③ Ubuntu に awsパッケージ をインストールする
- Ubuntuコンテナを起動します。
docker run --rm -it -v /var/log:/log ubuntu:20.04 bash
※「ubuntu:20.04」のバージョン指定は、私のホストOSが古いため最新の Ubuntuコンテナ が使えなかったからです。皆様は最新のバージョンを使用してください。
- apt-get update を実行します。
apt-get update
- awscliパッケージ をインストールします。
apt-get install -y awscli
- 設定を行います。
aws configure
AWSユーザー を作成した時の「アクセスキーID」と「シークレットアクセスキー」を入力します。
# aws configure
AWS Access Key ID [None]:{アクセスキーIDを入力}
AWS Secret Access Key [None]:{シークレットアクセスキーを入力}
Default region name [None]:{エンター}
Default output format [None]:{エンター}
.aws/credentials に設定ファイルができます。
Dockerfile にまとめました。これだけですね。
FROM ubuntu:20.04
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y awscli
CMD tail -f /dev/null
「DEBIAN_FRONTEND=noninteractive」で awscliパッケージ のインストール中の入力をスキップできます。
docker-compose.yml にまとめました。
version: '3'
services:
awscli:
build: .
environment:
- AWS_ACCESS_KEY_ID={アクセスキーID}
- AWS_SECRET_ACCESS_KEY={シークレットアクセスキー}
volumes:
- /var/log/:/log/:z
以上
④ awsコマンド でファイルをコピーする。
lsコマンド を実行して、s3 のバケットを一覧表示します。
aws s3 ls
lsコマンド でバケットの中を一覧表示します。S3 のファイルを指定するには「s3://」を付けます。
aws s3 ls s3://answorz
ローカルにあるログファイルを S3 にコピーします。
aws s3 cp /log/postgres.log-20220929.gz s3://answorz/`date +%Y%m%d`/
以上