2024年1月2週目振り返り

今週やったこと

AWS開発環境構築

参画している案件で今のところ本番用のAWS環境しかない状態だったので、機能追加時の動作確認のため開発環境を構築しています。
必要なリソースとしては、MWAA/S3/ECS/VPC/Subnet/Lambda/Secret Manager/RDSなどです。

AWS利用料金を抑えるため開発環境は検証に使う時だけ立ち上げるようにしたいので、Terraformでコードを書いています。

Terraform関連の秘匿情報を含む可能性があるファイルを.gitignoreに追加

Terraformのtfstateファイルなどをリモートリポジトリに上げないようにするため、.gitignoreを更新しました。
以下の.gitignoreの例が参考になりました。

github.com

既存のAWSリソースからTerraformHCLを生成した

importブロックとterraform plan実行時に-generate-config-outオプションを使用することで、既存のリソースのHCLをtfファイルに出力できる昨日があることを知りました。
Terraform 1.5で追加されていたようです。

github.com

この機能を知るまではterraform importコマンドを使ってtfstateファイルを出力してそこから手作業でHCLをtfファイルに書いていたんですが、自動でHCLが書かれることでかなり作業が進めやすくなりました。

MWAA環境を構築する際に必要なAWSリソースの調査

MWAAを構築するために、先に必要になるリソースをTerraformのコードに含めるように調査しつつ実装しました。

ついでにサブネット、インターネットゲートウェイ、NATゲートウェイあたり関係性がうろ覚えになってたので勉強し直しました。

今週学んだこと

IaCする手順のパターン

IaCする時は、リソースは必ず最初からコードで記述しないといけないというイメージがありましたが、以下の記事を読んで先にマネジメントコンソールで構築してその後コードで記述する手順も良いなと思いました。

tech.layerx.co.jp

しかもTerraform 1.5以降はgenerate-config-outオプションを使ってHCLを出力できるので、terraform planで差分を確認する部分がかなり省略できてすごく良さそうです。

ZappaというライブラリでLambdaとAPI Gatewayをデプロイできる

github.com

Zappaというライブラリを使ってPythonアプリケーションを AWS Lambda と API Gatewayにデプロイできるということを知りました。

面白そうと思って少しコードを読んでみたところ、Lambdaはboto3で作成されて、API Gatewayはtroposphereという別のライブラリもメソッドで作成しているようでした。

github.com

実際に使うかはわからないですが、コードの書き方などはかなり勉強になるので時々読んでみます。

勉強になった記事など

terraform.lock.hclについて

terraform.lock.hclを.gitignoreに含めるべきかどうかよくわからなかったので色々記事を読んでみて、まだ正確に理解しきれていないですが、まずはバージョン管理対象にして問題なさそうでした。

developer.hashicorp.com

qiita.com