SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
勉強会①
AWSで機械学習のREST APIを構築する方法
2021/2/2
Taiki Harada
● 今回の勉強会では各サービスの機能と繋げ方
の大枠を話しますが、それぞれの細かい手
順・設定は各自その度に調べることを想定し
ています。
● 発表者も勉強中です。
REST APIとは
APIとはApplication Programming Interfaceの略称であり、何かしらのサービス提供者が、その
サービスを利用するために提供するインタフェース
RESTの4つの設計原則
● セッションなどの状態管理を行わない。(やり取りされる情報はそれ自
体で完結して解釈することができる)
● 情報を操作する命令の体系が予め定義・共有されている。
(HTTPのGETやPOSTメソッドなど)
● すべての情報は汎用的な構文で一意に識別される。(URLやURIなど)
● 情報の内部に、別の情報や(その情報の別の)状態へのリンクを含めるこ
とができる。
● リソースに対してURLが対応づけられる。(そのため、URLが名
詞的になることが多い)
https://qiita.com/masato44gm/items/dffb8281536ad321fb08
https://techtarget.itmedia.co.jp/tt/news/1806/13/news01.html
https://qiita.com/masato44gm/items/dffb8281536ad321fb08
Prerequisites
● AWSに興味がある
● AWSの概要を知ってる
○ AWSアカウントを作成済み
○ IAMとは何かまあまあ知っている
■ IAMユーザー・グループ
● AWS各サービスに対する権限をユーザー・グループごとに定義
■ IAMロール
● AWS各サービスに対する権限をAWS各サービスごとに定義
○ リージョン・AZ(Availability zone)を知ってる
■ リージョン
● AWSのサービスを提供している拠点のことです。
● 今回は東京を選びます。通信速度を気にしなければ、オハイオでも韓国でも別に
どこでもいいです。
■ AZで複数のデータセンタを指定して災害でどっかが潰れたりしても稼働可能にできま
す。東京は4つのAZを持ってます。
>Lambdaで推論関数を構築
>Python依存パッケージをEC2で構築
>EFSでマウント
>Lambdaからマウント・アクセス
>LambdaのトリガーをAPI Gatewayに設定
>APIの完成
使用する主なサービス
1. VPC
2. Lambda
3. EFS
4. EC2
5. API Gateway
使用する主なサービス
1. VPC
2. Lambda
3. EFS
4. EC2
5. API Gateway
VPCとは
● Virtual Private Cloud
● AWSのパブリッククラウド内に自社内に建設するサーバー(オンプレミス環
境)と同様のプライベートネットワークを構築できるサービス
● インターネット接続でPrivateなAWSリソースを利用できる。
● リージョンを指定したら”default vpc”が自動的に生成されます。
○ 特にカスタマイズする必要がなかったらこれを使います。今回もこれを使います。
サブネット
● 大きなネットワークを複数の小さなネットワークに分割して管理する際の、
管理単位となるネットワーク
セキュリティグループ・ネットワークACL
● インバウンド通信・アウトバウンド通信を制御します。
今回はこれらはいじりません。インターネット接続がいる時とかカスタマイズし
ます。
ルートテーブル・インターネットゲートウェイ
● インターネット介した通信やVPNを介した外部サーバーへの通信など、サブ
ネット内のEC2インスタンスのネットワークルーティングを制御します。
使用する主なサービス
1. VPC
2. Lambda
3. EFS
4. EC2
5. API Gateway
Lambdaとは
バッチ処理のようにまとめて処理を行うのではなく、不定期に発生するイベント
を逐次的に処理するのに最適なサービス
● プログラムを実行するCompute engine
● サーバーの保守運用が不要
● 実行時間だけに課金
● 必要なプログラムをアップロードするだけで利用できる
● APIを通じてのキック、他に各種イベント通知からの呼び出しができる
○ S3のPut通知、Kinesisのストリーム、DynamoDBのテーブル更新通知、SNS、SES、Cognito、
CloudWatch Events etc…
○ 何時から何時まで何分ごとにキック、とかもできちゃう
● 対応言語
○ Node.js, Java, Pyton, C++, Go, Ruby
Lambda関数の作り方
引数 event, contextを設定し、レスポンスを辞書型で指定するだけ
Lambda関数の作り方
● Lambda内でコーディングできるが、ローカルで作成したコードをZIPでアッ
プロードすることもできる
● 大事な設定 IAMロール
○ Lambdaから利用するAWSサービス(S3,VPC ,EFS)に対する権限を渡してあげる必要がある
制限&解決法
● Lambda内自体の容量が少
ないので、Pytorchや
Tensorflowなど大容量なパ
ッケージを導入できない
● どっかにパッケージを置い
といて、そこにパス形式で
アクセスできないか?
EFS
使用する主なサービス
1. VPC
2. Lambda
3. EFS
4. EC2
5. API Gateway
EFSとは
● Elastic File System
● ストレージ伸縮自在な管理不要のファイルシステム
● Amazon EFS は、耐久性と可用性を高めるために複数のアベイラビリティーゾーン (AZ) に分散されるデータを保存するリージョ
ナルサービスです。Amazon EC2 インスタンスは、AZ、リージョン、VPC にかけてファイルシステムにアクセスでき、また、オ
ンプレミスサーバーは AWS Direct Connect あるいは AWS VPN を介してアクセスできます。
● EC2インスタンスから複数リージョン・AZ・VPCにかけてEFSにアクセスで
き、これに加えてLambdaでもアクセスできるようになった
マウントとは
● EFS
○ /ml--★
■ /lib
■ /model
■
● EC2
○ efs/fs1/ml--★
■ /lib
■ /model
■
アクセスポイント
★以下ディレクトリがマウントされ、フ
ァイルシステムのアクセスポイントを通
じてアクセス可能になる
● Lambda
○ /mnt/api--★
■ /lib
■ /model
■
結局何ができるか
● EC2で環境構築して、そのリソースをEFSを利用することでLambdaからも
アクセス可能になる
● TorchでもTFでも、なんでもどんとこい!!(GPUは使えないけど)
使用する主なサービス
1. VPC
2. Lambda
3. EFS
4. EC2
5. API Gateway
EC2とは
クラウド上で仮想サーバ(インスタンス)、バックアップイメージ(AMI・スナ
ップショット)、ストレージ(EBS)、ファイアウォール(セキュリティグルー
プ)、固定グローバルIP(Elastic IP)などを利用できるサービス
AWSにあらかじめ用意されているAMI(Amazon Machine Image)からディスク
容量や通信要件を設定して、インスタンスを作成
インスタンスの情報=OS+CPU+メモリ+etc…
=仮想サーバとしてどのようなリソースで稼働するか
これらをカスタマイズして最適な仮想サーバを立てることができる
今回のインスタンス
● IAMロールやVPC、ローカルからSSH接続できるようなセキュリティグルー
プを作成・設定する必要がある
● OSやストレージ・メモリのタイプは以下の通り
● EFSをマウントするのでファイルシステム
を追加する必要がある
Python依存パッケージのインストール
● インスタンス作成できたらアクセスキー(めっちゃ大事なやつ、ちゃんと保
管するべき)を作成の後にSSH接続し、あとは普通のターミナル操作と同じ。
● EFSは/mnt/efs/fs1 以下にマウントされている。+/mlでアクセスポイント以下
の操作をする。
● 詳細
○ https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-package.html
○ https://aws.amazon.com/jp/blogs/news/new-a-shared-file-system-for-your-lambda-functions/
● ライブラリは/lib、モデルは/modelにインストール・アップロード
○ ローカルと仮想サーバとのファイルのやりとりはscpコマンドでできる
■ https://dearsikandarkhan.medium.com/files-copying-between-aws-ec2-and-local-
d07ed205eefa
これでEFSにLambda関数実行に必要なパッケージ
が追加されました。あとはLambdaからもEFSの追
加をして好きなパス名でマウントターゲットを決め
ます。
● EFS
○ /ml--★
■ /lib
■ /model
■
● EC2
○ efs/fs1/ml--★
■ /lib
■ /model
■
● Lambda
○ /mnt/api--★
■ /lib
■ /model
■
使用する主なサービス
1. VPC
2. Lambda
3. EFS
4. EC2
5. API Gateway
API Gatewayとは
● APIを作成、維持、保護できるサービス
● Lambdaのトリガーの場合、リクエストされたらLambdaへリクエストを送り
レスポンスを処理してクライアントへ戻す
Lambdaのトリガーとして設定するのは「トリガーを追加」で簡単にできる
トリガーとしてCloudWatch Eventsを利用することで、キックするタイムスケジ
ュールを自在に設定できる(ex AM 9~PM9で3分間ごとキック)
完成
● テスト成功・CORSを解決(ドメインが違うサーバー同士の通信を解決)し
たら、任意のステージにデプロイして完成
まとめ・課題
● IAM、VPC、リージョンなどAWSサービスを利用する上で必要な基礎知識を
なんとなく理解した。
● Lambdaを使ってイベント処理を行う関数を作れるようになった。
● EC2で環境構築を行い、そのリソースにEFSを利用してLambdaからマウン
トしてアクセスできる方法を身につけた。
● LambdaのトリガーをAPI Gatewayに設定して、REST APIを構築する方法が
わかった。
チーム開発の際は、Lambda・EC2の環境がローカルと違うと色々めんどくさい
ので、AWS内で、EC2内で開発・テスト環境を統一した方が良さそう
Docker+EC2を用いて開発環境を統一する方法が知りたい
参考文献
● 効果的な導入・運用のためのAmazon Web Services 活用入門
● 一番大切な知識と技術が身に付く Amazon Web Services パターン別構築・
運用ガイド
● AWS公式ドキュメント

Mais conteúdo relacionado

Semelhante a AWSで医療AI、機械学習のREST APIを構築する方法

Dat007 データコピー・デ
Dat007 データコピー・デDat007 データコピー・デ
Dat007 データコピー・デTech Summit 2016
 
IOTS2021発表スライド:オントロジーを用いたOpenAPI Documentの制約推薦システム
IOTS2021発表スライド:オントロジーを用いたOpenAPI Documentの制約推薦システムIOTS2021発表スライド:オントロジーを用いたOpenAPI Documentの制約推薦システム
IOTS2021発表スライド:オントロジーを用いたOpenAPI Documentの制約推薦システムAkira Shibata
 
RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料Tetsuya Hasegawa
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥Insight Technology, Inc.
 
10.1 res tful services
10.1 res tful services10.1 res tful services
10.1 res tful servicesJian Feng
 
社内システムの構造と設計、実装のはなし(下書きバージョン)
社内システムの構造と設計、実装のはなし(下書きバージョン)社内システムの構造と設計、実装のはなし(下書きバージョン)
社内システムの構造と設計、実装のはなし(下書きバージョン)SATOSHI TAGOMORI
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみようデータ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみようSalesforce Developers Japan
 
RESTful Web API Design
RESTful Web API DesignRESTful Web API Design
RESTful Web API DesignAkinari Tsugo
 
RestfulなAPIの設計のお話
RestfulなAPIの設計のお話RestfulなAPIの設計のお話
RestfulなAPIの設計のお話ftsan
 
[A31]AWS上でOracleを利用するためのはじめの一歩!by Masatoshi Yoshida
[A31]AWS上でOracleを利用するためのはじめの一歩!by Masatoshi Yoshida[A31]AWS上でOracleを利用するためのはじめの一歩!by Masatoshi Yoshida
[A31]AWS上でOracleを利用するためのはじめの一歩!by Masatoshi YoshidaInsight Technology, Inc.
 

Semelhante a AWSで医療AI、機械学習のREST APIを構築する方法 (13)

Dat007 データコピー・デ
Dat007 データコピー・デDat007 データコピー・デ
Dat007 データコピー・デ
 
IOTS2021発表スライド:オントロジーを用いたOpenAPI Documentの制約推薦システム
IOTS2021発表スライド:オントロジーを用いたOpenAPI Documentの制約推薦システムIOTS2021発表スライド:オントロジーを用いたOpenAPI Documentの制約推薦システム
IOTS2021発表スライド:オントロジーを用いたOpenAPI Documentの制約推薦システム
 
RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
 
10.1 res tful services
10.1 res tful services10.1 res tful services
10.1 res tful services
 
社内システムの構造と設計、実装のはなし(下書きバージョン)
社内システムの構造と設計、実装のはなし(下書きバージョン)社内システムの構造と設計、実装のはなし(下書きバージョン)
社内システムの構造と設計、実装のはなし(下書きバージョン)
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみようデータ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
 
RESTful Web API Design
RESTful Web API DesignRESTful Web API Design
RESTful Web API Design
 
RestfulなAPIの設計のお話
RestfulなAPIの設計のお話RestfulなAPIの設計のお話
RestfulなAPIの設計のお話
 
[A31]AWS上でOracleを利用するためのはじめの一歩!by Masatoshi Yoshida
[A31]AWS上でOracleを利用するためのはじめの一歩!by Masatoshi Yoshida[A31]AWS上でOracleを利用するためのはじめの一歩!by Masatoshi Yoshida
[A31]AWS上でOracleを利用するためのはじめの一歩!by Masatoshi Yoshida
 
BEAR.Sunday 1.X
BEAR.Sunday 1.XBEAR.Sunday 1.X
BEAR.Sunday 1.X
 

AWSで医療AI、機械学習のREST APIを構築する方法