見出し画像

【AWS】S3にファイルを置くバッチをEC2で動かす

本稿は、私がAWSを学習しながら備忘録として書いたものです。
あくまでも私の理解を支援するための記事としてまとめているので、読みづらい点ご容赦ください。

前提1.S3拡張機能をインストール・権限ロールを付与していること

前提2.試験環境について

試験環境は、「ステージング環境に構築したEC2の中にDockerを配置し、そのコンテナ内でバッチを実行する構成」となっています。基本的にはその他の環境でも同じだとは思いますが、適宜、お持ちの環境に読み替えてください。

手順1.バッチ起動用のEC2を起動する

下記図のように、「実行中」にします。

手順2.AWS CLIでログインする(SSHトンネル)

下記記事の「手順2.aws接続コマンドを打つ」参照。
※その際、「--target i-YYYYYYY」では、「本稿 > 手順1.バッチ起動用のEC2を起動する」の赤枠にあるインスタンスIDを指定してください。

ログインに成功するとこのようになります。

   Amazon Linux 2 AMI
 
https://aws.amazon.com/amazon-linux-2/
115 package(s) needed for security, out of 147 available
Run "sudo yum update" to apply all updates.
[ec2-login@ip-10-10-10-10 ~]$

手順3.Dockerを実行する

以下のコマンドを打つ。

[xxxxxx~]$ docker run -v /efs:/efs -u USER -it 999999.dkr.ecr.ap-northeast-1.amazonaws.com/BATCH-JOB-NAME:input /bin/bash
 
そうすると以下のようになります。
 
[USER@999aaa /]$

以上のようになればOKです。

手順4.環境変数を設定する

適宜、バッチ起動に必要な環境変数を設定してください。
以下は一例です。

   Amazon Linux 2 AMI
 
https://aws.amazon.com/amazon-linux-2/
115 package(s) needed for security, out of 147 available
Run "sudo yum update" to apply all updates.
[ec2-login@ip-10-10-10-10 ~]$ docker run -v /efs:/efs -u USER -it 999999.dkr.ecr.ap-northeast-1.amazonaws.com/BATCH-JOB-NAME:input /bin/bash
※ここまでは手順3の出来事です。

※以下、環境変数設定コマンドの一例です。
[USER@999aaa /]$ export ENV_PROPERTY_NAME1=value1
[USER@999aaa /]$ export ENV_PROPERTY_NAME2=value2
[USER@999aaa /]$ export ENV_PROPERTY_ROOT=/user/app/batch-dir
[USER@999aaa /]$ . /user/app/batch-dir/BatchRun.sh
 
そうすると以下のようになります。
staging Batch update patches!!
yyyy-mm-dd shell root /user/app/batch-dir/shell ・・・★
yyyy-mm-dd profile staging jpb selected.
[USER@999aaa /]$

以上のようになればOKです。

手順5.バッチを実行する

以下のコマンドを打つ。

※バッチ起動シェルが置かれた場所へ移動します。
[USER@999aaa /]$ cd /user/app/batch-dir/shell・・・手順4の★の値です。
[USER@999aaa shell]$ ls
AAAA.sh BBBB.sh CCCC.sh .....
 
※バッチを起動します。
[USER@999aaa shell]$ sh AAAA.sh arg1 arg2 ... (必要な引数を与えます)
yyyy-mm-dd shell root: /user/app/batch-dir/shell
yyyy-mm-dd profile staging job selected.
yyyy-mm-dd [JOB START]: AAAA
:
以降、バッチの起動ログが出ます。
:
[USER@999aaa shell]$ (バッチが終了)

再び入力欄が出たらバッチ処理が終了したことになります。
今回私が作成したバッチでは、AWS S3にファイルを作成する処理を入れていたので、S3の中身を確認してみます。

手順6.S3の中身を確認する

バッチ内で指定したS3のPathを開きます。
例)[S3] > [Bucket] > … > [dir name]
すると、以下のようにちゃんとファイルが作成されていました。


参考文献


目次へ戻る


いいなと思ったら応援しよう!