SlideShare une entreprise Scribd logo
1  sur  15
AWSで自作CGIをサーバレス
実装してみた 〜その3
株式会社クリック 夏目祐樹
自己紹介
 夏目祐樹 (ナツメユウタ)
 新卒2年目の新人SE(?)
 正社員だけど電気屋さんの子会社に派遣される
 Chef Guy
自作CGI Web-Library
 自炊した書籍を
ブラウザ経由で読むためのもの
 本以外でも画像ファイル
であれば読める
 家のサーバで動かしているが
レスポンス等もあり
AWSに移植を決める
間に合いませんでした
間に合わなかった理由
 画像ファイルが60Gもあったため軽量化を
図る必要があった。
かつ、その調査やコンバートに時間がかかった。
 Cognito User Poolsをつかったアクセス制御の
いい方法が思いつかず、調査に時間をかけすぎた
 Node.jsの非同期処理に不慣れで
Lambdaの実装に時間がかかった。
 艦これArcadeとか空の軌跡とかに浮気してた
アジェンダ
設計の変遷
苦労したこと
設計の変遷 第一次設計
 初めてのLTで話した構成
 S3の静的ホスティングを使って運用
 アクセス制御はバケットのポリシーを使用
設計の変遷 第二次設計
 LT後の助言をもとに改良した構成
 Web公開部分をCloudFrontに変更。それに伴いアクセス制御をWAFに。
 WAFの詳細は過去のLT資料に
http://www.slideshare.net/yutanatsume5/awscgi-2
設計の変遷 第三次設計
 Dynamoで困ったこととデータ設計の結果、
Dynamoを使用しないことにした
 現状この設計で実装中
設計の変遷 第四次設計 (渇望)
 実装の方法もまだよくわからないため
渇望に近い設計
 容量的に小さい管理データはDynamoに、
大きいものはS3に
 ユーザー認証をCognito User Poolsに一任
 現在手動でやっている管理系の機能を
EC2上に構築
苦労したこと Lambda
 テストの容易さからWebコンソールで編集を行う
 そのため、npmを使ったライブラリの追加等ができなかった。
 Lambdaのファンクションをグループ分けできないので、
テスト用にファンクションを大量に作ったとき探すのが
大変だった。
苦労したこと DynamoDB
 JSONでデータの更新取得ができる
 できるものの、取得時にJSON内部で
型情報を持っているためパースしないと使いにくい
 LambdaをWebコンソールで書いているため
パーサーのライブラリを導入できない
苦労したこと WAF
 String matchigでURIを選択すると
FQDN部をマッチングできない。
 正規表現が使えない。
 若干高い。
苦労したこと Cognito User Pools
 最近できたサービスで情報が少ない
 アクセストークンを取得できるものの、
トークンが有効なものか確認する方法がわからない
 アクセストークンをユーザーデータに格納して
有効か確認しようと思ったが、
Lambdaに渡せるデータにアクセストークンがない
まとめ
 開発は間に合いませんでした
 S3, CroudFront, ACM, API Gateway, Lambda,
WAF, Route53を使用して開発を行っている
 DynamoDBを使用して一部のデータを管理する……たぶん
 EC2上に管理用のWebページを構築する……いずれ

Contenu connexe

Tendances

AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義する
Sugawara Genki
 
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
Takehiro Suemitsu
 

Tendances (20)

エンジニアから見たRPA
エンジニアから見たRPAエンジニアから見たRPA
エンジニアから見たRPA
 
Active job meets kubernetes
Active job meets kubernetesActive job meets kubernetes
Active job meets kubernetes
 
Ruby/Rails Benchmarking and Profiling with TDD
Ruby/Rails Benchmarking and Profiling with TDDRuby/Rails Benchmarking and Profiling with TDD
Ruby/Rails Benchmarking and Profiling with TDD
 
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
 
Crawler Commons
Crawler CommonsCrawler Commons
Crawler Commons
 
ログ分析勉強会_オンライン_vol2
ログ分析勉強会_オンライン_vol2ログ分析勉強会_オンライン_vol2
ログ分析勉強会_オンライン_vol2
 
EC2に対するcloudwatchのアクション設定がポリシーで使えないときの代替策
EC2に対するcloudwatchのアクション設定がポリシーで使えないときの代替策EC2に対するcloudwatchのアクション設定がポリシーで使えないときの代替策
EC2に対するcloudwatchのアクション設定がポリシーで使えないときの代替策
 
Cloud automator的なものを実装してみる
Cloud automator的なものを実装してみるCloud automator的なものを実装してみる
Cloud automator的なものを実装してみる
 
AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義する
 
はじめてのAWS Lambda
はじめてのAWS LambdaはじめてのAWS Lambda
はじめてのAWS Lambda
 
リーダブルコード勉強会 in 筑波大のアイスブレイク
リーダブルコード勉強会 in 筑波大のアイスブレイクリーダブルコード勉強会 in 筑波大のアイスブレイク
リーダブルコード勉強会 in 筑波大のアイスブレイク
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
 
AWS CLIでEC2の利用料金を節約する
AWS CLIでEC2の利用料金を節約するAWS CLIでEC2の利用料金を節約する
AWS CLIでEC2の利用料金を節約する
 
Lvsをvpc上に構築してみた話
Lvsをvpc上に構築してみた話Lvsをvpc上に構築してみた話
Lvsをvpc上に構築してみた話
 
第5回Sql server2017勉強会資料
第5回Sql server2017勉強会資料第5回Sql server2017勉強会資料
第5回Sql server2017勉強会資料
 
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
 
20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入
 

En vedette

DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
Terui Masashi
 
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
wintechq
 

En vedette (20)

ネットワーク構成から考える AWS IaaS 管理
ネットワーク構成から考える AWS IaaS 管理ネットワーク構成から考える AWS IaaS 管理
ネットワーク構成から考える AWS IaaS 管理
 
Aws x MLB ~after cast~
Aws x MLB ~after cast~Aws x MLB ~after cast~
Aws x MLB ~after cast~
 
Jawsug福岡 201606 up
Jawsug福岡 201606 upJawsug福岡 201606 up
Jawsug福岡 201606 up
 
Amazon Cognitoはとってもよか!
Amazon Cognitoはとってもよか!Amazon Cognitoはとってもよか!
Amazon Cognitoはとってもよか!
 
コミュニティと自分
コミュニティと自分コミュニティと自分
コミュニティと自分
 
mizuderuからnekoderuへ
mizuderuからnekoderuへmizuderuからnekoderuへ
mizuderuからnekoderuへ
 
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
 
20170311 jawsdays 公開
20170311 jawsdays 公開20170311 jawsdays 公開
20170311 jawsdays 公開
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
 
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
AWS初心者が自作CGIをサーバレス実装の設計をしてみるAWS初心者が自作CGIをサーバレス実装の設計をしてみる
AWS初心者が自作CGIをサーバレス実装の設計をしてみる
 
DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
 
WebsitesプチDeepDive
WebsitesプチDeepDiveWebsitesプチDeepDive
WebsitesプチDeepDive
 
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
20150214ふくあずGoogle Cardbord~お手軽VR体験への誘い~
 
Visual studio communityの紹介
Visual studio communityの紹介Visual studio communityの紹介
Visual studio communityの紹介
 
AWS x MLB
AWS x MLBAWS x MLB
AWS x MLB
 
CakePHP3で学ぶAPIマネジメント #phpconfuk
CakePHP3で学ぶAPIマネジメント #phpconfukCakePHP3で学ぶAPIマネジメント #phpconfuk
CakePHP3で学ぶAPIマネジメント #phpconfuk
 
Jenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCIJenkinsとamazon ecsで コンテナCI
Jenkinsとamazon ecsで コンテナCI
 
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
 
Azureで始めるDevOps
Azureで始めるDevOpsAzureで始めるDevOps
Azureで始めるDevOps
 

Plus de 祐樹 夏目 (6)

僕の Serverless web application
僕の Serverless web application僕の Serverless web application
僕の Serverless web application
 
新卒1年目の個人活動まとめ
新卒1年目の個人活動まとめ新卒1年目の個人活動まとめ
新卒1年目の個人活動まとめ
 
PowerShell DSC 入門
PowerShell DSC 入門PowerShell DSC 入門
PowerShell DSC 入門
 
新卒2年目のchef guy
新卒2年目のchef guy新卒2年目のchef guy
新卒2年目のchef guy
 
AWSで自作CGIをサーバレス実装してみた ~その2~
AWSで自作CGIをサーバレス実装してみた ~その2~AWSで自作CGIをサーバレス実装してみた ~その2~
AWSで自作CGIをサーバレス実装してみた ~その2~
 
Powershellで始める.net プログラミング
Powershellで始める.net プログラミングPowershellで始める.net プログラミング
Powershellで始める.net プログラミング
 

Dernier

Dernier (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

AWSで自作CGIをサーバレス実装してみた 〜その3