🍣
S3にcsvアップロードしたらDynamoDBに書き込むLambda関数(Golang, terraform, serverless)
仕事でTypeScript, JavaScriptばかり使っていて違う言語を学びたくなってきたので、Golangでも使ってみようと思って作りました。
環境構築はterraformとserverlessを使いました。
とりあえず動かすことを優先したので、バグってたり何かおかしいとこもあるかもです。(一括書き込み25件までとか対応してないです)
作ったもの
s3にcsvファイルをアップロードしたら、
members.csv
1,aaa,m,dev
2,bbb,f,dev
3,ccc,m,dev
4,ddd,f,dev
5,eee,m,dev
6,fff,f,dev
Dynamodbに書き込まれるLambda関数
Github
ここにコードをあげています。
デプロイ
terraformによるAWSリソース構築
dynamodb, IAM, ssmのリソースを構築します。
cd terraform/envs/dev
terraform init
terraform plan
go ビルド -> lambdaデプロイ
make all
sls deploy
感想
Go
- TypeScriptやってたのは良かった。JavaScriptの経験だけだときつかった。
-
*
,&
の使い方難しい。ポインタとかをどう考慮すればよいのかはまだ分からない。 - vscodeの補完が優秀な気がする
- 配列とかの扱いもまだよく分からん。
terraform, serverless
- lambdaのトリガーとなるs3バケットとトリガー設定はterraformではなくserverlessで。
- lambdaはterraformと相性悪そう。
- serverless.yamlでterraformディレクトリは入れないように指定しないとサイズやばい
References
Makefileはこちらを参考にさせていただきました。
Discussion