LoginSignup
11
10

More than 5 years have passed since last update.

AWS Lambdaに環境変数を与えてみる?

Last updated at Posted at 2016-04-26

本番環境とテスト環境を別リージョンに作っているのですが、AWS外にアクセスする時など、ちょいちょい環境によって異なる動作をさせたいケースが出てきます。
基本的にAPI Gatewayを使っているので


      x-amazon-apigateway-integration:
        type: HTTP
        uri: https://example.com
        httpMethod: GET
        requestParameters:
          integration.request.header.hoge: "'some value'"

みたいな感じで、yamlをリージョンごとに分けることで対応しているのですが、似たようなyamlがリポジトリに二重管理されててどうもスマートではなく。。
AWS Lambdaに環境変数持たせられたらハッピーなのに、と考えていたら、勉強会で非推奨の裏技を教わりました。


print(context.function_name)

ファンクション名にパラメータ書いて渡す、、だと、、、?

教わった時は「descriptionにJSON書けるよ!」って聞いて、それなら許容範囲かなーと調べたんだけどdescriptionの取得方法が見つからなかった。
ファンクション名に独自パーサでパラメータ書くとか死亡フラグすぎるので素直にAWS Lambdaのバージョンアップ待とう、、

ちゃんとgetFunctionConfigurationでありました!

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/API_GetFunctionConfiguration.html
http://boto3.readthedocs.org/en/latest/reference/services/lambda.html#Lambda.Client.get_function_configuration

contextオブジェクトが持ってるものと勘違いしてました。これで幅が広がるなぁ^^

import boto3

def lambda_handler(event, context):
    client = boto3.client('lambda')
    response = client.get_function_configuration(
        FunctionName=context.function_name
    )
    print(response['Description'])
11
10
2

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
11
10