AWS Batchを使うまでのまとめ
はじめに
AWS Batchを使って、S3に静的コンテンツをアップロードして配信してみたかったのですが、初歩的な所で引っかかる部分がいくつかあったので、備忘録的にまとめておきます。
作りたい構成はざっくり以下のようなものです。
IAMロールを用いたAWS CLIの認証
公式の説明はこちら
ですが、これを行う前にIAMへアクセスし、アクセスキーを生成するようにしてください。
AWS CLIを使ってECRへログイン
公式の説明はこちらにあるのですが、まずログイン部分のここ
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
の --username AWS
はそのままでいいです。赤字の部分だけ置き換えればいいのですが、ちょっと悩みました。
Batch実行
公式の説明はこちら
ECRへのPUSHが成功したら、Batchの作成時にECR上のイメージのフルパスをコピペするだけ。
実行からログが出るまでしばらく時間かかるので焦らず待ちましょう。
なお、ログはCloud Watchに出力されるようです。
スポットインスタンスでの実行
スポットフリートロールが必要なようです。公式の説明はこちら
以下の2コマンドをポチポチ実行すると、スポットインスタンスを実行するためのロールができるようです。
後はコンピューティング環境を設定する際にスポットを選択すれば、スポットインスタンスで実行できます。
$ aws iam create-role --role-name AmazonEC2SpotFleetRole \
--assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Sid":"","Effect":"Allow","Principal":{"Service":"spotfleet.amazonaws.com"},"Action":"sts:AssumeRole"}]}'
$ aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole \
--role-name AmazonEC2SpotFleetRole
S3へのファイル送信
以下のようにDockerFileを作成し、hello-worldイメージを更新します。
FROM ubuntu:18.04
# Install dependencies
RUN apt-get update && \
apt-get -y install curl unzip && \
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install
# Create Index File & POST To S3
RUN echo 'echo "Hello World From ECR!" `date` > /root/index.html' > /root/run_awscli.sh && \
echo 'aws s3 cp --acl public-read /root/index.html $AWS_BUCKET_URI' >> /root/run_awscli.sh && \
chmod 755 /root/run_awscli.sh
CMD /root/run_awscli.sh
環境変数を与えて起動すれば、S3にファイルが配置され、ブラウザからファイルを参照できます(実行時の環境変数についてはこちらを参照。AWS_BUCKET_URI
は自前です)。
$ docker run -e AWS_ACCESS_KEY_ID=xxxx -e AWS_SECRET_ACCESS_KEY=xxxx -e AWS_BUCKET_URI=xxxx hello-world
後は、このイメージをECRにPUSHして、AWSBatchのジョブ定義を再作成すればS3にファイルがPUT出来ます。
定期実行
公式の説明はこちら
CloudWatchのイベント-ルールから書いてある通り設定するだけ。
とても簡単でした。
おわりに
Dockerさえ使い慣れていれば、かなり簡単にバッチ実行をすることができました。
もっとやりやすい方法などあれば教えてくださいmm
Author And Source
この問題について(AWS Batchを使うまでのまとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/ochiba-leaf/items/0ae7d5fcdb36ba3c213f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .