15分でAWSのサーバーレスAPI

アマゾンウェブサービスを使用すると、簡単なウェブアプリケーションのプロトタイプをすばやく作成できます。たとえば、簡単なモバイルアプリケーション用のAPIを数分で作成できます。 多数のDynamoDBおよびGateway APIを使用します (Lambda関数は使用しません!)データベースへのGETおよびPOSTリクエストを構成し、その中のデータの読み取り、書き込み、変更を可能にします。







まず、AWSに登録してコンソールにログインする必要があります。 DynamoDBデータベースからサービスの作成を開始し、[ テーブル作成 ]ボタンをクリックし、 apiDataテーブルの名前を入力します(マニュアルでは自分の名前を使用します。他の名前を指定できます)。エントリを追加するメインキー: userIDとチェックボックスデフォルト設定を使用します





DynamoDBでは 、指定されたキーによって行がテーブルに追加されますが、任意の数のパラメーターを追加することができ、必ずしも異なるキーのデータ構造と一致する必要はありません。 この場合、指定されたuserIDの各ユーザーに対して、このユーザーを説明するデータを追加できます。



次に、 Identity and Access Managementサービスでいわゆるロールを作成する必要があります 。 左側のメニューで、[役割]セクションを選択し、[ 新しい役割作成 ]ボタンをクリックします。 その名前-dynamoAPIを指定し、[ AWSサービスロール]セクションで[次のステップ]をクリックした後、 Amazon API Gatewayを選択し、[次のステップ]をダブルクリックして、最後に[ ロールの作成 ]を選択します。



arn:aws:iam :: 000000000000:role / roleNameの形式で指定されたロールARN値に関心があります。 この値は、クエリをデータベースにリンクするときに使用する必要があるため、書き留めてください。 次に、このロールのアクセスポリシーを作成する必要があります。これは、[ インラインポリシー ]セクションの[ 権限 ]タブで行い、展開して[ ここをクリック ]をクリックします





[ ポリシージェネレーター ]セクションで、[ 選択 ]ボタンをクリックし、開いたページでAmazon DynamoDBサービスを選択して、次のアクションを指定します。





APIを使用して他のアクションを実行できるようにしたい場合があります。その場合は、このヘルプページでそれら調べることができます。 Amazonリソース名項目については、ここでテーブルのARN([ 概要 ]タブにある)を指定するか、作成されたロールを持つユーザーがアカウントのすべてのテーブルにアクセスできるようにする*を指定できます。 [ ステートメント追加 ]ボタンをクリックし、開いたページで[ 次のステップ ]-[ ポリシーの適用 ]をクリックします。 これでロールの構成が完了しました!



API Gatewayサービスを使用したAPIの作成に移りましょう。 青い[ APIの作成 ]ボタンをクリックし、開いたページで名前-APIを指定して、ページの下部にある[ API作成 ]ボタンをクリックします 。 次に、リクエストでアクセスできるリソースを作成し、[ アクション ]ボタンをクリックして[ リソースの作成 ]を選択する必要があります。





このリソースをuserと呼び、 ユーザーに関する情報が含まれます。特定のユーザーにアクセスするには、ユーザーIDをパスパラメーターとして指定する必要があります。 API Gatewayサービスでこのようなパラメーターを作成するには、作成済みのユーザーより1レベル低い新しいリソースを作成し、 リソース名リソースパスとして{userid}を指定する必要があります(この形式で名前を指定すると、リソースパスは自動的に置き換えられます- userid- 、pathパラメーターの目的のフォームを手動で指定する必要があります)。





次に、新しいユーザーのレコードを作成するメソッドを作成します。そのために{userid}リソースを選択し、[ アクション ]ボタンをクリックして[ メソッドの作成 ]を選択し、タイプ-POSTを指定してチェックマークをクリックして作成します。 表示される設定メニューの[統合タイプ]セクションで、[ 高度なスポイラーを表示 ]を開き、[ AWSサービスプロキシ]を選択する必要があります。 設定:











これらの設定を保存したら、最初にMethod Requestの最初の正方形に移動し、 API Key Required項目でTrueを選択し、チェックマークをクリックして設定を保存する必要があります-これは認証トークンを使用して外部からこのメソッドにアクセスするために必要ですすべてのメソッド!)。 戻って2番目の統合リクエストスクエアに移動し、DynamoDBでリクエスト自体を設定します。 開いたページで、一番下までスクロールして[ ボディマッピングテンプレート ]セクションを開き、[ マッピングテンプレート追加 ]ボタンをクリックし、 コンテンツタイプapplication / jsonを指定します。入力フィールドでリクエストパラメーターを指定し、次のコードを使用して新しいレコードを作成します:



{ "TableName": "apiData", "Item": { "userID": { "S": "$input.params('userid')" }, "parameter": { "S": "$input.path('$.parameter')" } }, "ReturnValues": "ALL_OLD" }
      
      





ここで、変更を行うテーブルの名前を示します。データが入力されるキーは最初に示されます: userID 、その値はuseridパスパラメータから取得されます。 パラメータキーのデータは、リクエスト本文から取得され、指定されたユーザーのデータベースの同じ列に追加されます。 回答として-指定されたキーが存在する場合、そのキーに対して以前の値が送信されます。 そのユーザー名を持つユーザーが存在しなかった場合、空の答えが返されます。



残っているのは、リクエストの動作を確認することだけです。そのためには、ページの上部で、戻るボタンと4つの四角の右側をクリックします-ハリーポッターアイコンのあるテストボタンをクリックします。





開いたウィンドウで、 Pathパラメーターの値を指定する必要があります -これは作成/再作成するユーザーの名前です( PutItemは指定されたキーで行全体を上書きします)-リクエストの本文を指定します:



 { "parameter": "112233" }
      
      





リクエストは成功しました。エラーなしで空のボディを含むレスポンスを受け取りました!







DynamoDBに移動すると、[ アイテム ]タブで、作成したユーザーが表示されます。





ユーザーデータを読み取るには、 {userid}リソースのフレームワーク内で、 Action - Queryを使用してGETメソッドを作成し、統合リクエストを構成する必要があります(この場合、データベースリクエストはPOSTメソッドを使用して行われます!) :



 { "TableName": "apiData", "KeyConditionExpression": "userID = :v1", "ExpressionAttributeValues": { ":v1": { "S": "$input.params('userid')" } } }
      
      





他のすべての行を変更せずに特定のユーザーの一部のパラメーター値を変更する場合は、 ActionタイプUpdateItemおよび次のマッピングテンプレートでPOSTメソッドを使用することもできます。



 { "TableName": "apiData", "Key": { "userID": { "S": "$input.params('userid')" } }, "UpdateExpression": "set token_proof = :tkn", "ExpressionAttributeValues": { ":tkn": { "S": "$input.path('$.token')" } }, "ReturnValues": "UPDATED_NEW" }
      
      





この場合、リクエストは成功した場合、ユーザーに関する更新されたすべてのデータを例から返します。このメソッドは、アプリケーションでFacebookを介してユーザーを認証するときにappsecret_proofを格納するために使用できます。



実際、すべての基本的なAPIユースケースは、これらの例に基づいて作成できます。 あとは、外部からAPIにアクセスするだけです。これを行うには、APIのメニューでお気に入りの[ アクション ]ボタンをクリックし、[APIをデプロイ ]を選択します 。 以下を指定します。





[ デプロイ]をクリックし、 m00000000a.execute-api.us-east-1.amazonaws.com / apiReleaseのような呼び出しURLを取得します 。 このアドレスにリクエストを行うには(承認トークンが必要で、受信するには)、左側のメニューの[ APIキー ]セクションに移動し、[ 作成 ]ボタンをクリックして、何らかの方法でキーに名前を付けて保存します。 次に、 API Stage Associationの表示されたセクションで、目的のAPIと新しく作成されたシーンを選択し、[ 追加 ]ボタンをクリックします。 左側のメニューからAPIに戻り、[ アクション] -> [ APIの デプロイ ]を選択し、作成済みのステージを選択して[ デプロイ ]をクリックします。 出来上がり!



これで、リクエストに値としてトークンを含むヘッダーx-api-keyを追加することにより、外部からAPIにリクエストを行うことができます。 作成されたユーザーに関するデータを取得するには、アドレスm00000000a.execute-api.us-east-1.amazonaws.com/apiRelease/user/newUserOneに対応するGETリクエストを作成するだけで十分です。答えに関するユーザーに関するすべての情報を取得できます。 したがって、ほんの数分で、データベースにアクセスするための簡単なAPIを作成できます。このAPIを使用して、新しいアプリケーションや、複雑なデータ構造を必要としない他のサービスをテストできます。 もちろん、より複雑なプロジェクトの場合は、より適切なツールを使用する価値があります。



All Articles