SlideShare 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 を押下
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…
ー 参考 ー
参考
❏ 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

What's hot

ReactNativeを語る勉強会
ReactNativeを語る勉強会ReactNativeを語る勉強会
ReactNativeを語る勉強会
yohei sugigami
 
ドローンの安全運転をささえるLambda
ドローンの安全運転をささえるLambdaドローンの安全運転をささえるLambda
ドローンの安全運転をささえるLambda
真吾 吉田
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
Narami Kiyokura
 
スキスキIonic
スキスキIonicスキスキIonic
スキスキIonic
Kon Yuichi
 
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
miso- soup3
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
 
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
普段Reactを触ってる僕が Angularを触ってみた感想を共有する普段Reactを触ってる僕が Angularを触ってみた感想を共有する
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
kazuki matsumura
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
Takuya Mukohira
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
Kanako Kobayashi
 
社内LTネタ ReactNative
社内LTネタ ReactNative社内LTネタ ReactNative
社内LTネタ ReactNative
Oguri Toru
 
Editorlt
EditorltEditorlt
Editorlt
Masaki Suzuki
 
Realm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみてRealm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみて
Daisuke Nagata
 
DevLove Kansai AWS
DevLove Kansai AWSDevLove Kansai AWS
DevLove Kansai AWS
Takuro Sasaki
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
Narami Kiyokura
 
Directiveで実現できたこと
Directiveで実現できたことDirectiveで実現できたこと
Directiveで実現できたこと
Kon Yuichi
 
React Native 入門
React Native 入門React Native 入門
React Native 入門
Seiichi Okumiya
 
kintoneの大規模フロントエンド開発とツール
kintoneの大規模フロントエンド開発とツールkintoneの大規模フロントエンド開発とツール
kintoneの大規模フロントエンド開発とツール
Yasuharu Sakai
 
AWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツールAWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツール
Masaki Suzuki
 
grpc-gateway を試してみた fukuoka.go#11
grpc-gateway を試してみた fukuoka.go#11grpc-gateway を試してみた fukuoka.go#11
grpc-gateway を試してみた fukuoka.go#11
Yutaka Tachibana
 
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみようReact NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
dcubeio
 

What's hot (20)

ReactNativeを語る勉強会
ReactNativeを語る勉強会ReactNativeを語る勉強会
ReactNativeを語る勉強会
 
ドローンの安全運転をささえるLambda
ドローンの安全運転をささえるLambdaドローンの安全運転をささえるLambda
ドローンの安全運転をささえるLambda
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
 
スキスキIonic
スキスキIonicスキスキIonic
スキスキIonic
 
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
普段Reactを触ってる僕が Angularを触ってみた感想を共有する普段Reactを触ってる僕が Angularを触ってみた感想を共有する
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
 
社内LTネタ ReactNative
社内LTネタ ReactNative社内LTネタ ReactNative
社内LTネタ ReactNative
 
Editorlt
EditorltEditorlt
Editorlt
 
Realm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみてRealm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみて
 
DevLove Kansai AWS
DevLove Kansai AWSDevLove Kansai AWS
DevLove Kansai AWS
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
 
Directiveで実現できたこと
Directiveで実現できたことDirectiveで実現できたこと
Directiveで実現できたこと
 
React Native 入門
React Native 入門React Native 入門
React Native 入門
 
kintoneの大規模フロントエンド開発とツール
kintoneの大規模フロントエンド開発とツールkintoneの大規模フロントエンド開発とツール
kintoneの大規模フロントエンド開発とツール
 
AWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツールAWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツール
 
grpc-gateway を試してみた fukuoka.go#11
grpc-gateway を試してみた fukuoka.go#11grpc-gateway を試してみた fukuoka.go#11
grpc-gateway を試してみた fukuoka.go#11
 
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみようReact NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
 

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

Jawsug chiba API Gateway
Jawsug chiba API GatewayJawsug chiba API Gateway
Jawsug chiba API Gateway
Takuro Sasaki
 
Serverless for VUI
Serverless for VUIServerless for VUI
Serverless for VUI
真吾 吉田
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DeNA
 
EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会
Kentaro Ohkouchi
 
Fun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swaggerFun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swagger
AnzaiKumiko
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
真吾 吉田
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介
CData Software Japan
 
アウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもするアウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもする
Mitsuhiro Yamashita
 
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
Kazuya Sugimoto
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
bitbank, Inc. Tokyo, Japan
 
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
Junji Nishihara
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
 
APIモック3分クッキング
APIモック3分クッキングAPIモック3分クッキング
APIモック3分クッキング
政雄 金森
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
 
AWSで開発するサーバレスAPIバックエンド
AWSで開発するサーバレスAPIバックエンドAWSで開発するサーバレスAPIバックエンド
AWSで開発するサーバレスAPIバックエンド
暁 三宅
 
Talk: serverless-express
Talk: serverless-expressTalk: serverless-express
Talk: serverless-express
HiroyukiTakakura
 
Whats ACI API?
Whats ACI API?Whats ACI API?
Whats ACI API?
Takao Setaka
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No Servers
Keisuke Nishitani
 
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
Masayuki KaToH
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
真吾 吉田
 

Similar to 20160624 JAWS-UG名古屋 第12回 API Gateway 事始め (20)

Jawsug chiba API Gateway
Jawsug chiba API GatewayJawsug chiba API Gateway
Jawsug chiba API Gateway
 
Serverless for VUI
Serverless for VUIServerless for VUI
Serverless for VUI
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
 
EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会EC-CUBE API プラグイン勉強会
EC-CUBE API プラグイン勉強会
 
Fun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swaggerFun tech14-alibaba cloud api gateway-swagger
Fun tech14-alibaba cloud api gateway-swagger
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介
 
アウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもするアウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもする
 
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
 
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
"Kongゲートウェイ2.5リリース" Kong Konnectアップデート オンラインミートアップ :kong 製品整理、優位性
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
 
APIモック3分クッキング
APIモック3分クッキングAPIモック3分クッキング
APIモック3分クッキング
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
AWSで開発するサーバレスAPIバックエンド
AWSで開発するサーバレスAPIバックエンドAWSで開発するサーバレスAPIバックエンド
AWSで開発するサーバレスAPIバックエンド
 
Talk: serverless-express
Talk: serverless-expressTalk: serverless-express
Talk: serverless-express
 
Whats ACI API?
Whats ACI API?Whats ACI API?
Whats ACI API?
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No Servers
 
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
 

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