20160624 jaws-ug名古屋 第12回 api gateway 事始め

104
API Gateway 事始め 触って覚えるAPI Gateway 2016/06/24 JAWS-UG名古屋 AWS勉強会 12

Upload: aoike-toshiaki

Post on 21-Apr-2017

594 views

Category:

Internet


2 download

TRANSCRIPT

API Gateway 事始め〜 触って覚えるAPI Gateway 〜

2016/06/24 JAWS-UG名古屋 AWS勉強会 第12回

自己紹介青池 利昭

 ▷ 兵庫県尼崎市出身

 ▷ cloudpack 大阪で MSP開発 やってます

 ▷ お酒が大好きです!!

 ▷ facebook: aoike.toshiaki

facebookでC3(Can Convenience Club) やってます!

アジェンダ

❏ API Gatewayの特徴

❏ API Gatewayの使い方(ハンズオン)

❏ API Gatewayのハマリどころ

ー API Gatewayの特徴 ー

API Gatewayの特徴

❏ API の作成、配布等をマネージドに管理

❏ APIのステージ、バージョン管理

❏ いろいろと出来るセキュリティ機能

❏ 既存のサービスのフロントエンドにもなる

❏ Lambdaを使えばEC2レスなサービスの作成が可能

etc…

API Gatewayの特徴

何はなくともマネージド!!

API Gatewayの特徴

ロジックに集中出来る

これが重要!!

ー API Gatewayの使い方 ー

API Gatewayの使い方

   APIの作成

   リソースとメソッドを設定

   ステージにデプロイ(ここで初めて外部に公開可能となる)

1

2

3

ー まずは説明 ー

APIの用意

❏ New API(1から自分で作成)

❏ Clone from existing API(既存のAPIからクローンを作成)

❏ Import from Swagger(Swaggerの定義から生成)

❏ Example API(提供されているサンプルを使って作成)

etc…

New API

❏ 自分で一から設定していく

❏ 特に難しいことはない

Clone from existing API

❏ 既存のAPIの複製を作成 実はハマリどころ有り

Import from Swagger

❏ Swagger Spec Fileを取り込んで作成

What is Swagger ?

❏ RESTful APIの記述標準化を目指す規格

RESTful ?❏ RESTの定義に従った REpresentational State Transfer

❏ リソースベースでURIをもってアクセス

❏ HTTPメソッドを利用したCRUD

etc…

Web API❏ よくあるXMLやJSONで結果を返すたりしてくれるサービスなど

❏ RESTといえばだいたいこっちを指している事が多い

etc…

Swaggerのメリット

❏ 仕様書のフォーマットの統一

❏ テキストベースで編集も可能

❏ コードと一緒にバージョン管理が可能

❏ 複製が作りやすい

❏ Swagger UIを利用してAPIの動作確認が出来る

etc…

Example API

❏ サンプルから作成(このサンプルのJSONは編集できない)

Example API

❏ このようにリソースとメソッドが自動で作成される

メソッド

❏ 定義可能なメソッド

代表的なものは利用可能

DELETE PATCH

GET POST

HEAD PUT

OPTIONS

機能

❏ 利用可能な機能

Lambda

HTTP Proxy

Mock

AWS Proxy

ー ここからハンズオン ー

1st Step

1st Step

❏ New API を選択して API name に handson と入力して Create API を押下

Resourceを準備

GET Methodを追加

Mock Integrationを指定して保存

Integration Response を選択

Integration Response を選択

ダミーのレスポンスを返す設定を実施

ここまで出来たら一旦テスト

テストを実行するとMockに設定した値が取得出来る

APIをデプロイ

ステージを設定してデプロイ

デプロイ完了

ブラウザで確認

Lambdaを作成

Lambdaを作成

Lambdaを作成

Lambdaを作成(コードは https://goo.gl/DEKa2c からダウンロードできます)

Lambdaを作成

Lambdaを作成

Lambdaを作成

Lambdaを作成

Lambdaを作成

Mock→Lambdaに変更

Mock→Lambdaに変更

Mock→Lambdaに変更

重要!!

Mock→Lambdaに変更

テスト

APIをデプロイ

ステージを設定してデプロイ

デプロイ完了

ブラウザで確認

❏ キャッシュが効いている場合は値がMockのままになるのでブラウザをスーパーリ

ロードするかセッションを分けてアクセスして下さい。

ー API キーを設定 ー

APIキーを作成

APIキーを作成

APIキーの利用設定

APIキーの利用設定

APIをデプロイ

ステージを設定してデプロイ

デプロイ完了

ブラウザで確認

❏ キャッシュが効いている場合は値がMockのままになるのでブラウザをスーパーリ

ロードするかセッションを分けてアクセスして下さい。

APIキーの確認

APIキーをヘッダに指定してリクエストを送信

❏ リクエストヘッダに x-api-key を追加して API キーを指定すると期待している結果

を得ることができる。

APIキーをヘッダに指定してリクエストを送信

ー CORS (Cross-Origin Resource Sharing) 設定 ー

CORSを有効にする

CORSを有効にする

CORSを有効にする

CORSを有効にする

APIをデプロイ

ステージを設定してデプロイ

デプロイ完了

ー WAF ー

ルールの新規作成

ルールの新規作成

ルールの設定(IP制限)

ルールの設定(IP制限)

ルールの完成

ACLの作成

デフォルトのまま

先に作ったルールを割り当て

ACLを作成

これにてWAFの作成完了

CloudFrontの作成

CloudFrontの作成

CloudFrontの作成

CloudFrontの作成

CloudFrontの作成

CloudFrontの作成

CloudFrontの作成

アクセスしてみる

アクセスしてみる(未許容のIP)

ー API Gatewayのハマリどころ ー

API Gatewayのハマリどころ

❏ APIをクローンしたまま使うとLambdaのアクセス権限が付与されておらずぱっと見

問題無い設定に見えるが動かない

❏ Lambda呼び出しの際に「Invoke with caller credentials」を指定するとリクエスト時

のIAM指定してLambdaを実行出来るが、このIAMにLambdaの実行権限がないと

Lambdaが発火しない

❏ Lambda(Python2.7)をバックエンドにするとRequestデータがJSON形式でないと

発火しない

❏ API Gateway UIの使いにくさ(設定変更時に レ を押さないと反映されない)

etc…

etc…

ー 参考 ー

参考

❏ IP制限できないの?

→ CloudFront(WAF)+ APIキー認証で絞りましょう

→ マッピングテンプレートを使ってSourceIpを取得しコードでブロック

❏ HTTPでアクセスしたい

→ CloudFrontでHTTPからHTTPSにリダイレクトしましょう

❏ 後ろがLambda(Python 2.7)の場合にJson形式以外の値を処理したい

→ マッピングテンプレートを使ってJson形式に変更しちゃいましょう

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

❏ http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-

2015-amazon-api-gateway

最後に

cloudpack wants you !!

開発・インフラ・デザイナーを募集しています

https://cloudpack.jp/recruit/

ご清聴ありがとうございました