Blog

CloudFormation IaC ジェネレーターでLambda関数をIaC化する

こんにちは、IaCお姉さんです。

CloudFormationにIaC ジェネレーターという新しい機能が出たので使っていきます。

IaC ジェネレーターについては、以下の公式ページをご覧ください。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/generate-IaC-write-only-properties.html

今回はLambda関数をIaC化します。

コンソールからLambda関数を作成

言語はPythonを選んで、デフォルトのソースコードのまま作成しました。

CloudFormation IaCジェネレーターでテンプレートを作成

コンソールのIaCジェネレーターから「テンプレート作成」をクリックし、今回作ったLambda関数を選択し、テンプレートを作成します。

できたテンプレートがこちらです。

テンプレートを手直しする

テンプレートを作成するとこのような画面になります。

黄色い枠の中にwarningが出ています。

「このテンプレートはまだ未完成だから自分でなんとかしてね」と言っています。

「View warning details」をクリックしてみると、どうやら「Code/S3Bucket」と「Code/S3Key」は自分で値を用意しないといけないようです。

CloudFormationでLambda関数を作成する際、コードのアップロード方法として、以下の3種類があります。

  • S3からアップロード
  • ECRのイメージとしてアップロード
  • zipファイルをアップロード

ですが、IaCジェネレーターから既存のLambda関数のテンプレートを作成する時に、コードがどうやってアップロードされたかは検知できず、「Code」部分にはS3からアップロードした場合のソースが作成されるようです。
(ECRイメージの関数もテンプレート化してみましたが、同様に「Code/S3Bucket」と「Code/S3Key」のパラメータでテンプレートが生成されました。)

テンプレートを実際に使う時は、適宜アップロード方法を書き換えないといけません。

詳細はこちらのドキュメントを参照

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/generate-IaC-write-only-properties.html

今回は、凝ったことはせずzipファイルでアップロードするようにテンプレートを書き換えます。

Lambda関数の画面からコードをコピーして、テンプレートの「Code」部分に貼り付けます。

インポートする

テンプレートが完成したら、インポートして、リソースをCloudFormationの管理下に置きます。

画面の「Import edited template」から、先ほど「Code」部分を編集したファイルをアップロードしてインポート完了です。

まとめ

IaCジェネレーター、とっても便利なので皆さんも使ってみましょう^ヮ^

ただし、一部のリソースではテンプレート作成後に人力で修正を加えないといけないようです。

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!