メニュー
AWS Lambda
開発者ガイド

モバイルアプリケーションのバックエンドとしての AWS Lambda の使用 (カスタムイベントソース: Android)

AWS Lambda を使用して、モバイルアプリケーションのバックエンドロジックをホストできます。つまり、モバイルアプリのコードの一部を Lambda 関数として実行できます。これにより、モバイルアプリケーション自体に最小限のロジックを配置できるため、スケーリングと更新が簡単になります (たとえば、コードの更新部分をアプリケーションクライアントにデプロイせずに、Lambda 関数にのみ適用するだけで済みます)。

Lambda 関数を作成したら、AWS SDK for Android などの AWS Mobile SDK を使用して、モバイルアプリからその関数を呼び出すことができます。詳細については、「Tools for Amazon Web Services」を参照してください。

注記

また、いずれかの AWS SDK を使用する代わりに Amazon API Gateway を使用して、HTTP 経由で Lambda 関数を呼び出すこともできます。Amazon API Gateway によって、モバイルユーザーとアプリロジックとの間に、以下のことが可能になる別のレイヤーが追加されます。

  • 個々のユーザーやリクエストを絞り込む。

  • 分散型サービス妨害攻撃から保護する。

  • Lambda 関数からの応答をキャッシュするキャッシュレイヤーを提供する。

モバイルアプリケーションと AWS Lambda の統合のしくみについては、以下の点に注意してください。

  • プッシュイベントモデル – これはアプリがイベントデータをパラメーターとして渡して Lambda 関数を呼び出すモデルです (「イベントソースマッピング」を参照)。

  • 同期または非同期呼び出し - アプリは Lambda 関数を呼び出して、呼び出しタイプとして RequestResponse を指定することで (または非同期呼び出しには Event 呼び出しタイプを使用することで) リアルタイムで応答を取得できます。呼び出しタイプについては、「権限の管理: Lambda 関数ポリシーを使用する」を参照してください。

  • イベント構成 - Lambda 関数が受け取るイベントは、アプリケーションによって定義され、Lambda 関数は、特定タイプのイベントを処理するために記述されたカスタムコードです。

エンドツーエンドのエクスペリエンスの設定で使用するアクセス権限ポリシーには以下の 2 タイプあります。

  • Lambda 関数のアクセス権限 - Lambda 関数の呼び出し元にかかわらず、AWS Lambda は、Lambda 関数の作成時に指定された IAM ロール (実行ロール) を引き受けることで、その関数を実行します。このロールに関連付けられたアクセス権限ポリシーを使用して、Lambda 関数に必要なアクセス権限を付与します。たとえば、Lambda 関数にオブジェクトの読み取りが必要である場合は、アクセス権限ポリシーで、関連する Amazon S3 アクションのためのアクセス権限を付与します。詳細については、「アクセス権限の管理: IAM ロール (実行ロール) を使用する」を参照してください。

  • モバイルアプリが Lambda 関数を呼び出すためのアクセス権限 - アプリケーションには、Lambda 関数を呼び出すための有効なセキュリティ認証情報とアクセス権限が必要です。モバイルアプリケーションに対して、Amazon Cognito サービスを使用してユーザー ID、認証、アクセス権限を管理できます。

以下の図で示しているのは、アプリケーションのフローです (この図では、モバイルアプリが AWS Mobile SDK for Android を使用して API の呼び出しを行っているとします)。

  1. モバイルアプリケーションはリクエストを Amazon Cognito に送ります。リクエストには ID プール ID が含まれています (ID プールはセットアップ時に作成)。

  2. Amazon Cognito が一時的なセキュリティ認証情報をアプリケーションに返します。

    Amazon Cognito は、ID プールに関連付けられたロールを引き受け、一時的な認証情報を生成します。一時的な認証情報の取得に使用される Amazon Cognito ロールに関連付けられたアクセス権限ポリシーで定義されたアクセス権限によって、一時的な認証情報を使用してアプリケーションができることが制限されます。

    注記

    AWS SDK は一時的な認証情報をキャッシュし、アプリケーションが Lambda 関数を呼び出す必要があるたびに、Amazon Cognito にリクエストを送信しないようにできます。

  3. モバイルアプリケーションは一時的な認証情報 (Cognito ID) を使用して Lambda 関数を呼び出します。

  4. AWS Lambda は実行ロールを引き受け、ユーザーの代わりに Lambda 関数を実行します。

  5. Lambda 関数が実行されます。

  6. AWS Lambda はモバイルアプリケーションに結果を返します。ただし、アプリケーションが RequestResponse の呼び出しタイプ (同期呼び出し) を使用して Lambda 関数を呼び出したとします。

セットアップの例を説明しているチュートリアルについては、「チュートリアル: モバイルアプリケーションのバックエンドとしての AWS Lambda の使用」を参照してください。