Skip to content

Instantly share code, notes, and snippets.

@ttokutake
Last active August 24, 2020 06:44
Show Gist options
  • Save ttokutake/a1744dbe474fe72b3d3d243bc6dc3ddd to your computer and use it in GitHub Desktop.
Save ttokutake/a1744dbe474fe72b3d3d243bc6dc3ddd to your computer and use it in GitHub Desktop.
#AWS #Amplify

AWS Amplifyの使いどころ

自分が触っている構成ざっくり

自分が触っているのはAmplify + React.jsの構成

また別チームでAmplify + ReactNativeでやっていてAmplifyのバックエンドは共有している

ただしCognito User Poolはそれぞれで分ける構成なので、結構しんどめのカスタマイズをせざるを得なかった

というか2020/06/12現在も辛い思いをしている

Amplifyを使うかどうかの判断基準ざっくり

カスタマイズが必要 ≒ Amplify CLIで質問に答えるだけで構築できるインフラ・機能で十分ではない

  • カスタマイズなしに使えるユースケース => 使うと良さそう
  • カスタマイズすれば使えるユースケース => 開発は苦労するが運用は楽になるかも
  • カスタマイズしても使えないユースケース => もちろん使えない

[追記]

Cognitoを2つ用意する必要があるならAmplifyの利用は慎重に検討したほうが良い。

  • Amplifyがauthカテゴリーの利用しか想定していないハードコーディングされているような個所がある。
  • 「通常通りAmplifyを使うチーム + DBなどのリソースはAmplifyで作成されたものを使うがそれ以外は自前のサーバーチーム」みたいな構成の方が平和かもしれない。

感想

  • ユースケースが合っているのであれば使うことでインフラ管理なども含め大幅に労力が削減できる
  • 以下から自分の関係しそうな内容を眺めて使い方の例の範囲でできそうならユースケースに合ってると思って良い
  • また amplify コマンドを実際に叩いてみると意外といろいろ作成できることがわかるのでそれも余裕があれば確かめると良い
  • ただし amplify コマンドの使い方の心構えは今までのGitHubワークフローとちょっと違うところもあるので注意
    1. Gitでファイルは復元できるからといって油断してはいけない。あくまで中心はAmplifyの env である
    • 例えば amplify delete とかやるとGitでファイルを復元してもクラウド側のAmplifyのリソースは元に戻せない
    1. https://docs.amplify.aws/cli/teams/overview はよく読んでおくこと
    2. さらに amplify コマンドと git コマンドを使っていろいろ実践しておくこと
    • 自分の場合はドキュメント読んだだけではこのことが理解できていなかった
  • カスタマイズが必要な案件の場合はまず本当に実現できるのか慎重に判断すると良い
    • ドキュメントや使ってみている人たちの記事などできる限り見たほうが良い
    • 安易に予想してアーキテクチャの設計を進めてしまうと「実はできない」とか「バグでできないっぽい」が起こりうる
    • カスタマイズする場合はCloudFormationやIAMの知識がそれなりにないとキビシイことになるかも
  • ドキュメントが不十分なものが多々
  • 学習コストがそこそこ高いようには思う
    • カスタマイズする場合だけかもしれない
    • 関わるサービスの内容自体もそれなりに理解しないと使いこなすのはキビシイ
    • 自分はCognitoやAppSync(GraphQL)など初めて触るものも多かったため結構時間を費やした
  • ローカル環境での開発(mock)はそこそこできる
    • AppSync + DynamoDBなどはmockが使えるのでローカルでも開発できる
    • ただしElasticsearchやAurora Serverlessを使ったりなどローカルでテストできないものもある
    • 判断するには https://docs.amplify.aws/cli/usage/mock を読むのが早いと思う
  • amplify pull によるバックエンドの共有機能は意外と貧弱
    • 単に aws-exports.js を作成するだけ
    • pullしただけのリポジトリでは amplify status のような基本的なコマンドとかも使えない
    • 一番困ったのは amplify codegen はフロントエンドでそれぞれ実施したいはずだけどそれができなかった
  • カスタマイズが必要だが実現できそうならAmplifyを使うときのメリット
    • CloudFormationをなんとか維持しようという考えがAmplifyのおかげで高められる?
      • 最初の段階では辛いことも多いがこれは運用に入ったときにとんでもなくメリットになると個人的に思う
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment