この記事はシリーズものです。
モチベーション
- 指定した単語と同じ母音を持つ単語を返すツールを作ったが未公開のまま。せっかくだから公開したい
- AWSのサーバーレスのチュートリアル をやったのでAWSで公開したい
- とりあえず最初はミニマムで公開したい
- 変なところにこだわっちゃって結局公開しないケースが多いため、今回は公開することを一番に!
- とりあえずフロントとかは後回しでAPIを作る
作ったもの
> curl https://**********/words\?input_text\=aaua | jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 322 100 322 0 0 61 0 0:00:05 0:00:05 --:--:-- 85 [ { "japanese_word": "キャラクタ", "roman_alphabet": "kyarakuta", "vowels": "aaua" }, { "japanese_word": "アラスカ", "roman_alphabet": "arasuka", "vowels": "aaua" }, { "japanese_word": "頑な", "roman_alphabet": "katakuna", "vowels": "aaua" }, { "japanese_word": "鼻歌", "roman_alphabet": "hanauta", "vowels": "aaua" } ]
母音から成る文字列をクエリとして渡すと、同じ母音を持つ単語のリストを返す。
(ex. "aaa" -> banana[バナナ], karada[身体])
構成図
処理の概要
DynamoDBにデータを格納するまで
japanese_word,roman_alphabet,vowels 頭金,atamakin,aaain どうにかこうにか,dounikakounika,ouiaouia 大砲,taihou,aiou スチーム,suchiimu,uiiu ...
ユーザーがAPIをリクエストしてレスポンスを受けるまで
AWSのサーバーレスのチュートリアル と同じ要領で構築した。
今後の展望
- dynamoDB にアクセスするときに全件取得しているためレスポンスまで時間がかかっている
- Terraform 使って可能な限りコード化したい
- lambda の IAM を毎回手動で設定するのが非常に手間だったので効率化したい
- この API を使ったフロントエンドを実装して Webページ を公開したい
- lambda は全部コンソール上で書いた。git管理下に置きたいので Terraform か何かでデプロイ周りを管理したい