[セッションレポート] アプリケーション開発を加速させる AWS サービス最新動向 #reinvent #JAP303

オペ部西村祐二です。開催中のre:Invent 2021で「アプリケーション開発を加速させる AWS サービス最新動向」を視聴しましたのでレポートします。AWS Amplify、AWS AppSyncのサービス概要、2021年の主要アップデート情報をキャッチアップできるセッションでした。
2021.12.01

どうも!オペ部@大阪の西村祐二です。

re:Invent2021で公開された日本語セッションの「アプリケーション開発を加速させる AWS サービス最新動向」を聴講したのでレポートさせていただきます。

セッション概要

スピーカー: Takuya Setaka

以下公式サイトからの引用です。

アプリケーションの開発において、ユーザー体験の質を向上させるチャレンジのサイクルを早く回していくことは競合サービスとの差別化につながる重要なポイントとなります。アプリケーション開発に求められるスキルはコーディングのスキルだけではなく、CI/CDを動かす開発フローや分析基盤の構築スキル、スケーラビリティを意識したアーキテクティングなど、多岐に渡るサービスのスキルが必要になります。AWS AmplifyとAWS AppSyncはFE開発の効率化、開発フローの構築支援、AWS環境の調達と運用の効率化などを通してユーザーへの価値創出に集中して取り組むことができるサービスとなっています。本セッションでは、AWS AmplifyとAWS AppSyncの概要と2021年のアップデートを紹介いたします。

AWS Amplify、AWS AppSyncのサービス概要、2021年のアップデート情報をキャッチアップできるセッションとなっています。

以下セッションレポートです。

アジェンダ

アプリケーション開発を加速させるAWSサービスとして、AWS AmplifyとAWS AppSyncにフォーカスをあて、概要と本年のAWS re:Inventに繋がる2021年の最新アップデートをお話しする。

アプリケーション開発について

  • アプリケーションを構築する際によく⽤いられる構成である3 層のアーキテクチャ
  • 各レイヤーごとに考えるべきこと、やるべきことがたくさんある
  • またここにない CI/CD 環境の⽤意や個⼈の開発環境の調達など、開発⾃体を⾏うための作業も存在

 

必要なサーバーの調達や構築ログの出⼒などの作業⾃体がやりたいことではないということに気がつく

 

本来 アプリケーション開発者がやりたいことや考えるべきことは

作業の先にある、ユーザーに価値を届けるということ

アプリケーション開発を加速させるAWSサービス

考えるべきことや、やるべきことにかかる時間や作業コストを下げ、効率化することが可能になり

本来やりたかったユーザーへの価値提供のサイクルを早く多く回し、ビジネスの加速に繋げることが可能になる

AWS Amplify と AWS AppSync にフォーカスを当てて進める

AWS Amplify

開発や運⽤を広くサポートするサービスでAWS Amplify には⼤きく分けて4つの構成要素がある

 

これら4つ要素を活⽤していくことでアプリケーション開発者はユーザー への価値提供に集中することができるようになる

次に構成要素の特徴を深堀りしていく

 

多くのユースケースをサポートしておりAI 機能や分析機能なども含めて多くのカテゴリーを宣⾔的に実装することが可能

例)作成したAPIをHTTPのGETメソッドでコールしたい

  • スライドに記載のスニペットにあるように AWS AmplifyのライブラリからAPI モジュールをインポートし
  • get関数に対してあらかじめ定義したAPI名とパスをセットして呼び出すだけ

直感的にAPIコールをすることが可能

 

Amplify CLI を⽤いると AWS に詳しくなくてもAPI を追加したい 認証機能を追加したいなど「やりたいこと」からAWS のビルディングブロック構築を⾏うことが可能

 

Amplify CLIとも連携することが可能で、Amplify CLI経由でAmplify Consoleによるホスティングが可能

 

Amplify Admin UIはアプリケーションのバックエンドとコンテンツを管理する GUIツール

  • データベーステーブルのモデリング、認可認証機能の追加
  • アプリケーションのコンテンツ管理者や管理者グループの管理を可能

 

AWS AppSync

アプリケーションのデータをリアルタイムで管理、同期することが可能でAmplify DataStoreを活⽤することでオフラインデータの変更、同期なども可能

AWS AppSyncには6つの特徴がある

 

※ファサードとは複雑なAPIをシンプルにするためのインターフェースのこと

 

スライドに記載の例がユースケースとして向いているのではないかと想定される

2021主要アップデート

AWS Amplifyの主要アップデート

Amplifyライブラリでは主にフレームワークやOSに対応する、サービスの幅を広げるアップデートが中⼼に⾏われた

その中でも特徴的な

  • Amplify Flutter の⼀般提供開始
  • Amplify Geo for AWS Amplify の⼀般提供開始

について更に深堀りをしていく

 

Amplify Datastoreを利⽤したオフライン時のデータ操作や、GraphQLとREST APIの署名された HTTP リクエスト、アプリケーション利⽤ユーザーの認証機能のサポートなどが追加されている

 

Amazon Location Service というアプリケーションに位置情報データやトラッキング機能、ジオフェンス機能を追加することのできるサービスとの連携が可能になり、位置情報を⽤いたアプリケーションを素早く構築できるようになった

 

DynamoDBの複数のグローバルセカンダリーインデックスの更新や、IAM ロールに関するアップデートなどが⾏われ、対応するカテゴリーのサービスや、Amplify⾃体の使い勝⼿をよくするアップデートが中⼼に⾏われた

その中でも、

  • Amplify CLI実⾏時にカスタムスクリプトが実⾏可能になるアップデート
  • AWS Lambdaの環境変数とシークレットの保存をサポートするアップデート

をピックアップ

 

特定のディレクトリにスクリプトを置いておくことで、Amplify CLIコマンドの実行前、実行中、実行後のタイミングで処理を⾛らせることが可能

ユースケース

  • 複数⼈開発時に Amplify CLI のバージョンに差がないか、をCLIの実⾏後や実⾏前に確認
  • デプロイコマンド後の環境のクリーンアップなど

 

対話式で保存が可能で、設問を答えていくことでFunction 追加時に環境変数とシークレットの保存をすることが可能

環境ごとに異なる値の切り出しが可能になり、アプリケーションのセキュリティのレベルを上げつつ実装の加速を進めることが可能

シークレットはAWS Systems Manager Parameter Store に保存されているため、何か変更があった場合は単独で更新が可能

 

Amplify Hostingを中⼼にCloudWatchの統合、フルスタックCI/CD機能を新たにローンチする機能など使い勝⼿の⾯で主にアップデートが行われた

Next.jsのサーバーサイドレンダリングアプリケーションに対応したアップデートについて深堀りする

 

最新のバージョン11までの機能をサポートしておりSSR APIルート、動的ページや⾃動事前レンダリングなど最新の機能を⽤いつつAmplifyの強みを活かした開発を⾏うことが可能

 

Amazon Cognitoの既存ユーザープールやID プールを選択できるようになり、既存の ID 資産を活⽤しやすくなるようなアップデートや、Apple アカウントを⽤いたサインイン機能のサポート、Amplify DataStore で複数の認可モードを混合して照合可能にするアップデートなど、

ログイン部分の強化やデータの管理部分を中⼼にアップデートが行われた

 

AWS AppSyncの主要アップデート

今回、AWS Lambda を⽤いたカスタム認証に関するアップデートについて深堀りする

 

特殊な要件に対して

Lambda Authorizerを⽤いて実装を進めることで柔軟なAPI保護が可能になった

具体的なフローとしては

  • 1. Authorization ヘッダーを付与AppSync にリクエストを送信
  • 2. 付与した Authorizationヘッダーの評価をAppSync⾃体が⾏う
  • 3. Lambda関数へ承認イベントを送信し、承認トークンを受け取り定義した⽬的の承認ロジックを実
  • 4. AppSyncは呼び出し後にLambdaからペイロードを受信
  • 5. APIコールを許可または拒否しAppSyncにおけるLambdaからGraphQLリゾルバーへ承認された呼び出しに関するコンテキストデータを操作
  • 6. 承認された操作の実⾏

 

まとめ

感想

個人的に昔、AWS AmplifyやAWS AppSyncを検証で使ってたけどココ1年、2年ぐらい全然キャッチアップできてない状態だったので、とても勉強になりました。

「こんなこともできるようになってるんだ!」と進化の速さを感じながら視聴させていただきました。

今度は実際に触ってみてブログにしていきたいと思います。

また、サービスの概要についても丁寧に説明されていたのでサービスの全体像を知りたい人にもマッチしそうなセッションでした。