aws black belt tech シリーズ 2015 - amazon api gateway

85
Build, Deploy & Manage your APIs Amazon API Gateway概要 Amazon Data Service Japan K.K. Solutions Architect Keisuke Nishitani(@Keisuke69)

Upload: amazon-web-services-japan

Post on 11-Aug-2015

3.514 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Build, Deploy & Manage your APIs Amazon API Gateway概要

Amazon Data Service Japan K.K. Solutions Architect

Keisuke Nishitani(@Keisuke69)

Page 2: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

自己紹介 {

"Name" : "西谷圭介",

"Twitter" : "@Keisuke69",

"Profile" : {

"Role" : "Solution Architect",

"Customers": [

"Web Services",

"Start-up"

],

"Services" : [

"AWS Lambda",

"Mobile Services"

]

}

}

Page 3: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Look Back API, again

Page 4: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

API

• Application Programming Interface

• アプリケーションから利用する処理のためのインターフェース

• WebAPI – Webベースのシステムで用意される

– HTTPをベースにデータをやり取りする

– SOAP、REST

Page 5: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

急速に増えるAPI

2418

10302

0

2000

4000

6000

8000

10000

12000

6-0

5

10

-05

2-0

6

6-0

6

10

-06

2-0

7

6-0

7

10

-07

2-0

8

6-0

8

10

-08

2-0

9

6-0

9

10

-09

2-1

0

6-1

0

10

-10

2-1

1

6-1

1

10

-11

2-1

2

6-1

2

10

-12

2-1

3

6-1

3

10

-13

*Data from ProgrammableWeb

http://www.programmableweb.com/

Page 6: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

APIの重要性

• エコシステムを形成できる • システム間連携

– 外部サービスとの連携 – その逆も

• 疎結合(マイクロサービス) – フロントエンドとバックエンドのデカップリング

• フロントエンドの多様化 – HTML5/JS – モバイルアプリ

• IoTによる接続されるデバイスの多様化

Page 7: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

AWSには数多くのAPI

AWS自身がAPIを提供する中で多くの教訓を得ている

Page 8: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

API管理の課題

Page 9: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

API管理の課題

提供するAPIのバージョン管理

API利用状況のモニタ、管理とマネタイズ

APIに対する認証とアクセス権の管理

トラフィック管理とAPIエンドポイントのアタックからの保護

インフラのセットアップおよび管理とメンテナンス

Page 10: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

クラウドネイティブ世代の

API管理サービス

Page 11: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

Page 12: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

提供するAPIのバージョン管理

API利用状況のモニタ、管理とマネタイズ

APIに対する認証とアクセス権の管理

トラフィック管理とAPIエンドポイントのアタックからの保護

インフラのセットアップおよび管理とメンテナンス

Page 13: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

複数バージョンとステージ

API利用状況のモニタ、管理とマネタイズ

APIに対する認証とアクセス権の管理

トラフィック管理とAPIエンドポイントのアタックからの保護

インフラのセットアップおよび管理とメンテナンス

Page 14: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

複数バージョンとステージ

APIキーの作成と配布

APIに対する認証とアクセス権の管理

トラフィック管理とAPIエンドポイントのアタックからの保護

インフラのセットアップおよび管理とメンテナンス

Page 15: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

複数バージョンとステージ

APIキーの作成と配布

リクエスト時におけるAWS SigV4の利用

トラフィック管理とAPIエンドポイントのアタックからの保護

インフラのセットアップおよび管理とメンテナンス

Page 16: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

複数バージョンとステージ

APIキーの作成と配布

リクエスト時におけるAWS SigV4の利用

リクエストのスロットリングとモニタリング

インフラのセットアップおよび管理とメンテナンス

Page 17: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

複数バージョンとステージ

APIキーの作成と配布

リクエスト時におけるAWS SigV4の利用

リクエストのスロットリングとモニタリング

バックエンドとしてAWS Lambdaが利用可能

Page 18: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

AWS Lambda

Page 19: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

AWS Lambda

• インフラを一切気にすることなくアプリケーションコードを実行できるコンピュートサービス – 実行基盤は全てAWSが管理

– AWSサービスと連携させることで簡単にイベントドリブンなアプリケーションを実装可能

– コード実行時間に対しての課金でありコスト効率が非常に高い

Page 20: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

レスポンスをキャッシュ可能

CloudFrontを利用したレイテンシの軽減とDDoS対策

iOS、AndroidとJavaScript向けSDKの自動生成

Swaggerのサポート

Request / Responseにおけるデータ変換

Page 21: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

従来のアーキテクチャ

・認証API

・データ保存API

Web DB

LB

Page 22: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

クラウドネイティブなアーキテクチャ

Lambda (ロジック)

API Gateway DynamoDB (データ保存)

Page 23: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

サーバレスで

全部できます

Page 24: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

サーバレスで

全部できます

やりたいこと だけに集中できる

Page 25: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

サーバレスで

全部できます

ビジネスロジック だけに集中できる

Page 26: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
Page 27: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

クラウドファーストから クラウドネイティブへ

Page 28: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

REST APIについて

Page 29: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

RESTとは

• Representational State Transfer

• Roy Fieldingが提唱したWebのソフトウェアアーキテクチャの1つ

• RESTの原則に則ったAPIをRESTfulという

Page 30: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

RESTの特徴

• リソース指向

• URIによるリソースの識別

• ステートレス

• HTTPメソッドを利用した操作

Page 31: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

リソース指向

• リソースとは名前を持つあらゆる情報のこと – 東京の天気 – 今日のニュース – Amazonの株価

• 全てのリソースはURIで表現する – URIがリソースそのものを示す – URIとは1対1の関係

• 時間、条件によって「状態」は変わり得るが、その「意味」は変わることはない

Page 32: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

URI

• Uniform Resource Identifier

• リソースを特定するもの – 例)https://api.example.com/resouces/1234

• 名詞で構成 – 表現するのはあくまでもリソースでありアクションではない

– URIのパス内に動詞が存在しないのが基本(名詞のみ)

Page 33: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

ステートレス

• クライアントとサーバ間の接続に状態を持たない

• (理想は)リクエストの1つ1つにそれを処理するにあたって必要な情報を全て含むこと

• 状態を持たないのでスケーラビリティの確保が容易になる

Page 34: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

例:ステートフルなやり取り

いらっしゃいませ。○○バーガーへようこそ

ハンバーガーセットをください

サイドメニューはいかがなさいますか?

ポテトをください

ドリンクはいかがなさいますか?

はい

コーラをお願いします

以上でよろしいですか?

お会計は◯◯円になります

Page 35: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

例:ステートレスなやり取り

いらっしゃいませ。○○バーガーへようこそ

ハンバーガーセットをください

サイドメニューはいかがなさいますか?

ハンバーガーセットをポテトでお願いします

ドリンクはいかがなさいますか?

ハンバーガーセットをポテトとコーラでお願いします

ハンバーガーセットをポテトとコーラでお願いします

以上でよろしいですか?

お会計は◯◯円になります

Page 36: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

HTTPメソッド

• URIで示すリソースに対して何を行うかで利用するメソッドを選択する

• HTTPで定義されているメソッドを利用 • GET/POST/PUT/DELETEおよびPATCHを主に利用する

HTTPメソッド 意味 CRUDとの対応

GET リソースの取得 READ

POST 子リソースの作成 CREATE

PUT リソースの更新(既存URI) リソースの作成(新規URI)

UPDATE

CREATE

DELETE リソースの削除 DELETE

PATCH リソースの部分更新 UPDATE

Page 37: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

POST、PUTそしてPATCH

• POSTとPUTはともにリソースの作成が行える – リソースの作成には一般的にはPOSTを利用

– PUT • クライアントが指定したURIのリソースを作成

• クライアント側でリソース名を作成する

• サーバ側の命名規則等を知っている必要がある(密結合と言える)

• 冪等

– POST • リソース名はサーバによって作成される

• クライアントが指定するURIはあくまでも親リソース

• サーバによって子リソースのURIが作成される

• PUTとPATCH – PUTは指定したリソース全体を更新、PATCHはリソースの一部を更新

Page 38: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

HTTPステータスコード

• 処理の実行結果はHTTPステータスコードで表現 – HTTPステータスコードに意図を込める

• 400系はクライアント系のエラー – クライアントのリクエストに問題がある場合

– 指定されたリソースが見つからない、など

• 500系はサーバサイドのエラー – サーバがリクエストの処理を失敗した場合

Page 39: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

HTTPステータスコード HTTPステータスコード 意味 例

200 OK リクエストに成功し、情報とともにレスポンスを返す場合 GETによるリソース情報の参照

201 CREATED リクエストは成功し、新しく作成されたリソースが返される POSTによるリソース作成

204 NO CONTENT リクエストに成功したが、レスポンスのエンティティが何もない場合

DELETEによる削除

400 BAD REQUEST リクエスト不正。クライアントのリクエストがおかしい場合 定義されていないメソッドを使用した場合、リクエストボディのJSONフォーマットがおかしい場合

401 UNAUTHORIZED 認証が必要 認証が必要なURLに対して、未認証でアクセスした場合

403 FORBIDDEN リソースへのアクセスが拒否された アクセス権のないリソースにアクセスした場合

404 NOT FOUND リソースが見つからなかった場合 存在しないリソースへのGET

409 CONFRICT 現在のリソースと競合する場合 作成・更新しようとしたデータがユニーク制約等でエラーになる場合

500 INTERNAL

SERVER ERROR

サーバ内部エラー 処理中の例外などサーバ側エラー全般

Page 40: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gatewayの動作

Page 41: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

APIコールの流れ

Internet

Mobile Apps

Websites

Services

API

Gateway

AWS Lambda

functions

AWS

API Gateway

Cache

Endpoints on

Amazon EC2 /

Amazon

Elastic

Beanstalk

Any other publicly

accessible endpoint Amazon

CloudWatch

Monitoring

Page 42: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

API作成の流れ

1. 新規APIセットを作成

2. リソースおよびメソッドを定義 – メソッドを作成した時点でテスト可能となる – 外部に公開はまだされていない状態

3. ステージへのデプロイ – ステージは本番、開発といったデプロイ環境の管理を楽にしてくれる概念 – 各ステージごとにロギング、スロットリング、モニタリング、キャッシュの設定が可能

4. クローン – 既存のものをクローンして新規バージョンとしてデプロイすることが可能

5. ロールバック – 各ステージごとに300回分のデプロイ履歴を保持しており、いつでも過去バージョンに戻すことが可能

Page 43: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

API詳細

• API自身を最上位とした階層構造になっている

• API内にリソースを定義 – 複数定義

– リソース名がURLのパスの一部となる

– ネストすることも可能 ex) /pets/{petId}

• 各リソースにメソッドを定義 – メソッドはリソース+HTTPメソッドで構成される

– スタンダードな7つのHTTPメソッドをサポート

Pet Store

/pets

/pets/{petId}

• GET

• POST

• PUT

Page 44: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

APIのデプロイ

• APIはステージにデプロイされる

• ステージはそれぞれ個別の環境を表す

• ステージ名はURIの一部となる – 例:

Dev (e.g. awsapigateway.com/dev)

Beta (e.g. awsapigateway.com/beta)

Prod (e.g. awsapigateway.com/prod)

Pet Store

dev

beta

gamma

prod

Page 45: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

APIの複数バージョンとステージ

API 1 (v1)

Stage (dev)

Stage (prod)

API 2 (v2)

Stage (dev)

Page 46: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

APIの呼び出し

• デプロイ後から呼び出し可能 – 呼び出したいメソッドにも寄るがシンプルなGETなどの場合ブラウザ上からも可能

• my-api-id – API作成時に払い出される識別子

• region-id – APIが作成されたリージョン

• stage-name – 呼び出したいAPIがデプロイされているステージ

https://my-api-id.execute-api.region-id.amazonaws.com/stage-name/{resourcePath}

Page 47: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

独自ドメイン

• エンドポイントとして独自ドメインを利用可能 – 独自ドメインでAPI提供が可能

– SSL証明書を用意し、API Gatewayにアップロードする

– 利用しているDNSにDistribution Domain Nameに対するCNAMEとして登録する

• API全体だけでなく、特定環境(ステージ)のみを独自ドメインで

提供することも可能

• 全ステージにアクセス可能なAPIの指定 – Beta (e.g. yourapi.com/beta)

– Prod (e.g. yourapi.com/prod)

• “prod”ステージを直接指定 – Prod (e.g. yourapi.com/)

Page 48: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

ダッシュボード

• API Calls – 呼び出し回数

• Latency – リクエストを受け取ってから応答するまでの時間(ミリ秒)

• 4xx Error – 4xxを返した回数

• 5xx Error – 5xxを返した回数

Page 49: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

メソッド設定

Page 50: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

メソッド設定

Page 51: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Method Request

Page 52: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Method Request

• Authorization type – NONEもしくはAWS_IAMを選択 – AWS_IAMの場合、正しいIAMロールがセットされているIAMユーザのみがメソッド実行可能となる

• URL Query String Parameters – 受け付けるクエリストリングを指定

• HTTP Request Headers – 受け付けるヘッダを指定

• Request Models – GET以外の場合は利用するモデルを選択し、content-typeを指定する

Page 53: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

URL Query String Parametersの例

• この場合、/<resource>?hoge=fugaといったリクエストを受け付ける

Page 54: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

IAMロール

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Allow",

"Action": [

"apigateway:method-type"

],

"Resource": [

"resource-statement"

]

}

]

}

• method-type

• メソッドのタイプ(GET/POSTなど)を指定

• resource-statement

• Authorization Settings内に表示されているARNを指定

Page 55: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Integration Request

Page 56: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Integration Request

• バックエンドとのやり取りに関する設定 • Integration Type

– 利用するバックエンドの種別と関連する情報を設定

• Integration TypeがLambda以外の場合は以下の設定も可能 – URL Path Parameters – URL Query String Parameters – HTTP Headers – それぞれMethodRequestで指定したパラメータとマッピングする

• Mapping Templates – マッピングテンプレート(後述)を指定 – Input passthroughにチェックを入れると受け取ったデータをそのままバックエンドに渡す

Page 57: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Integration Request(Integration Type)

• Lambdaファンクション

• HTTP Proxy – EC2上で構築したWebAPIなどを利用する場合 – 外部のWebサービスを呼び出すことも可能 – エンドポイントとして呼び出し先のURLとHTTPメソッドを指定 – 現時点ではアクセス先はPublic IPを持っている必要あり

• AWS Service Proxy

– AWSのサービスを直接呼び出すことが可能 – 各サービスで用意されているアクションを実行可能

Page 58: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Method Response

Page 59: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Method Response

• HTTPステータスコードを元にカスタムヘッダやカスタムデータを返すことが可能

• 設定したいHTTPステータスコードごとに返したいヘッダやモデルを設定する

Page 60: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Integration Response

Page 61: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Integration Response

• HTTPステータスコード200を返す際の条件をバックエンドの結果を元に設定 – Lambdaファンクションの場合、エラーメッセージの正規表現

– HTTP Proxyの場合はバックエンドが返すHTTPステータスコード

• Integration TypeがLambda以外の場合は以下の設定も可能 – Header Mappings

– Template Mappings

– それぞれMethodResponseで指定するパラメータとマッピングする

– Output passthroughにチェックを入れるとバックエンドからのレスポンスをそのまま返す

Page 62: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

APIキーの使用

Page 63: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

APIキー

• APIキーを有効にすることでAPI Gatewayが払い出すAPIキーを使用した

メータリングが可能 – 正しいAPIキーを含まないリクエストはエラーになる

– API/ステージレベルで設定可能

• リクエストのヘッダにAPIキーを含める

x-api-key: bkayZOMvuy8aZOhIgxq94K9Oe7Y70Hw55

• CloudWatchによりAPIキーごとの使用量を計測可能

• 認可のために用いないこと – あくまで計測目的として用意されている

– 認可はAPI Signature Version 4もしくは自前でOauth等のメカニズムを用意して行う

Page 64: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

認可

Page 65: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

AWS Sigv4の活用、もしくはカスタムヘッダの利用

• APIコールの署名と認可にAWS Sigv4を利用可能

– Amazon CognitoとAWS Security Token Service(STS)のようなテンポラリ

クレデンシャルを利用

– IAMロールと紐づく形で認可が行われる

– 生成されたクライアントSDKを利用することで自動的に利用可能

• OAuthもしくはその他の認可メカニズムはカスタムヘッ

ダを用いて対応

– バックエンドに対してカスタムヘッダをフォワードするよう構成

Page 66: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

スロットリングとキャッシュ

Page 67: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

スロットリング

• メソッド単位でのスロットリングを提供 – ステージ単位で全体的に同一設定にすることも、個々のメソッドに対して個別

に設定することも可能

– スロットリングによりバックエンドのパフォーマンスと可用性を維持

– 許容するリクエスト/秒を指定

– バーストを許容する設定も可能

– トークンバケットアルゴリズムによる実装

• リミットを超えたリクエストがスロットリングされる – HTTPステータス429をレスポンス

– 生成したSDKを使う場合、自動でリトライする

Page 68: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

レスポンスのキャッシング

• レイテンシ減とバックエンドへのトラフィック軽減

– キャッシュがあった場合、バックエンドを呼び出すことなくレスポンス

• ステージ単位のキャッシュプロビジョニング

– 0.5GBから最大237GBの間でプロビジョニング

• 細やかな設定

– メソッド単位で暗号化とTTLを設定

– クエリパラメータ、ヘッダ、パスパラメータ単位でキャッシュ有無を設定

• キャッシュアルゴリズムはLRU(Least Recently Used)

Page 69: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

リクエストの処理フロー

Receive incoming request

•Check for item in dedicated cache

• If found return cached item

Check throttling configuration

•Check current RPS rate

• If above allowed rate return 429

Execute backend call

Page 70: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

モデル

• リクエスト/レスポンスで扱われるデータのスキー

マを定義したもの

– テンプレートとマッピングして使う

– JSON形式で定義

• モデルの情報を元にSDKを生成

• API内で複数メソッドをまたがってモデルを再利用

Page 71: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

モデル例:元データ { "department": "produce", "categories": [ "fruit", "vegetables" ], "bins": [ { "category": "fruit", "type": "apples", "price": 1.99, "unit": "pound", "quantity": 232 }, { "category": "fruit", "type": "bananas", "price": 0.19, "unit": "each", "quantity": 112 }, { "category": "vegetables", "type": "carrots", "price": 1.29, "unit": "bag", "quantity": 57 } ] }

• トップレベル • department(string) • categories(配列) • bins(配列)

• categoriesにはstringのコレクションが含まれる

• binsはオブジェクトのコレクションを含む • 各オブジェクトは以下の要素を持つ

• category(string) • type(string) • price(number) • unit(string) • quantity(number)

Page 72: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

モデル例

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "GroceryStoreInputModel", "type": "object", "properties": { "department": { "type": "string" }, "categories": { "type": "array", "items": { "type": "string" } }, "bins": { "type": "array", "items": { "type": "object", "properties": { "category": { "type": "string" }, "type": { "type": "string" }, "price": { "type": "number" }, "unit": { "type": "string" }, "quantity": { "type": "integer" } } } } } }

• title – モデルの識別子

• トップレベルのdepartment、categories、binsをpropertiesとして指定 • それぞれの型をtypeで指定

• Categories、binsに含まれるオブジェクトをitemsとして定義 • 各項目ごとにtypeを指定

Page 73: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

マッピングテンプレート

• あるデータを別の形式に変換することが可能

• インプットとアウトプットそれぞれのマッピングテンプレートを作成

• マッピングテンプレートはVelocity Template Language (VTL) およびJSONPathで定義

• 以下のようなユースケースで利用する – レガシーなバックエンドからのレスポンスをフィルタ

• プライベートなものや不必要なデータを削除

– GETリクエストのクエリストリングを元にPOSTのボディを生成し、バックエンドをPOSTで呼び出し • バックエンドがRPC形式でPOSTのリクエストしか受け付けない場合

– LambdaファンクションからJSONを受け取り、XMLに変換

Page 74: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

変換例: JSONからXMLに

API Gateway Backend

GET - /peoples/1234 Lambda fn

get_people

/peoples/1234

{

“name” : “John”

}

<xml>

<name>

John

</name>

</xml>

#set($root = $input.path('$'))

<xml>

<name>

$root.name

</name>

</xml>

マッピングテンプレート

Page 75: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

SDKの生成

Page 76: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

クライアントSDKの自動生成

• ステージごとに生成可能

• API設定を元に自動生成

– モデルの設定を元にIn/Outのマーシャリングに関する処理も含ま

れる

• スロットリング時のリトライやリクエストの署名

に関する処理を含む

• Android、iOS、JavaScriptをサポート

Page 77: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

価格

• 100万リクエストあたり$3.50

• AWS無料枠に含まれる – 100万リクエスト/月を12ヶ月間

• 外向きデータ転送量(AWSの標準価格) – 10TBまで$0.09/GB

– 次の40TBまで$0.085/GB

– 次の100TBまで$0.07/GB

– 次の350TBまで$0.05/GB

Page 78: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

価格 – キャッシュ

Cache Memory

Size (GB)

Price per Hour

(USD)

0.5 $0.020

1.6 $0.038

6 $0.200

13 $0.250

28 $0.500

58 $1.000

118 $1.900

237 $3.800

Page 79: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

制限事項

• 利用可能なリージョン – US East (N. Virginia)

– US West (Oregon)

– EU West (Dublin)

• アカウントあたり最大で60APIまで

• APIあたり300リソースまで

• APIあたり10ステージまで

Page 80: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Amazon API Gateway

http://aws.amazon.com/apigateway/

Build, Deploy & Manage your APIs NOW

Page 81: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

参考文献

• Developer Guide http://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html

• AWS Lambda http://docs.aws.amazon.com/lambda/latest/dg/welcome.html

• Roy Fieldingの博士論文「Architectural Styles and the Design of Network-based Software Architectures」第5章 http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

Page 82: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

Q&A

次回Webinarのお申し込み

http://aws.amazon.com/jp/event_schedule/

Page 84: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway

公式Twitter/Facebook AWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを 日々更新しています!

もしくは http://on.fb.me/1vR8yWm

Page 85: AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway