Lambdaでcurlを爆速で叩く

もくじ

直近curl コマンドが叩ける Lambda を cdk でサクッと作る!という記事を書きました。

それによると、Lambda で curl を叩こうとすると/bin/sh: curl: command not foundと文句をいわれて、それを解決するためには結構面倒な作業が必要だったりします。

が、、、この度そんな周りくどいことをしなくても curl を叩く方法があったので共有します。

前提

curl を叩く Lambda はあくまでもネットワーク周りの疎通確認を想定しています。なのでセキュリティ的な観点からまったく良くない方法ですので、アプリケーションの中で http リクエストをしたい場合とかには利用しないでください!

手順

Lambda の実行ランタイムをPython 3.7のアーキテクチャx86_64にする。

以上です。これだけでLambdaからcurlを叩けます。(笑)

おまけで↓ にサンプルを用意してみました。

import subprocess

def lambda_handler(event, context):
    cmd = subprocess.run(
        "curl https://blog.i-tale.jp/", # ここを適宜修正する
        shell=True,
        capture_output=True,
        text=True,
    )
    print("====> stdout")
    print(cmd.stdout)
    print("====> stderr")
    print(cmd.stderr)
    return

お手がるですね! レイヤーとか全く不要で GUI ポチポチして Lambda をつくって、コピペでコード貼り付ければ終わりです。

なぜかPython 3.7だと curl (7.61.1)がデフォルトでインストールされているようでして 3.8 とかそれ以降のバージョンでは入ってないです。

ちなみにアーキテクチャはPython 3.7arm64対応してないのでx86_64だけが選択肢となります。

以上です。最後までお読みいただきありがとうございました!!

感謝!

この記事の表紙に使わせていただいている写真は UnsplashTimothy Eberly様のものです。

ありがとうございます!

Author

Sisii

インフラが好きなエンジニアぶってるなにか