curlコマンドが叩けるLambdaをcdkでサクッと作る!
お久しぶりです。前回からだいぶ時間があいてしまいました 😂
さてさて、AWS で VPC 周りの実装をしてると curl で軽く疎通テストしたいなーってときありますよね?
そんなときは EC2 を使えば良いのですが、そのために EC2 を起動させるの、だるいですよね、、、作ったあとのお掃除も面倒ですし、、、
なのでもし Lambda で完結するなら、Lambda でサクッとテストしたいなーとか思うわけです。
しかし、Lambda には curl がインストールされていなくて簡単には実行できません。
python + Requests を使え!とかいう声もありそうですが、curl のコマンドを Requests に書き直すのも億劫で、可能なら curl で動作確認したいんですよね。
ということで curl が叩ける Lambda を CDK でサクッとデプロイできるようにしましたよ?って話です。
2023/05/28
前提
CDK v2 がインストールされている
結論
ということで Lambda をさくっとデプロイします。
# コード取得
$ git clone https://github.com/sisi100/lambda-curl-test-cdk.git
# 環境作成
$ npm install
$ pip install -r requirements.txt
# デプロイ
$ make deploy
はい、完成です。
ありがとうございました m(_ _)m
使い方
上記のコマンドで Lambda がデプロイされます。
その Lambda にコンソールからアクセスしてもらうと、こんな ↓ コードが入っているので
この 6 行目にお好みの curl コマンドを書いて Lambda を実行していただければ OK です。
以上(笑)
おまけ
ここから先はわりとどうでも良い話です。
レイヤーどうやって作ってるの?
SAM の DockerImage のなかで、curl を yum 経由でインストールして実行ファイルと依存してるライブラリーをコピーしてレイヤーを作ってます。なのでとくに怪しいことてないですよーというアピールをしてみます。
余談ですが、Lambda 内のターミナル経由で curl を動くようにしてるので、python でなくても node の exec とかでも動きます。(たぶん)
IAM に不要な policy 入ってるよ?
AWS マネージド policy のAWSLambdaVPCAccessExecutionRoleがアタッチされてます。 これは Lambda を VPC に設置するために必要な policy です。この policy があることで、Lambda のコンソールからポチポチ作業するだけで、この Lambda を VPC の中に配置できます。
一応この Lambda が VPC に入れて、そこから curl を送って疎通確認するユースケースを想定してるので、この権限も入れておいたほうが使いやすいかなーという気持ちで入ってます。
今回のリポジトリはこちら
https://github.com/sisi100/lambda-curl-test-cdk
以上ですありがとうございました!