Rubyで動的クラスを使ったクラス設計を考える

地元鉄道の時刻表や駅の情報を返すAPIを考えている。 (Alexaのスキルを作りたくて、そのためのデータを返すAPIがほしいのだった)

欲しいのは、駅の情報(info)・時刻表(timetable)・運賃(fare)。

Akaden というのは地元鉄道の愛称。正式名称は遠州鉄道、略して遠鉄。車体が赤いので市民は「赤電」と呼んでいる。

駅名をメソッドにする

::Akaden::Info.shin_hamamatsu
=> { name: '新浜松', address: '' , ...}
::Akaden::Timetable.kamijima
=> [ { detection: 'upto', week: 'weekday', time: '10:35' }, ... ]
続きを読む

Amplify Geo for AWS Amplify を試してみる

AWS Amplify に AWS Location Serviceのリソースを作成してくれる Amplify Geo のデベロッパープレビューが公開されたので試してみた。

できたものはこちらです。

amplifygeo-20210929141446-hostingbucket-dev.s3-website-ap-northeast-1.amazonaws.com

aws.amazon.com

実は AWS Location Serviceが出た頃に Location Service は試していて、以下のような簡単なアプリケーションを作っていたのだけど、

master.d1h878o7did8z6.amplifyapp.com

f:id:jacoyutorius:20210929225510p:plain
地図にピンを刺すだけ

Amplify Geo を使うとこんな感じの機能をもっと簡単に作れるようになる。

続きを読む

copilot pipelineで作ったCI が「COMMAND_EXECUTION_ERROR Message: Error while executing command: for workload in $WORKLOADS」で FAILする

これについて。

ここ最近 copilot cliが楽しくて、ドキュメント流し見してチュートリアル試して、手元のDockerイメージをデプロイして、、といった感じで遊んでいた。

aws.amazon.com

AWS App Runner がリリースされたことで、コンテナイメージデプロイがとーーーーーーっってもカジュアルにできるようになった。

で、App RunnerでもGithubへのpushをフックして自動デプロイなんてことはやってくれるのだけど、もうちょっと実戦での運用を考えたときに、CI/CDの環境があったほうが便利。copilot ならコマンド一発でそれができる。

copilot pipeline コマンドを叩くとCodePipelineによるCI/CD環境を作ってくれる。

続きを読む

AWS App Runner で Sinatra アプリを起動する

AWS App Runner が発表されました。

aws.amazon.com

Dockerfileを用意するだけでアプリケーションに必要なリソース(VPCとかロードバランサーとか)はマネージドで用意してくれる便利サービスのようです。

僕は使ったことが無いのですが Google Cloudの Cloud Runと似たサービスのようです。

デプロイ方法は2種類用意されており、

  1. Node.js or Python のアプリケーションをコミットしたGithubに接続する
  2. Dockerfileを用意する

1のやり方にはハンズオンが用意されています。

www.apprunnerworkshop.com

続きを読む

CDK + Typescript で DynamoDB のテーブルを作成する

サーバーレスアーキテクチャでアプリケーションを構成する場合、クラウドリソース作成用のテンプレートをどのように管理すべきか悩む。

今回は、

という構成。 AmplifyでもCFnは書けるが、フロントのデプロイの影響を受けてしまいそうなのと、フロントとバックエンドは疎結合にしたほうが良かろう思ってAPIのリソース定義はAWS SAMで書くことにした。DBも同じくバックエンドということでSAMで定義している。

aws.amazon.com

なのでこのCDKのコードは不要になってしまったのだけど、供養ということで。

続きを読む