1
0

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 1 year has passed since last update.

【AWS】特定の環境変数を持つLambda関数をAWS CLIで検索する方法

Posted at

最近、複数のLambda関数のとある環境変数を更新しなければならなくなったのですが、関数が100個くらいあり、マネジメントコンソールから環境変数の値を含むLambda関数を検索する機能も見当たらず、手動で探しきれませんでした。

そこで調査を進めると、AWS CLIやBoto3(Python SDK)を利用すれば、該当の環境変数を含む関数をフィルタリングすることができることが可能だとわかりました。

似たような記事がたくさんありそうなのですが、駆け出しエンジニア向けに調査内容をあらためてまとめました。

AWS CLIをつかう方法

jqコマンドでフィルタリングして、特定の環境変数を含む関数を抽出します。

aws lambda list-functions --query 'Functions[].[FunctionName,Environment]' --output json | jq '.[] | select(.[1].Variables.YOUR_VARIABLE_NAME == "your-value")'

こんな感じで出力されます。

{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "<ami>",
                    "InstanceId": "<instance-id>",
                    "InstanceType": "t2.micro",
                    "KeyName": "<key-name>",
                    "LaunchTime": "2022-01-17T15:07:53+00:00",
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "Placement": {
                        "AvailabilityZone": "ap-northeast-1a",
                        "GroupName": "",
                        "Tenancy": "default"
                    },
    ...
}

Boto3をつかう方法

Boto3で特定の環境変数の値を持つLambda関数を検索する場合、以下のPythonコードを使用できます。
Lambda関数の一覧を取得し、指定された環境変数名(YOUR_VARIABLE_NAME)と値(your-value)を持つ関数をフィルタリングします。

import boto3

def find_lambda_functions_with_env_var(variable_name, variable_value):
    lambda_client = boto3.client('lambda')
    functions = lambda_client.list_functions()['Functions']
    matched_functions = []

    for function in functions:
        env_variables = function.get('Environment', {}).get('Variables', {})
        if variable_name in env_variables and env_variables[variable_name] == variable_value:
            matched_functions.append(function['FunctionName'])

    return matched_functions

if __name__ == "__main__":
    your_variable_name = "YOUR_VARIABLE_NAME"
    your_value = "your-value"
    matched_functions = find_lambda_functions_with_env_var(your_variable_name, your_value)
    print(matched_functions)

※Google Colaboratoryで実行する際は、Boto3のインストールとAWSクレデンシャルの設定を忘れずに行いましょう。

!pip install boto3
import os

os.environ['AWS_ACCESS_KEY_ID'] = 'your-access-key'
os.environ['AWS_SECRET_ACCESS_KEY'] = 'your-secret-key'
os.environ['AWS_DEFAULT_REGION'] = 'your-default-region'
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?