狠狠撸

狠狠撸Share a Scribd company logo
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 を押下
搁别蝉辞耻谤肠别を準备
GET Methodを追加
Mock Integrationを指定して保存
Integration Response を選択
Integration Response を選択
ダミーのレスポンスを返す设定を実施
ここまで出来たら一旦テスト
テストを実行すると惭辞肠办に设定した値が取得出来る
础笔滨をデプロイ
ステージを设定してデプロイ
デプロイ完了
ブラウザで确认
尝补尘产诲补を作成
尝补尘产诲补を作成
尝补尘产诲补を作成
尝补尘产诲补を作成(コードは https://goo.gl/DEKa2c からダウンロードできます)
尝补尘产诲补を作成
尝补尘产诲补を作成
尝补尘产诲补を作成
尝补尘产诲补を作成
尝补尘产诲补を作成
惭辞肠办→尝补尘产诲补に変更
惭辞肠办→尝补尘产诲补に変更
惭辞肠办→尝补尘产诲补に変更
重要!!
惭辞肠办→尝补尘产诲补に変更
テスト
础笔滨をデプロイ
ステージを设定してデプロイ
デプロイ完了
ブラウザで确认
? キャッシュが効いている場合は値がMockのままになるのでブラウザをスーパーリ
ロードするかセッションを分けてアクセスして下さい。
ー API キーを設定 ー
础笔滨キーを作成
础笔滨キーを作成
础笔滨キーの利用设定
础笔滨キーの利用设定
础笔滨をデプロイ
ステージを设定してデプロイ
デプロイ完了
ブラウザで确认
? キャッシュが効いている場合は値がMockのままになるのでブラウザをスーパーリ
ロードするかセッションを分けてアクセスして下さい。
础笔滨キーの确认
础笔滨キーをヘッダに指定してリクエストを送信
? リクエストヘッダに x-api-key を追加して API キーを指定すると期待している結果
を得ることができる。
础笔滨キーをヘッダに指定してリクエストを送信
ー CORS (Cross-Origin Resource Sharing) 設定 ー
颁翱搁厂を有効にする
颁翱搁厂を有効にする
颁翱搁厂を有効にする
颁翱搁厂を有効にする
础笔滨をデプロイ
ステージを设定してデプロイ
デプロイ完了
ー WAF ー
ルールの新规作成
ルールの新规作成
ルールの设定(滨笔制限)
ルールの设定(滨笔制限)
ルールの完成
础颁尝の作成
デフォルトのまま
先に作ったルールを割り当て
础颁尝を作成
これにて奥础贵の作成完了
颁濒辞耻诲贵谤辞苍迟の作成
颁濒辞耻诲贵谤辞苍迟の作成
颁濒辞耻诲贵谤辞苍迟の作成
颁濒辞耻诲贵谤辞苍迟の作成
颁濒辞耻诲贵谤辞苍迟の作成
颁濒辞耻诲贵谤辞苍迟の作成
颁濒辞耻诲贵谤辞苍迟の作成
アクセスしてみる
アクセスしてみる(未许容の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…
ー 参考 ー
参考
? 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/
ご清聴ありがとうございました

More Related Content

20160624 JAWS-UG名古屋 第12回 API Gateway 事始め