Amazon Cognito の使用を開始する

Q: Amazon Cognito とは何ですか?
Amazon Cognito では、モバイルアプリケーションやウェブアプリケーションにユーザーのサインアップと認証機能を簡単に追加できます。Amazon Cognito を使用すると、外部 ID プロバイダーを介してユーザーを認証したり、AWS 内のアプリケーションのバックエンドリソースまたは Amazon API Gateway で保護されているサービスにアクセスするための一時的なセキュリティ認証情報を付与したりできます。Amazon Cognito は SAML または OpenID Connect、ソーシャル ID プロバイダー (Facebook、Twitter、Amazon など) をサポートする外部 ID プロバイダーと併用し、独自の ID プロバイダーを統合することもできます。

また、Amazon Cognito を使用すると、データをユーザーのデバイス間で同期することができるため、ユーザーがデバイスを切り替えたり、新しいデバイスにアップグレードしても、一貫性のあるアプリケーション体験を継続的に提供できます。データをユーザーのデバイスにローカルに保存できるため、デバイスがオフラインの場合でもアプリケーションを使用でき、オンラインになった時にデータを自動的に同期することができます。

Amazon Cognito を使用すれば、ユーザー管理、認証、およびプラットフォームやデバイス間の同期を処理するソリューションの構築、セキュリティの確保、スケーリングに手間をかけることなく、優れたアプリケーション体験を作成することに集中できます。

Q: 誰が Amazon Cognito を使用できますか?
Amazon Cognito は、開発者がモバイルアプリケーションおよびウェブアプリケーションにユーザー管理を追加したり、機能を同期したりできるように、設計されています。開発者は Cognito Identity を使用してアプリケーションにサインアップおよびサインイン機能を追加することができます。また、ユーザーがアプリケーションのリソースに安全にアクセスできるようにすることも可能です。さらに、Cognito を使用すると、複数のデバイス、プラットフォーム、アプリケーション間でデータを同期できます。

Q: Amazon Cognito の使用はどのように開始できますか?
AWS コンソールにアクセスすると、簡単に使用を開始できます。アマゾン ウェブ サービスのアカウントを持っていない場合、コンソールにサインインするときにアカウントを作成できます。ユーザー管理のためのユーザープールか、フェデレーティッドアイデンティティまたは同期オペレーションのためのアイデンティティプールを作成すると、AWS Mobile SDK をダウンロードしてアプリケーションと統合できます。SDK を使用する代わりに、Cognito のサーバー側の API を直接呼び出すこともできます。詳細については、開発者ガイドをご覧ください。

Q: Amazon Cognito ではサーバー側の API を公開していますか?
はい。Cognito ではサーバー側の API を公開しています。サーバー側の API を直接呼び出して、Cognito の独自のカスタムインターフェイスを作成できます。サーバー側の API については、開発者ガイドをご覧ください。

Q: Amazon Cognito ではどのプラットフォームがサポートされていますか?
オプションの AWS Mobile SDK を使うと、iOS、Android、Unity、Kindle Fire での Cognito の使用がサポートされます。Cognito は AWS SDK for JavaScript でも使用できます。Cognito Your User Pools は現在、AWS Mobile SDKs for iOS、AWS Mobile SDKs for Android、JavaScript AWS SDK for Cognito でサポートされています。SDK をダウンロードするには、リソースページをご覧ください。

Q: AWS Mobile SDK は必ず使用しなければなりませんか?
いいえ。Cognito では、コントロール API とデータ API をウェブサービスとして公開しています。サーバー側の API を直接呼び出して独自のクライアントライブラリを実装することが可能です。

 

Q: 自分のアイデンティティプロバイダーを使用して、ユーザーのサインアップとサインインをサポートできますか?

はい。Cognito Identity を使用すると、サインアップ機能とサインイン機能をアプリケーションに簡単かつ安全に追加できます。ユーザーは、E メール、電話番号、またはユーザー名を使用してサインアップおよびサインインできます。また、E メールの確認、電話番号の確認、および多要素認証などの強化されたセキュリティ機能を実装できます。さらに、Cognito Identity を使用すると AWS Lambda による不正検出とユーザー検証のためのユーザー登録にアプリケーション固有のロジックを追加するなどして、ワークフローをカスタマイズすることができます。詳細については、こちらの資料を参照してください。

Q: ユーザープールとは何ですか?

ユーザープールは、ウェブアプリケーションやモバイルアプリケーションに対して構成できるユーザーのディレクトリです。ユーザープールではユーザーのプロファイル属性が安全に保存されます。AWS コンソール、AWS CLI、または AWS SDK を使用して、ユーザープールを作成および管理できます。

Q: Cognito Identity ではどのようなユーザープロファイル情報がサポートされていますか?

開発者は、(ユーザー名、電話番号、住所、タイムゾーンなど) 標準的な OpenID 接続ベースのユーザープロファイル属性を使用するか、アプリケーション固有のユーザー属性をカスタマイズできます。

Q: アプリケーションのユーザーが、E メールアドレスまたは電話番号で、サインアップまたはサインインできるようにすることは可能ですか?

はい。エイリアシング機能を使用すると、E メールアドレスとパスワード、または電話番号とパスワードで、サインアップまたはサインインすることが可能です。詳細については、こちらのドキュメントを参照してください。

Q: パスワードポリシーを設定することはできますか?

はい。ユーザープールを設定または構成する時に、パスワードの強度と文字タイプの要件などのパスワードポリシーを設定できます。

Q: 自分のアプリケーションのユーザーの E メールアドレスと電話番号を確認することはできますか?

はい。Cognito Identity では、お客様のアプリケーションへのアクセスを付与する前にユーザーの E メールアドレスや電話番号の確認を義務付けることができます。サインアップ時に、認証コードがユーザーの電話番号または E メールアドレス宛に送信されます。サインアップを完了し、確認済みの状態にするためには、その認証コードを入力する必要があります。

Q: Cognito Identity では、SMS ベースの Multi-Factor Authentication (MFA) がサポートされていますか?

はい。アプリケーションのエンドユーザーは SMS ベースの MFA でサインインできます。SMS ベースの MFA を有効にすると、ユーザーはパスワード (第 1 の要素、つまりユーザーが知っているもの) と SMS を介して携帯電話でのみ受信することができるセキュリティコード (第 2 の要素、つまりユーザーが持っているもの) の入力を求められます。

Q: ユーザーのサインアップとサインインのワークフローをカスタマイズすることはできますか?

はい。AWS Lambda を使用するとユーザーのサインアップフローおよびサインインフローにアプリケーション固有のロジックを追加することにより、サインアップおよびサインインをカスタマイズできます。例えば、AWS Lambda 関数を作成して、不正を識別することや、ユーザーデータの検証を追加することができます。開発者が供給する Lambda 関数を、登録前、確認後、認証前、チャレンジをカスタマイズする認証時、および認証後にトリガーできます。また、Lambda 関数を使用して、E メールまたは電話番号の確認、および多要素認証の一部として送信されるメッセージをカスタマイズできます。

Q: Cognitio ユーザープールで、アプリケーションのユーザーが使っているデバイスを覚えておくことができますか?

はい。ユーザーがアプリケーションにアクセスするときに使用したデバイスを記憶するように選択でき、Cognito ユーザープールでそのデバイスとアプリケーションのユーザーを関連付けることができます。また、多要素認証をセットアップするとき、記憶しているデバイスを使用してユーザーの第 2 要素のチャレンジを抑制することも選択できます。

Q: どのようにして既存のユーザーを Amazon Cognito ユーザープールに移行できますか?

AWS のインポートツールを使用して、既存のユーザーを Amazon Cognito ユーザープールに移行できます。ユーザー属性値は .csv ファイルからインポートされます。このファイルはコンソール、API、または CLI によってアップロードできます。インポートされたユーザーは、初回サインイン時に、E メールアドレスや携帯電話に送信されたコードを使って自分のアカウントを確認し、新しいパスワードを作成します。インポートツールを使用しても追加コストは発生しません。詳細については、インポートツールのドキュメントを参照してください。

インポートツールでは、パスワードは移行されません。ユーザーの現在のパスワードを保持する場合、移行期間中にアプリケーションにサインインしてくるユーザーを 1 度に 1 人ずつ移行する、別のアプローチを考慮できます。このアプローチにおいて、アプリケーションは最初に Cognito ユーザープールのユーザーでのサインインを試行します。そのユーザーがユーザープールに存在していない場合、アプリケーションは既存のアイデンティティシステムを使ってユーザーをサインインさせ、使用されたユーザー名とパスワードを一時的に保持します。ユーザーが既存のアイデンティティシステムによってサインインに成功すると、アプリケーションによって同じユーザー名とパスワードを使用したユーザーが Cognito ユーザープールに作成されます。このアプローチでは移行期間中に既存のアイデンティティシステムを維持しておく必要がありますが、移行期間終了後にインポートツールを使って残りのユーザーを (パスワードなしで) インポートできます。 

Q: Cognito Identity を使用して、ID フェデレーションを行ったり、AWS リソースに安全にアクセスしたりすることはできますか?
はい、Cognito Identity を使用すると、外部 ID プロバイダーを介してユーザーを認証したり、AWS 内のアプリケーションのバックエンドリソースまたは Amazon API Gateway で保護されているサービスにアクセスするための一時的なセキュリティ認証情報を付与することもできます。Amazon Cognito は SAML または OpenID Connect、ソーシャル ID プロバイダー (Facebook、Twitter、Amazon など) をサポートする外部 ID プロバイダーと併用し、独自の ID プロバイダーを統合することもできます。

Q: Amazon Cognito Identity では、どのパブリックアイデンティティプロバイダを使用できますか?
Amazon、Facebook、Twitter、Digits、Google、その他の OpenID Connect 対応アイデンティティプロバイダを使用できます。

Q:アイデンティティプールとは何ですか?
アイデンティティプールとは、アプリケーションのフェデレーティッドアイデンティティを継続的に整理するために Cognito Identity で使用されるコンテナです。アイデンティティプールでは、ソーシャルアイデンティティプロバイダのフェデレーティッドアイデンティティが一意のユーザー固有の識別子に関連付けられます。アイデンティティプールでは、ユーザープロファイルは保存されません。アイデンティティプールは、1 つのアプリケーションに関連付けることも、複数のアプリケーションに関連付けることもできます。2 つのアプリケーションに対してそれぞれ異なるアイデンティティプールを使用している場合、同じエンドユーザーが各アイデンティティプールで異なる一意の識別子を持つことになります。

Q: パブリックアイデンティティプロバイダを使用したログインの流れはどのようなものですか?
モバイルアプリケーションでは、アイデンティティプロバイダ (IdP) の SDK を使用して認証が行われます。エンドユーザーが IdP で認証されると、IdP から返される OAuth や OpenID Connect のトークン、または SAML アサーションが、アプリケーションを通して Cognito Identity に渡されます。その後、ユーザーの新しい Cognito ID と、権限の制限された一時的な AWS 認証情報一式が、Amazon Cognito から返されます。

Q: 自分自身のユーザーを登録して認証することはできますか?
Cognito Identity は既存の認証システムと統合できます。簡単な API 呼び出しで、お客様がユーザーに割り当てた一意の識別子に基づくエンドユーザー向けの Cognito ID を取得できます。Cognito Identity が提供する Cognito ID と OpenID Token を取得すると、Cognito Identity クライアントの SDK を使用して AWS リソースにアクセスし、ユーザーデータを同期させることができます。Cognito Identity は完全に管理されたアイデンティティプロバイダであり、モバイルアプリケーションやウェブアプリケーションにユーザーのサインアップやサインイン機能をより簡単に実装できます。

Q: Cognito Identity は権限を制御し、AWS のサービスに安全にアクセスするためにどのように役立ちますか?
Cognito Identity では、AWS リソースにアクセスするための、権限の制限された一時的な認証情報一式が、ユーザーに割り当てられるため、AWS アカウントの認証情報を使用する必要がありません。各ユーザーの権限は、お客様が作成する AWS IAM ロールを通して制御されます。各ユーザーの IAM ロールを選択するルールを定義できます。または、Cognito ユーザープールにあるグループを使用している場合は、グループに基づいて IAM ロールを割り当てることができます。Cognito Identity を使用すると、認証されていないゲストユーザーに権限が制限されている個別の IAM ロールを定義することもできます。また、特定のリソースへのアクセスを制御するユーザーに対して Cognito で生成する一意の識別子を使用できます。例えば、S3 バケットに対して、各ユーザーがバケット内の自分のフォルダーのみにアクセスできるようにするポリシーを作成できます。

Q: パブリックアイデンティティプロバイダを使用する場合は、Amazon Cognito Identity ではユーザーの認証情報が保存されますか?

いいえ。お客様のアプリケーションにより、サポートされているパブリックアイデンティティプロバイダ (Amazon、Facebook、Twitter、Digits、Google、または Open ID Connect に準拠しているプロバイダ) と直接通信が行われ、ユーザーが認証されます。Cognito Identity でユーザーの認証情報を取得または保存することはありません。Cognito Identity では、アイデンティティプロバイダから発行されたトークンを使用してユーザーの一意の識別子を取得した後、一方向のハッシュを使用してその識別子をハッシュします。このため、実際のユーザー識別子を保存しなくても、今後、同じユーザーを再度認識できます。

Q: Cognito Identity では、ユーザーに関する機密情報をアイデンティティプロバイダから受信することや、それを保存することはありますか?
いいえ。Cognito Identity が機密情報 (メールアドレス、友達リストなど) をアイデンティティプロバイダから受信することはありません。

Q: Cognito Identity を使用していても、独自のバックエンドの認証システムは必要ですか?
いいえ。Cognito Identity では、Amazon、Facebook、Twitter、Digits、Google からのログインがサポートされており、未認証のユーザーに対するサポートも提供されています。Cognito Identity を使用すると、バックエンドコードを記述することなく、フェデレーティッド認証、プロファイルデータ同期ストア、AWS アクセストークンのディストリビューションをサポートできます。

Q: ユーザーにログインを強制したくない場合は、どうすればよいですか?
Cognito Identity では、承認済みのユーザーに加えて未承認のユーザーの作成処理とトークン自動交付処理を行うことができます。これにより、アプリケーションで別のログイン画面が表示されて抵抗感を与えるということがなくなりますが、権限の制限された一時的な認証情報を使用できるため、AWS リソースにアクセスすることができます。

Q: 未認証のユーザーとは何ですか?
未認証のユーザーは、どの ID プロバイダーでも認証を行っていないものの、ゲストとしてアプリケーションにアクセスするユーザーのことです。このようなユーザーには、バックエンドリソースにアクセスするための制限された権限を付与する個別の IAM ロールを定義することができます。

Q: 同じデバイスで異なるユーザーがアプリケーションを使用する場合、Cognito Identity では個別のアイデンティティをサポートしますか?
はい。Cognito Identity では、家族で 1 台の iPad を使用する場合など、1 つのデバイスでの個別のアイデンティティの使用をサポートしています。各アイデンティティは個別に扱われ、ユーザーがアプリケーションにログイン/ログアウトする方法や、ローカルやリモートでアプリケーションデータが保存される方法を、完全に制御できます。

Q: Cognito Identity に関連付けられたデータは、どのように保存しますか?
Cognito Identity に関連付けられたデータセットをプログラムで作成し、キー/値のペアの形式でデータの保存を開始できます。データはローカルのデバイスと Cognito 同期ストアの両方に保存されます。また、Cognito ではエンドユーザーのすべてのデバイス間でこのデータを同期することもできます。

Q: Cognito Identity コンソールに表示されたアイデンティティの数は、自分のアプリケーションを使用しているユーザーの数を示していますか?
Cognito Identity コンソールに表示されたアイデンティティの数は、Cognito Identity API で作成されたアイデンティティの数を示します。認証されたアイデンティティ (Facebook や OpenID Connect プロバイダといったログインプロバイダを使ってログインするアイデンティティ) の場合、Cognito Identity の GetId API が呼び出されるたびに作成される各ユーザーのアイデンティティは 1 つのみです。ただし、未認証のアイデンティティの場合は、アプリケーションのクライアントから GetId API が呼び出されるたびに、新しいアイデンティティが生成されます。したがって、1 人のユーザーの未認証のアイデンティティに対してアプリケーションから GetId が複数回呼び出された場合、1 人のユーザーに複数のアイデンティティがあるように表示されます。このため、未認証のアイデンティティを使用する場合は、GetId からの応答をキャッシュして、1 人のユーザーに対して GetId を複数回呼び出さないようにすることが重要です。

Cognito アイデンティティを自動的にキャッシュするロジックは Mobile SDK により提供されます。この処理について心配する必要はありません。固有ユーザーの追跡機能を含め、アプリケーションの完全な分析ソリューションをお探しのお客様は、Amazon Mobile Analytics をご覧ください。

Q: Amazon Cognito 同期ストアとは何ですか?
Amazon Cognito 同期ストアとは、Amazon Cognito のアイデンティティに連結されたキー/値のペアのストアです。アイデンティティプールと同期ストアで作成できるアイデンティティの数に制限はありません。Amazon Cognito 同期ストア内の各アイデンティティには、独自のユーザー情報ストアがあります。

Q: データは直接 Amazon Cognito 同期ストアに保存されますか?
いいえ。オプションの AWS Mobile SDK を使用すると、データがローカルデバイスの SQLite データベースに保存されます。この方法で、アプリケーションから常にデータにアクセスできます。synchronize() メソッドを呼び出すことで、データが Amazon Cognito 同期ストアにプッシュされます。プッシュ同期が有効になっている場合は、同期ストアのデータが変更されると、アイデンティティに関連付けられたその他すべてのデバイスに Amazon SNS を通じて通知が送信されます。

Q: Amazon Cognito 同期ストアに保存されるデータはどのようなものですか?
Amazon Cognito のアイデンティティと関連付けられたデータは、キーと値のペアとして整理されます。キーは "MusicVolume" といったラベルで、値は "11" などです。キー/値のペアは、データセットを使用してグループ化また分類されます。データセットとはキー/値のペアの論理パーティションで、Amazon Cognito による同期オペレーションの実行に使用される最も詳細なエンティティです。

Q: Amazon Cognito 同期ストア内のユーザー情報ストアの最大サイズはいくつですか?
各ユーザー情報ストアの最大サイズは 20 MB です。ユーザー情報ストア内の各データセットには、最大 1 MB のデータを保存できます。データセット内に保存できるキーの最大数は 1,024 個です。

Q: データセットにはどのような種類のデータを保存できますか?
データセット内のキーと値は両方とも英数字の文字列です。データセット内の値の合計量が 1 MB を超えなければ、文字列の長さに制限はありません。バイナリデータの値は、1 MB の制限を超えなければ、base64 でエンコードした文字列として保存できます。

Q: データセットが 1 MB に制限されるのはなぜですか?
データセットのサイズを 1 MB に制限することによって、帯域幅が限られている場合でも、何度も再試行してバッテリーの寿命とデータプランを消費することなく、同期タスクが成功する確率が増加します。

Q: ユーザーアイデンティティとユーザー情報ストアは開発者間で共有されますか?
いいえ、ユーザーアイデンティティとユーザー情報ストアは特定の AWS アカウントに関連付けられています。Amazon Cognito を使用する特定のデバイスに異なる発行者から発行された複数のアプリケーションがある場合、各アプリケーションではその発行者が作成した情報ストアが使用されます。

Q: Cognito 同期ストア内のデータをどのように分析し、クエリを発行することができますか?
Cognito ストリームを使用して、AWS アカウントの Kinesis ストリームへ同期ストアのデータをプッシュできます。このストリームを消費して、Amazon Redshift データベース、お持ちの RDS インスタンス、または S3 ファイルなどの、お客様にとって便利な方法でデータを保存できます。Amazon Redshift に更新データを保存する方法を示す、サンプル Kinesis コンシューマアプリケーションを公開しています。

Q: なぜデータベースエクスポートではなく、Kinesis ストリームを使用する必要があるのですか?
Kinesis へデータをストリーミングすることによって、データセットに加えられた変更のすべての履歴をリアルタイムで受信できます。つまり、エンドユーザーがデータセットに加えたすべての変更を受信でき、お好みのツール内にこのデータを保存するための柔軟性を手に入れられます。

Q: すでに Cognito へデータを保存している場合はどうなりますか?
Kinesis ストリーム機能を有効にすると、バルク配信を始めることができます。そうすることで、現在 Cognito 同期ストアに保存されているすべてのデータを選択した Kinesis ストリームへ非同期的に送信します。

Q: この機能の利用料金はいくらですか?
Cognito はお持ちの Kinesis ストリームへデータをプッシュします。この機能が有効にされた場合、Cognito の同期ごとの料金と同じ料金です。シャードに対して標準の Kinesis 料金が請求されます。

Q: データを保存する前に検証できますか?
Amazon Cognito イベントを使用すると、開発者は、Cognito で発生した重要なイベントに応じた AWS Lambda 関数を実行できます。同期トリガーイベントとは、データセットが同期されたときに発生するイベントです。開発者は、同期イベントをインターセプトする AWS Lambda 関数を作成できます。この AWS Lambda 関数は下層のデータセットに対する変更を評価し、データを操作してからクラウドに保存して、ユーザーの他のデバイスと再同期します。この AWS Lambda 関数は、同期オペレーションに失敗することもあります。その場合、データはユーザーの他のデバイスと同期されません。

Q:データはどのように Amazon Cognito と同期されますか?
AWS Mobile SDK で synchronize() メソッドを使用するなら、クライアントデバイスと Amazon Cognito 同期ストアの間のデータセットの同期をプログラムによってトリガーできます。synchronize() メソッドが実行されると、Amazon Cognito 同期ストアで取得できる最新のデータが読み込まれ、それがローカルにキャッシュされたコピーと比較されます。比較により必要であると判断された場合、synchronize() メソッドにより、ローカルのデータストアと Amazon Cognito 同期ストアに最新の更新が書き込まれます。Amazon Cognito のデフォルト設定では、データの最新の書き込みが維持されます。この動作はプログラムで上書きして、データ競合の解決方法を変更できます。さらに、プッシュ同期を使うと、Amazon Cognito からアイデンティティに関連付けられたすべてのデバイスに、新しいデータが利用可能になったことを知らせるサイレントプッシュ通知を送信できます。

Q: サイレントプッシュ通知とは何ですか?
Amazon Cognito は、Amazon Simple Notification Service (SNS) を使って、各デバイスにサイレントプッシュ通知を送信します。サイレントプッシュ通知は、ユーザーデバイスのアプリケーションが受信するプッシュメッセージで、ユーザーには表示されません。

Q: プッシュ同期はどのように使用しますか?
プッシュ同期を有効にするには、AWS マネジメントコンソールの Amazon SNS ページでプラットフォームアプリケーションを宣言する必要があります。その後、AWS マネジメントコンソールの Amazon Cognito ページのアイデンティティプールページで、SNS プラットフォームアプリケーションを Cognito アイデンティティプールにリンクできます。Amazon Cognito が自動的に SNS プラットフォームアプリケーションを使用して、デバイスに変更を通知します。

Q: 同期処理の競合は、どのように処理されますか?
Amazon Cognito のデフォルト設定では、データの最新の書き込みが維持されます。競合する 2 つのデータが含まれる AWS Mobile SDK からのコールバックに応答するよう選択して、この動作を上書きできます。その後、アプリケーションによりどちらのデータ(ローカルのデータまたは Amazon Cognito 同期ストアに保存されているデータ)を保持するかが判断され、それが Amazon Cognito 同期ストアに保存されます。

Q: Cognito Identity のコストはどれくらいですか?
Amazon Cognito の場合、お支払いいただくのは実際に使用した分のみです。最低料金や前払いの義務は発生しません。

ユーザープールを作成する Cognito Identity を使用している場合、月間アクティブユーザー (MAU) のみに基づいてお支払いいただきます。その暦月に、サインアップ、サインイン、トークンの更新およびパスワードの変更など、当該ユーザーに関わる ID 操作が発生した場合、そのユーザーは MAU としてカウントされます。後続のセッションに関して、またはその暦月の非アクティブなユーザーに関しては課金されません。SMS メッセージングのオプション使用に対しては、次のように別料金がかかります。

ユーザープール機能には、各月 50,000 MAU の無料利用枠があります。Cognito Identity の無料利用枠は、12 か月間の AWS 無料利用枠の期間が終了しても期限切れになることはありません。既存および新規の AWS のお客様は、無期限にご利用いただけます。

Cognito Identity では、フェデレーションアイデンティティと AWS リソースに対する安全なアクセス制御で料金が発生することは一切ありません。

Q: Cognito Sync のコストはどれくらいですか?
同期料金は、Amazon Cognito 同期ストアに保存されたデータの合計量と同期オペレーションの実行回数によって決まります。同期オペレーションでは、デバイスにあるローカルのデータストアとクラウド内の Amazon Cognito 同期ストアが比較され、これら 2 つのデータストアが同期されます。

AWS 無料利用枠の一部として、対象となる AWS のお客様は、最初の 12 か月間、1 か月につき 10 GB のクラウド同期ストア容量と 100 万回の同期オペレーションをご利用いただけます。Amazon Cognito で無料利用枠を超えた分については、同期オペレーション 1 万回につき 0.15 USD、同期ストアの容量 1 GB につき毎月 0.15 USD が請求されます。

Q: 同期オペレーションとは何ですか?
AWS Mobile SDK を使用して synchronize() メソッドを呼び出すと、同期オペレーションとしてカウントされます。サーバー API を直接呼び出している場合、同期セッションの新しいトークンが出力されたときに同期オペレーションが開始し、書き込みが成功するかセッションのトークンがタイムアウトになったときに同期オペレーションが完了します。SDK の synchronize() メソッドを使用しても、サーバーの API を直接呼び出しても、同期オペレーションには同じ料金が課金されます。

Q. 月間アクティブユーザー (MAU) とは?
課金月にユーザーに関連する操作 (サインイン、トークンの更新、サインアップ、またはパスワードの変更など) がある場合、そのユーザーはアクティブと見なされ、1 MAU としてカウントされます。そのため、課金月中のその後の操作または非アクティブなユーザーに関しては課金されません。通常、ユーザーの総数と操作数は、MAU の総数を大幅に上回ります。

Q: Cognito で SMS メッセージを使う場合、どのような費用がかかりますか?
SMS メッセージングを使って電話番号を検証し、パスワードを忘れた人やリセットしたい人のために、または多要素認証のためにコードを送信するには、別途料金がかかります。詳細についてはワールドワイド SMS 料金表ページを参照してください。

Q: Amazon Cognito は AWS 無料利用枠の一部ですか?
はい。AWS 無料利用枠の一部として、Cognito では、使用開始から最大 12 か月間、1 か月につき 10 GB の同期ストア容量と 100 万回の同期オペレーションをご利用いただけます。Cognito Identity のユーザープールの場合、最初の 50,000 MAU は無料です。50,000 MAU を超えると、ボリュームに応じた利用枠をご利用いただけます。Cognito Identity では、ユーザーの認証および一意の識別子を取得するためのフェデレーティッドアイデンティティ機能への課金が発生することは一切ありません。

Q: アプリケーションからの毎回の読み書きが同期オペレーションとしてカウントされますか?
いいえ。synchronize() メソッドを呼び出すタイミングを設定できます。デバイスからの毎回の読み書きはローカルの SQlite ストアに対して実行されます。これにより、コストを完全に制御できます。

Q: プッシュ同期の料金はどれくらいですか?
Cognito は Amazon SNS を使用してサイレントプッシュ通知を送信します。Cognito でプッシュ同期を使用するための追加料金はかかりませんが、デバイスへの通知送信には通常の Amazon SNS 料金がかかります。

Q: Lambda と Amazon Cognito イベントを組み合わせて使用する場合の料金を教えてください。
Cognito イベントを使用して Lambda 関数をトリガーするのに追加料金は発生しません。ただし、Lambda 関数の実行中は、AWS Lambda およびその他の AWS のサービスの通常の使用料が発生します。詳細については、AWS Lambda の料金ページをご覧ください。