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.7
がarm64
対応してないのでx86_64
だけが選択肢となります。
以上です。最後までお読みいただきありがとうございました!!
感謝!
この記事の表紙に使わせていただいている写真は Unsplashの Timothy Eberly様のものです。
ありがとうございます!