最近のアクセス:
AWS Lambda と AWS API Gateway を使用した AWS サーバーレスへのモバイルサービスのデプロイ

このドキュメントでは、アプリケーション (REST API) を AWS Lambda および AWS API Gateway にデプロイする際の前提条件と手順について説明します。
「AWS Lambda を使用することで、サーバーのプロビジョニングや管理をすることなく、コードを実行できます。課金は実際に使用したコンピューティング時間に対してのみ発生し、コードが実行されていないときには料金も発生しません。」 - 引用: https://aws.amazon.com/lambda/
「Amazon API Gateway は、完全マネージド型サービスで、開発者はこれを利用することにより、どんな規模であっても、簡単に API の作成、配布、保守、監視、保護が行えます。」 - 引用: https://aws.amazon.com/api-gateway
サーバーレスプラットフォームにデプロイする主な利点は次のとおりです:
  • インフラストラクチャについて考える必要がありません。
  • Web サーバーの管理、設定、インストールが不要です。 
  • サーバーのレンタルや購入が不要です。 
  • 24 時間 365 日稼動させても (ほぼ) 無料です(アプリケーションを使用している場合のみ支払います)。

使用するテクノロジー

  • AWS Lambda を使用して、クラウドで実行するコードをデプロイします。 
  • AWS API Gateway を使用して、REST サービスをデプロイします。 
  • AWS Cloudfront を CDN のために使用します。
  • AWS S3 をストレージのために使用します。
  • AWS IAM を資格情報のために使用します。
  • Swagger 定義を使用して、アプリケーション用に生成する API を記述します。 

デプロイのサポート

  • REST ベースのアプリケーション用のサービスバックエンド (Apple Angular Android)
  • API オブジェクト

制限

  • GeneXus Java ジェネレーターのみ (サポートされる最新の JDK バージョン: JDK11)
  • マルチメディアコンテンツの考慮事項
    • Image、Audio、Video、BlobFile データタイプを使用する場合は、[ Storage Provider ] プロパティを使用する必要があります。これは、いずれのアプリマルチメディアも Amazon S3 などの外部 URL から提供する必要があるためです。 
    • FileSystem を使用してコンテンツを提供することはできません: Blob データタイプのファイル、Excel ファイル、PDF レポートへの読み取り/書き込みアクセス 
  • 一時的な制限:
  • 1 つの AWS リージョンごとに最大 600 個のサービスをデプロイできます。 
  • 注意点
    • DBMS 接続プールはサーバーレスでは機能しません。
      • これは、サーバーレスが要求ごとに 1 つの Lambda 関数を実行するためです。そのため、すべての Lambda 実行で DB プールが初期化されます。したがって、200 の要求を同時に受信した場合、200 の Lambda が起動され、DB への 200 の接続が開かれます。

使用方法

  1. AWS サーバーレスインフラストラクチャを作成します。リンク
  2. [ Generate OpenAPI interface ] プロパティがジェネレーターレベルで Yes に設定されていることと、 [ OpenAPI version ] プロパティが OpenAPI 3.0 に設定されていることを確認します。
  3. GeneXus Java アプリケーションをリビルドします。
  4. [ アプリケーションをデプロイ ] を使用して、デプロイ対象のメインオブジェクトを選択します。スマート デバイス アプリケーションのメインオブジェクトか API オブジェクトである必要があります。 
  5. [ ターゲット ] ドロップダウンから [ AWS Serverless Deploy ] を選択します。
  6. デプロイに必要なプロパティを入力します (手順 1 のスタックの出力から情報を取得):
    • AWS Access Key Id
    • AWS Secret Access Key
    • AWS Default Region
    • IAM Role Name
    • Application Name
    • Stage Name
  7. [ デプロイ ] をクリックします。
これで完了です。
最後の手順で、GeneXus により最終 URL が印刷されます。
これを SmartDevices ジェネレーターの [ Services URL ] プロパティに使用するか、API オブジェクトに直接使用できます。 
重要な注記:
  • データベースへのアクセス
デプロイした AWS Lambda 関数がデータベースにアクセスできるようにする必要があります (同じ VPC およびセキュリティグループに属している必要があります)。そのためには、AWS Lambda 関数コンソールで手動で設定する必要があります。 
 イメージ:40759.png

トラブルシューティング

AWS Lambda は JDK11 までサポートします。JDK11 (以前のバージョン) でコンパイルするか、任意の JDK を使用して [ Compiler Options ] プロパティを -source 1.8 -target 1.8 に設定する必要があります。
com/kbaux/GXApplication has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0","errorType":"java.lang.UnsupportedClassVersionError

使用可能バージョン

GeneXus 17 Upgrade 7 以降 

参考情報

https://aws.amazon.com/api-gateway/pricing/ (2018 年 9 月時点: 「Amazon API Gateway の無料利用枠では、API が受信する月間 API コール数 100 万件が最大 12 か月間ご利用になれます。」)
https://aws.amazon.com/lambda/pricing/ (2018 年 9 月時点: 「Lambda の無料利用枠には、1 か月に 1,000,000 件の無料リクエストおよび 400,000 GB-秒のコンピューティング時間が含まれます。」)
Serverless computing - The next evolution of Cloud Computing by Gonzalo Gallotti (#GX27 に掲載、スペイン語のみ、30 分)
コマンド ライン プロシージャーを AWS Lambda に関数としてデプロイする方法


サブページ
Created: 19/03/25 17:57 by Admin Last update: 24/04/07 19:09 by Admin
カテゴリ
Powered by GXwiki 3.0