Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS Lambda on IaCを追い求め続けて1年経った

AWS Lambda on IaCを追い求め続けて1年経った

Avatar for Michael

Michael

July 26, 2019

More Decks by Michael

Other Decks in Programming

Transcript

  1. 小松凌也 • 社会 2年目 • 技術 Terraform AWS GCP Python

    Go Docker Kubernetes • 趣味 バイク ツーリング 旅行 カメラ ボルダリング @mic_psm
  2. MV Agusta Brutale 800 Dragster RR n 並列3気筒 798cc n

    140馬力 / 8.87kgf・m n 13,200rpm (回転数リミット) n 3.0秒 (0-100km/h加速) n 244.0km/h (最高速度) n はやい・かっこいい 3
  3. Lambdaの手動デプロイ 7 1. Lambda functionを実装する。 2. 依存ライブラリのインストール / ビルドをする。 3.

    zipで固める。 4. GUIかCLI経由でアップロードする。 管理とデプロイが辛い (環境変数/リソース取り違え) (差分が分からん) (何回もやるの面倒)
  4. 8

  5. Lambda on Terraform 11 n resource: template_dir テンプレートのプレースホルダに変数を展開 n provisioner:

    local-exec ライブラリのインストール n data source: archive_file zipファイル生成
  6. Lambda on Terraform 12 n resource: template_dir テンプレートのプレースホルダに変数を展開 n provisioner:

    local-exec ライブラリのインストール n data source: archive_file zipファイル生成 n resource: aws_lambda_function Lambda functionのデプロイ
  7. Lambda on Terraform 16 n template_dirはリソース、archive_fileはデータソース n 一回目の実行ではtemplate_dirが作られたあとにarchive_fileでzipが作られ る n

    二回目以降では既にtemplate_dirによってディレクトリが作成されてし まっているので、一個前の実行で作成されたディレクトリのzipが archive_fileによって作られる(=ズレる) n なので毎回template_dirで作られたディレクトリをrm -rfとかで無理やり消 す必要がある。 強制デプロイが何故起こるか
  8. 17

  9. 21

  10. 25

  11. Lambda + layer on Terraformの実現方法 30 n必要なライブラリとか関数とかクラスとかまとめ て突っ込んでおく(必要に応じて分ける nfunctionとは別のtfstateで管理する Lambda

    layer nlayerから必要なものをimportして使うだけ nlayerとは別のtfstateで管理する Lambda function そして生まれるCommon Layer