Zipgrepを使用したAWSラムダ関数全体のキーワードの検索



ハウツー
  • すべてのAWSラムダ関数をzipファイルとしてダウンロードします.
  • ZIPファイルのキーワードを検索します.

  • ユースケース
    私は、バージョン管理で管理されていない多くの直接の書かれたラムダを含むカオス的な検証アカウントで、ラムダを含んでいる特定のキーワードをチェックするのにそれを使いました.

    zipファイルとしてすべてのAWSラムダ関数をダウンロード
    この優れたスクリプトを使用してください.
    nemani/download_all_lambda_functions.sh

    必要条件

  • wgetがインストールされます.

  • aws cliがインストールされます.
  • はbashを使用します.

  • 用途
    # This block is not necessary if you set a default profile
    export AWS_DEFAULT_PROFILE=xxxxx
    export AWS_DEFAULT_REGION=ap-northeast-1
    export AWS_DEFAULT_OUTPUT=text
    
    # Run
    bash download_all_lambda_functions.sh 
    

    ノート
    スクリプトは、“すべてのLAMBA機能をダウンロード完了!”しかし、ちょうどバックグラウンドでタスクを投げたので、それは完了していない.
    すべてのバックグラウンドタスクが終了したときにシグナルはない.
    それで、私はダウンロードタスクが止まって、ZIPファイルの数が機能と一致するとき、それが完了すると思いました.

    出力結果
    各関数のZIPファイルは、LambdaCloud関数/*でダウンロードされます.

    ノート
    それは地域によってそれらを得るために少し迷惑です.
    各地域のダウンロード先フォルダを分離することをお勧めします.

    zipファイル内のキーワードを検索する

    使用例
    foobarの検索
    cd lambda_functions
    
    for file in *.zip; do
        res=`zipgrep -n foobar $file`
        if [ -n "$res" ]; then
            echo "x:$file";
            echo "$res";
        else
            echo "o:$file";
        fi
    done
    

    出力結果の例
    x:aaaa-checker.zip
    lambda_function.py:30: target = "foobar",
    o:bbbbb-deleter.zip
    o:ccccc-notifier.zip
    x:ddddd-test.zip
    lambda_function.py:21: print("foobar"),
    ...
    

    備考

    働かなかったもう一つの方法
    find . /lambda_functions -name '*.zip' | xargs -I file zipgrep foobar file
    
    このコマンドは、キーワードが検出されたZIPを知りませんでしたので、私には不十分でした.

    時間を取る
    を返します.Env環境、grepは長い時間がかかります.