AWS Lambdaで遊ぼう #4 環境変数を活用する

technologies

もくじ

はじめに

こんにちは。中村です。

今回はLambdaにおける環境変数の活用について書いていこうと思います。

環境変数とは

特定のパラメータを環境変数に設定し、その値をソースコード上で呼び出して活用することができます。

以下のように環境変数に特定のキーと値を設定します。

環境変数に設定したキーをソースコード内で呼び出し、その値を取得する。という感じです。

以下、Pythonで書く場合

import os

def lambda_handler(event, context):

    Name = os.environ['Name']
    print(Name)

# 出力
# Nakam

なぜ環境変数を使うのか

同一機能のLambda関数を別の場所で使い回したい場合、または開発/検証/本番のように環境が分かれている場合に、環境ごとに値が変わるものを環境変数で管理する事で、ソースコードを修正する手間を省く事ができます。

例えば以前書いた以下の記事では、

AWS Lambdaで遊ぼう #3 LambdaからSNSでメール送信

このようなソースコードを書きました

import boto3
client = boto3.client('sns')

def lambda_handler(event, context):
    
    params = {
      'TopicArn': 'arn:aws:sns:ap-northeast-1:999999999999:sns-topic-name',
      'Subject': 'Subject Lambda(python) -> SNSでメール送ったよ',
      'Message': 'Message\n\nLambda -> SNSでメール送ったよ\n届いた?'
    }
    
    client.publish(**params)

しかし、同じLambdaを別のAWSアカウントで使い回す場合、ソースコード内のSNSトピックARNは別の値に変更する必要があるかもしれません。その都度ソースコードを書き換えるのは面倒だし、ミスを誘発する可能性が出てきます。そこでトピックARNの部分を環境変数にして、可変できるようにしておけば、ソースコードは全く同じものを使うことができますね。

環境変数を設定してみる

さて、上記のLambda関数を修正して環境変数が使える状態にしようと思います。

Lambda画面から設定タブを開き、環境変数編集をクリックします。

環境変数の追加をクリックします。

キーと値を入力し、保存をクリックします。

これで環境変数を設定できました。

ソースコードにて環境変数の値を取得します

import osにてosモジュールをインポートし、そちらを使ってos.environで環境変数の値を呼び出しています。

import boto3
import os
client = boto3.client('sns')

def lambda_handler(event, context):

    params = {
        'TopicArn': os.environ['topic_arn'],
        'Subject': 'Subject Lambda(python) -> SNSでメール送ったよ',
        'Message': 'Message\n\nLambda -> SNSでメール送ったよ\n届いた?'
    }

    client.publish(**params)

この形であれば別のAWSアカウントや、別のSNSを使う場合でもソースコードの修正は不要になりますね!

Lambdaを実行してみる

Lambdaを動かしてみましょう

テストタブからテストを実行します。

Lambdaの実行は成功しました。

メールも届きましたね!

おわりに

ご参考にしていただけると幸いです。

Related posts