3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS BatchのMulti Containerを試してみた

Last updated at Posted at 2024-08-26

はじめに

最近、AWS BatchでMulti Containerの機能が追加されたことを知りました。

以前、AWS BatchでAWS X-Rayによりトレースするためにいくつか試行錯誤したことがあったため、こちらのMulti Containerを利用してX-Rayデーモンも同時に起動ができるのかを試してみました。

あくまで試行錯誤した結果なので、実際に試す場合は自己責任でお願いします。

AWS Batchの作成

以前に作ったものと同様に簡単なAWS BatchのJobを作成しました。以下の文献などを参考にDocker imageをECRにPushしてFargate環境で動かすようにします。また、AWS LambdaからAWS BatchのJobを起動するようにしました。

作成したDockerfileとPythonスクリプトは以下のとおりです。

Dockerfile
FROM amazonlinux:2

RUN yum install -y python3 python3-pip
RUN python3 -m pip install aws_xray_sdk

COPY test.py test.py
CMD ["python3", "test.py"]
test.py
from aws_xray_sdk.core import xray_recorder

xray_recorder.begin_segment("Test Multi Container")
print ("Hello, World!")
xray_recorder.end_segment()
AWS Lambda
import json
import boto3

def lambda_handler(event, context):
    
    client = boto3.client('batch')

    JOB_NAME = 'test'
    JOB_QUEUE = "arn:aws:batch:ap-northeast-1:<account id>:job-queue/<queue name>"
    JOB_DEFINITION = "arn:aws:batch:ap-northeast-1:<acount id>:job-definition/<job-definition-name>"

    response = client.submit_job(
        jobName = JOB_NAME,
        jobQueue = JOB_QUEUE,
        jobDefinition = JOB_DEFINITION,
    )
    
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

このコンテナ単体のJobを起動してもAWS X-Rayのコンソールで、TestMultiContainerと名のついたノードがないことを改めて確認しました(AWS Lambdaのノードだけでした)。

スクリーンショット 2023-05-28 19.18.23.png

Multi Containerの機能を使ってサイドカーにX-Ray Daemonを指定する。

コンソール上から作成してみます。新しく(?)以下の画像のような表示が出ていました。今回はマルチコンテナジョブを使いたいのでこちらのチェックを外します。

スクリーンショット 2024-08-16 14.14.40.png

続けていくとコンテナの設定があります。
スクリーンショット 2024-08-22 10.34.44.png

コンテナの追加ができるようになっていたため、新しいコンテナを追加します。

スクリーンショット 2024-08-22 10.34.52.png

2つ目のコンテナに、X-Ray Daemonを設定します。
スクリーンショット 2024-08-22 10.35.03.png

X-Ray DaemonはAWSのドキュメントから以下のURIを使いました。

public.ecr.aws/xray/aws-xray-daemon:3.x

コンソールから確認するとJob定義上で2つのコンテナが設定できていることが確認できました。

スクリーンショット 2024-08-22 10.33.34.png

このJobを実行するとAWS X-Rayのコンソールからノードが確認できました。Batch上のアプリケーションからサイドカーのX-Ray Daemonを通してX-Rayにデータを送信できているのかなと思います。

スクリーンショット 2024-08-26 9.47.56.png

スクリーンショット 2024-08-26 9.48.04.png

終わりに

色々新機能が増えており、前にできなかったことがやりやすくなっていて嬉しいですね。色々試行錯誤して遊んでいるだけなのでもう少しちゃんと触ってみようと思います。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?