今週やったこと
AWS開発環境構築
参画している案件で今のところ本番用のAWS環境しかない状態だったので、機能追加時の動作確認のため開発環境を構築しています。
必要なリソースとしては、MWAA/S3/ECS/VPC/Subnet/Lambda/Secret Manager/RDSなどです。
AWS利用料金を抑えるため開発環境は検証に使う時だけ立ち上げるようにしたいので、Terraformでコードを書いています。
Terraform関連の秘匿情報を含む可能性があるファイルを.gitignoreに追加
Terraformのtfstateファイルなどをリモートリポジトリに上げないようにするため、.gitignoreを更新しました。
以下の.gitignoreの例が参考になりました。
既存のAWSリソースからTerraformHCLを生成した
importブロックとterraform plan実行時に-generate-config-outオプションを使用することで、既存のリソースのHCLをtfファイルに出力できる昨日があることを知りました。
Terraform 1.5で追加されていたようです。
この機能を知るまではterraform importコマンドを使ってtfstateファイルを出力してそこから手作業でHCLをtfファイルに書いていたんですが、自動でHCLが書かれることでかなり作業が進めやすくなりました。
MWAA環境を構築する際に必要なAWSリソースの調査
MWAAを構築するために、先に必要になるリソースをTerraformのコードに含めるように調査しつつ実装しました。
ついでにサブネット、インターネットゲートウェイ、NATゲートウェイあたり関係性がうろ覚えになってたので勉強し直しました。
今週学んだこと
IaCする手順のパターン
IaCする時は、リソースは必ず最初からコードで記述しないといけないというイメージがありましたが、以下の記事を読んで先にマネジメントコンソールで構築してその後コードで記述する手順も良いなと思いました。
しかもTerraform 1.5以降はgenerate-config-outオプションを使ってHCLを出力できるので、terraform planで差分を確認する部分がかなり省略できてすごく良さそうです。
ZappaというライブラリでLambdaとAPI Gatewayをデプロイできる
Zappaというライブラリを使ってPythonアプリケーションを AWS Lambda と API Gatewayにデプロイできるということを知りました。
面白そうと思って少しコードを読んでみたところ、Lambdaはboto3で作成されて、API Gatewayはtroposphereという別のライブラリもメソッドで作成しているようでした。
実際に使うかはわからないですが、コードの書き方などはかなり勉強になるので時々読んでみます。
勉強になった記事など
terraform.lock.hclについて
terraform.lock.hclを.gitignoreに含めるべきかどうかよくわからなかったので色々記事を読んでみて、まだ正確に理解しきれていないですが、まずはバージョン管理対象にして問題なさそうでした。