0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWSLambdaとAWSBatchを本番環境と開発環境で分ける

Posted at

AWS BatchのジョブをAWS Lambdaから実行する時に、本番環境とステージング環境を分けたい場合の構成を作ってみました。

AWSBatch

コンピューティング環境、ジョブキュー、ジョブ定義を環境別に分けます。

image.png

image.png

image.png

AWSLambda

AWSLambdaで環境別の実行環境を作るためにエイリアスを利用しました。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-aliases.html
image.png

Lambdaはエイリアス別に環境変数を定義することができません。(2021.07.03現在)
なので、環境別のAWSBatchの定義を自前で用意します。

image.png

config.ini
[dev]
JOB_QUEUE = arn:aws:batch:ap-northeast-1:xxxxxxxxx-dev
JOB_DEFINITION = arn:aws:batch:ap-northeast-1:xxxxxxxxx:job-definition/xxxx-dev:1

[stg]
JOB_QUEUE = arn:aws:batch:ap-northeast-1:xxxxxxxxx-stg
JOB_DEFINITION = arn:aws:batch:ap-northeast-1:xxxxxxxxx:job-definition/xxxx-stg:1

[prd]
JOB_QUEUE = arn:aws:batch:ap-northeast-1:xxxxxxxxx-prd
JOB_DEFINITION = arn:aws:batch:ap-northeast-1:xxxxxxxxx:job-definition/xxxx-prd:1

Lambda実行側ではconfig.iniを読み取ってジョブ定義を取得します。
どのエイリアスが使用されているかはcontext引数のinvoked_function_arnからわかります。

※Lambdaの記述例

lambda_function.py
import re
import configparser
import boto3


def lambda_handler(event, context):
    mo = re.search(
        r'func_name:(?P<alias>dev|stg|prd)',
        context.invoked_function_arn
    )

    config = configparser.ConfigParser()
    config.read('config.ini')
    JOB_QUEUE = config[mo.group('alias')]['JOB_QUEUE']
    JOB_DEFINITION = config[mo.group('alias')]['JOB_DEFINITION']
    JOB_NAME = 'xxxxxxxxx'

    client = boto3.client('batch')
    response = client.submit_job(
      jobName = JOB_NAME,
      jobQueue = JOB_QUEUE,
      jobDefinition = JOB_DEFINITION,
    )
    return {
      'statusCode': 200,
        'body': json.dumps('run')
    }

さいごに

AWSLambdaのエイリアス別に環境変数を定義できれば、わざわざconfig.iniを追加する必要ないのにと思いました。
もっと簡単な方法で環境別の構成が作っている方がいたら教えて下さい。

参考サイト

0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?