AWS Amplify で始める、サクッとアプリ開発
Author : 永山 "じゃが" 大輔
アプリ開発者のみなさまこんにちは!Startup Solutions Architect の じゃが です。
さっそく本題です、もっと手軽に AWS のサービスが使いこなせたら便利だと考えたことはありませんか ?
AWS は様々なビルディングブロックを提供しています。ユーザーの認証基盤を作るために Amazon Cognito、マネージドに GraphQL API をホストするための AWS AppSync、画像認識機能を組み込むための Amazon Rekognition などなど。ブロックを組み合わせて自分が思う通りのサービスがスパッと作れたら素敵ですが、実際にはサービス間の連携を考えたり、IAM の許可を考えたりと、手軽に開発し始めるにはやることが多いと感じる方もいらっしゃるのではないでしょうか。
パパッと最小限の設定で AWS のリソースを使えたら・・・
でもセキュリティはちゃんと維持したい・・・
コストは最低限で済ませたい・・・
万一バズったらちゃんとスケールしてほしい・・・
そんな夢みたいなツール (を目指している) のが今回ご紹介する AWS Amplify です !
AWS Amplifyとは ?
AWS Amplify は
- サーバーレスなバックエンドをセットアップするための Amplify CLI
- フロントエンドからバックエンドに接続するための Amplify Libraries
- CI/CD やウェブアプリのホスティングに向けた Amplify Console
- ユーザー管理や CMS 的なコンテンツ管理を一元化するコンソール Amplify Admin UI
などから構成される、Web およびモバイルアプリ開発のためのフレームワークです。
クリックすると拡大します
AWS Amplify を使うと何が嬉しいのでしょうか ?
Amplify の魅力① ユースケースベースで開発できる
例えば AWS で認証基盤を構築したい ! と思った際には、「AWS 認証」といった検索をかけて、適したサービスや構成を考える方が多いと思います。一方でユースケースにぴったりはまるサービスを探し出して、ドキュメントを読んで使い始めるのはなかなか骨が折れます。
AWS Amplify では「カテゴリ」と呼ばれる機能単位でアプリケーションに機能を追加することができます。例えば Auth カテゴリでは認証機能を追加することができ、API では REST API や GraphQL API をセットアップできます。このように、AWS Amplify では様々な機能をユースケースベースで追加できるのがポイントです。
クリックすると拡大します
Amplify の魅力② 最低限の設定で使い始められる
AWS のマネジメントコンソール上でサービスを使い始める際には、様々な設定項目が必要になります。
Amplify CLI では、対話形式で各種設定を行います。この際、最低限必要な項目だけを選択することでセットアップできます。一方でオプションを選択することで、追加の設定を行うこともできます。
例1. GraphQL API のセットアップ
例えば Amplify CLI で GraphQL API をセットアップする際に必要な設定はこれだけです。
クリックすると拡大します
この全ての入力でデフォルトの選択肢が用意されており、エンターキーを押していくだけで GraphQL API をセットアップすることができます。もちろん API キーの有効期限を変えたり、API の認証方式として Amazon Cognito を利用することもできます。
こちらは API キーの代わりに Cognito を利用する例です。
クリックすると拡大します
例 2. ウェブアプリの CI/CD 付き静的ホスティング
Amplify Console では、GitHub のレポジトリと連携するだけで、$ git push するたびに最新のアプリケーションに更新してくれる CI/CD パイプライン付きのホスティング環境を導入することが可能です。
クリックすると拡大します
Amplify の魅力③ AWSのベストプラクティスに沿った構成が手軽に作れる
セキュリティ
AWS 上のリソース間での呼び出し権限 (例えば AWS AppSync が AWS Lambda を呼び出すなど) を管理するには、 AWS IAM という仕組みを利用します。IAM で必要最低限の権限のみをリソースに与えることでセキュリティレベルを引き上げることができます。一方で手軽に開発したいときに、細かい IAM の設定を行うのはなかなか骨が折れるため、ついつい大きめの権限を与えてしまっている、という話もお聞きします。
AWS リソースのプロビジョニングに利用する Amplify CLI は、対話形式のインタフェースで作成したリソース間の呼び出し用権限を追加してくれます ! IAM のポリシーを一から書く必要はありません。
(注) 一方、Amplify CLI 自体は様々なリソースをプロビジョニングする関係上、デフォルトでは「Administrator Access」という大きめの権限を要求されます。この権限はより小さい権限を与えたり(Advanced workflows - IAM Policy を参照)、MFA を Amplify CLI で利用することでセキュリティレベルを高める (痒いところに手が届くAmplify を参照)、あるいは開発環境でのみ大きめの権限を与えて、本番環境では厳しく統制する (AWS Amplify 実践編 を参照)といった形で、セキュリティレベルを高めることが可能です。
スケーラビリティ
AWS Amplify プロビジョンするリソースはほとんどがサーバーレスです。サーバーレスなサービスを利用することで、スケーラビリティを担保することが可能になります。最初にスモールスタートした時と同じ構成でプロダクトが成長した後もアクセスを捌くよう設定することが可能です。大規模なトラフィックがあるサービスを AWS Amplify で開発されている事例として、 イオレ様の「AMPLIFYでちょっと⼤きめのサービスをつくってみた話」という事例があるので是非ご参照ください。
コスト
同じくサーバーレスな構成の恩恵として、コストの最適化が挙げられます。サーバーレスなサービスは従量課金式のサービスがほとんどで、アプリケーションのトラフィックに合わせてコストも増減します。従来の EC2 インスタンスを用いたアプリケーションでは、トラフィックが少ない場合でも定常的にコストがかかってしまいます。サーバーレスな環境ではトラフィックの少ない立ち上げ時のコストが抑えられるだけでん、サービスが成長した後もトラフィックに応じた課金となり、コストの最適化を行うことができます。
以上のように、ベストプラクティスに沿ったサーバーレスなバックエンド構成を複雑な設定なしで実現できる点が、Amplifyの大きなメリットです。
Amplify を今日から始めたい人へ
この記事を読んで AWS Amplify に俄然興味が湧いてきたのではないでしょうか ?
AWS Amplify を始めるには、大まかに 3 つのステップがあります
- AWS アカウントを開設する
- 自分の好きな Amplify チュートリアルを動かす
- より発展的なワークショップで Amplify の威力を体感する
1. AWS アカウントを開設する
AWS アカウントを自分で開設したことがない、けど Amplify を触ってみたい、という方は AWS Hands-on for Beginners ハンズオンはじめの一歩: AWS アカウントの作り方 & IAM 基本のキ をご参照ください。アカウントの作り方と、セキュリティの要である IAM の基本を学ぶことができます。
2. 自分の好きな Amplify チュートリアルを動かす
AWS Amplify では様々なフロントエンドフレームワーク向けのチュートリアルが用意されています。ご自身のお好きなフレームワークのチュートリアルを選んで、実際に Amplify を動かしてみましょう !
ウェブアプリ
クロスプラットフォーム
3. より発展的なワークショップで Amplify の威力を体感する
チュートリアルを動かした方は、もう少し発展的な Amplify を用いたアプリ開発を体験してみたいと思われるかもしれません。そんな方はぜひ Amplify SNS Workshop を試してみてください!CTO に成りきって Twitter ライクなアプリを Amplify と React を使って開発するワークショップです。認証や GraphQL API 周りの発展的な利用方法や、複数メンバーでの開発が学ぶことができます。
もっと AWS Amplify を学びたい人へ
チュートリアルを動かして、もっと AWS Amplify を学びたくなった未来のあなたに朗報です ! AWS Amplify には様々な学習コンテンツ・コミュニティがあり、ご活用いただくことでもっと楽しく・効率的に Amplify を学べるはずです。本項では三つのリソースをご紹介したいと思います。
1. Amplify Meetup
Amplify 面白そうだけど、本番環境で使えるの ? と心配される方もいらっしゃると思います。 Amplify Meetup は、Amplify ユーザーによるオンライン LT 会です。Amplify を本番環境で利用されているユーザー様に、Amplify の良さ、運用のコツ、工夫したところなどについてざっくばらんに LT していただいています !
過去の開催記事には計 8 件の Amplify の事例資料が掲載されています。
- 【全資料まとめ & 開催報告】Amplify Meetup #01 | Amazon Web Services ブログ
- 【開催報告 & 全資料まとめ & QA 公開】Amplify Meetup #02 | Amazon Web Services ブログ
Meetup の情報を受け取れる Connpass グループ も合わせてご登録をおすすめします。
また、4/2 (金) には Amplify Meetup #03 が開催予定です。ぜひご参加ください。
2. Amplify Japan User Group
Amplify のユーザー同士で Amplify の新機能の話をしたり、イベントで登壇するなど告知をしたり、わちゃわちゃできる場所、それが Amplify Japan User Group の Slack です !
GitHub ページにある Slack 招待リンク からサインインできますので、お気軽にご参加ください。
3. Amplify のお役立ちリンク集
Amplify では AWS からの記事・資料はもちろんのこと、ユーザー様が執筆された記事も数多く存在します。そうした記事や、より発展的なチュートリアル、Tips などが詰まったリンク集が aws-amplify-jp/awesome-aws-amplify-ja になります。(英語版はこちら→ dabit3/awesome-aws-amplify) AWS Amplify の XXX を知りたい ! と思った際には、まずはこちらのリンクから探していただくとよいかもしれません。また、Amplify Community ページではイベントや最新の Amplify 関連の記事が投稿・閲覧できます。
Amplify は OSS の文化を大事にしているということもあり、誰でもこうしたリソースにプルリクエストを送ることができます。情報収拾に使っていただくのはもちろん、ご自身がホストされるイベントや執筆された記事を全世界に発信するのにもご活用ください!
まとめ
AWS Amplify の魅力、そして使い始めるためのリソースについてご紹介させていただきました。AWS Amplify を上手に利用して、開発スピードを一気に向上させてみませんか ?
Special Thanks to Koya Kimura, Takahiro Suzuki, Daijiro Wachi for Review.
筆者プロフィール
じゃが (永山 大輔) @jagaimogmog
アマゾン ウェブ サービス ジャパン合同会社
スタートアップ ソリューションアーキテクト
AWS Japan で主にスタートアップのお役様の技術支援をしています。好きな AWS のサービスは AWS Amplify とAmazon Chime SDK、時々 Amazon Pinpoint。ニックネームの「じゃが」の由来は足が速い動物のジャガーではない (足は遅め)。
AWS を無料でお試しいただけます