技術4課の古川です。 AWS FargateでAmazon RDS for PostgreSQLのテーブルダンプをするバッチ処理を作成しました。
今回はその手順について2部構成で紹介したいと思います。 本記事はAWS Fargateでバッチシステムを構築しよう(上)ということで、Amazon ECRの構築とDockerイメージのPush手順について紹介します。
1) Amazon ECSコンソール画面へ遷移
1-1) AWS Management Console画面からAmazon ECSを検索
画面上部の「サービス」を選択し、サービス検索フォームに「ECS」を入力します。 Elastic Containaer Serviceがサジェストされるので、選択します。
1-2) Amazon ECSコンソール画面へ遷移
2) Amazon ECRリポジトリの作成
2-1) リポジトリ作成画面遷移
Amazon ECSコンソール画面から「Repositories」を選択します。 ECRリポジトリ一覧画面に遷移した後、「リポジトリ作成」を押下します。
2-2) アクセスとタグ
「アクセスとタグ」にて以下を設定します。 ※タグのイミュータビリティを有効にすると、イメージのバージョンを上書き不可になります。 今回は厳密にバージョンを管理する必要性がないので、無効とします。
可視性設定 | リポジトリ名 | タグのイミュータビリティ |
---|---|---|
Private | batch_sample(任意) | 無効 |
2-3) イメージスキャンの設定
「プッシュ時にスキャン」を「有効」にします。
2-4) 暗号化設定
ECRのイメージは、AES-256 暗号化アルゴリズムによってデフォルトで暗号化されております。 よって今回は、「KMS暗号化」を「無効」にします。
2-5) リポジトリの作成
「リポジトリの作成」を押下します。
リポジトリ一覧画面にて、作成したリポジトリが表示されていることを確認します。
3) Dockerファイルのpush
3-1) ファイルの準備
以下、batch_sampleフォルダ直下に、以下のDockerfileとシェルスクリプトを格納します。
batch_sample ├── Dockerfile └── backup.sh
Dockerfile
FROM alpine:3.12.3 RUN apk add --update postgresql-client python3 py3-pip RUN pip3 install awscli RUN mkdir src WORKDIR /src COPY backup.sh /src ENTRYPOINT ["sh"] CMD ["/src/backup.sh"]
backup.sh
#!/bin/sh export PGPASSWORD= {DBのUserPassword} DBNAME= {DBのName} DBUSER= {DBのUserName} BUCKET={ダンプファイル保存用のS3バケット名} PSQL_HOST1= {DBのName} TABLE={ダンプするデーブル名} pg_dump -h $PSQL_HOST1 \ -U $DBUSER \ -t $TABLE \ $DBNAME > $TABLE.sql aws s3 cp $TABLE.sql s3://$BUCKET/backup/$(date "+%Y-%m-%d")_$TABLE.sql rm -f $TABLE.sql
指定したDB、デーブルのダンプファイルをS3バケットにアップロードします。
3-2) レジストリの認証
最新バージョンの AWS CLI と Docker がインストールされていることを確認し、ローカルにて以下コマンドを実行します。
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin {AWSアカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com
3-3) Dockerイメージの構築
ローカルにて以下コマンドを実行します。
docker build -t batch_sample .
3-4) タグ付け
Dockerイメージの構築完了後、ローカルにて以下コマンドを実行します。 ※タグはlatestになっておりますが、任意です。 バージョン管理をしたい場合は、v1,v2をタグ付けすると良いです。
docker tag batch_sample:latest {AWSアカウントID}dkr.ecr.ap-northeast-1.amazonaws.com/batch_sample:latest
3-5) ECRリポジトリへpush
タグ付けの完了後、ローカルにて以下コマンドを実行します。
docker push {AWSアカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com/batch_sample:latest
ECRリポジトリにイメージがpushされていることを確認します。
以上でAmazon ECRの構築とDockerイメージのPushが完了しました。
次回の記事では、実際にAmazon RDSとAmazon S3を用意して、AWS Fargateを起動してみたいと思います。