Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goで作るAWSツール
Search
shiro seike
PRO
April 22, 2018
Programming
0
280
Goで作るAWSツール
shiro seike
PRO
April 22, 2018
Tweet
Share
More Decks by shiro seike
See All by shiro seike
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
270
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
990
実践サーバーレスパフォーマンスチューニング ~その実力に迫る~ / Practical Serverless Performance Tuning ~A Close Look at its Power~
seike460
PRO
2
330
PHPを書く理由、PHPを書いていて良い理由 / Reasons to write PHP and why it is good to write PHP
seike460
PRO
5
560
AWS CDKを用いたセキュアなCI/CDパイプラインの構築 / Build a secure CI/CD pipeline using AWS CDK
seike460
PRO
3
720
いまあるチームにフィットさせる Serverless そして Platform Engineeringへの挑戦 / Serverless Fits the Team You Have and Platform Engineering
seike460
PRO
2
1.9k
いまあるチームにフィットさせる Serverless / Serverless fits in with the team you have now.
seike460
PRO
2
180
地方こそサーバーレス! チームにフィットさせるサーバーレス / Rural areas are serverless! Serverless to Fit Your Team
seike460
PRO
1
110
AWS X-Rayを利用したサーバーレスのパフォーマンス分析 / Serverless performance analysis using AWS X-Ray
seike460
PRO
2
170
Other Decks in Programming
See All in Programming
CSC509 Lecture 13
javiergs
PRO
0
110
Gestaltung digitaler Lösungen – Produktions- oder Designprozess?
techstories
0
100
as(型アサーション)を書く前にできること
marokanatani
10
2.9k
CSC509 Lecture 11
javiergs
PRO
0
180
@nifty天気予報:フルリニューアルの挑戦 - NIFTY Tech Talk #22
niftycorp
PRO
0
110
@nifty天気予報のフロントエンドを 実装するまで - NIFTY Tech Talk #22
niftycorp
PRO
0
110
大規模サイトリビルドの現場から:成功と失敗のリアルな教訓 / Site Rebuild,Real Lessons Learned from Successes and Failures_JJUG Fall 2024
techtekt
0
160
イベント駆動で成長して委員会
happymana
1
350
subpath importsで始めるモック生活
10tera
0
370
Cursorでアプリケーションの追加開発や保守をどこまでできるか試したら得るものが多かった話
drumnistnakano
0
150
Jakarta EE meets AI
ivargrimstad
0
600
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
150
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Building an army of robots
kneath
302
43k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
740
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Writing Fast Ruby
sferik
627
61k
Unsuck your backbone
ammeep
668
57k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Transcript
Goで作るAWSツール JAWS-UG福岡 6度目もちょっと濃い目にAWSの話をしてみよう !1 株式会社Fusic @seike460
seike460 seike460 seike460 seike460 株式会社Fusic 清家史郎 (@seike460) !2 # 得意な技術
- PHP - Server - AWS - Backend # 得意になりたい技術 - golang - Serverless
皆さん、AWS使ってますか? !3
最高ですよね! !4
でもたまにもっと自分色に染めたい って思うことありませんか? !5
私の体験例を少し… !6
!7 みんな大好き
!8 こんなサーバレス作りました • API Gatewayで送信データを受け取る • Lambdaでデータをバリデーション、問題なければS3に保存
バグってるっポイとの報告 ↓ S3データの調査 (結果バグでは無くて勘違い !9 運用中…
!10 バケット選んで
!11 ディレクトリ選んで
!12 ディレクトリ選んで × 階層分(メンドイ)
!13 ファイルを選んで 多い…検索だ!
!14 プレフィックス。。。部分一致がイイな ҎԼ༷ʹϑΝΠϧ໊ΛΧςΰϥΠζͯͨ͠ JEUZQFBDUJPOKTPO ॊೈʹݕࡧ͍ͨ͠ɻɻɻ
CLI | grepでも解決出来る 何度も実行しなければならない リアルタイム検索あったらなー… !15
作りました !16
s3ry !17
• Go製のAWS S3 操作CLI • https://github.com/seike460/s3ry • アップロード • ダウンロード
• 削除 • ファイルリスト作成 !18 s3ry(エスリー)
デモ !19
• Go製のAWS S3 操作CLI • https://github.com/seike460/s3ry • アップロード • ダウンロード
• 削除 • ファイルリスト作成 • 凄くコンパクトにCLIツールが作れた Goはミニマム利用しやすいパッケージが多い ▪プロンプトツール https://github.com/manifoldco/promptui ▪みんな大好きSDK https://github.com/aws/aws-sdk-go ※https://github.com/aws/aws-sdk-go-v2もあります • 鋭意機能追加中(現在東京region固定、syncが無い等… !20 s3ry(エスリー)
次の体験例 !21
• 弊社、Slack無いと生きてきません。常に開いています • Todoは無料アプリ スケジュールはicalで出力出来るグループウェアで管理してました • 僕の頭にはこの情報を保持できるメモリ容量はありませんでした (内部MTGスッポカシた事あります • 記憶も大事ですよ?でも時代はpollingではなくてpushですよね
(僕は悪くない • Slackが通知してくれる事で業務中にコードに集中出来る (むしろ予定を忘れていた方が効率的なんだ • この課題を解決するServerlessで作ろう(お金は書けたくない (嘘です、本当にごめんなさい !22
AWS S3で運用するSPA !23
utakata !24
!25 utakata Architecture
なに使ってるの? !26
react-redux !27
• React • Facebook社製のViewライブラリ • Redux • 状態管理を行なうライブラリ • React+Reduxすると何が良いのか?
• Reduxが状態管理してReactは描画だけに集中出来る !28 react-redux
!29 人気 + α(後述)
AWS Amplify !30
• AWS製のJavaScriptライブラリ • Amazon Cognitoと連携した認証部分を行なってくれる • React用のComponentを利用するだけでログイン画面が完成 !31 AWS Amplify
lestrrat-go/ical !32
• @lestrratさんが作成しているical読み込みライブラリ 面倒なicalをmapに展開してくれる為、凄く助かった !33 lestrrat-go/ical
Serverless Framework !34
• 主にAWS LambdaとAWS API Gatewayを使った いわゆるServerlessを作成出来るFramework • AWS LambdaがGo対応したら即Go対応取り込んでくれた(最高) •
npmを利用してインストールすることができます • 簡単にServerless Architectureを作成して、 Serverlessすることが可能 !35 Serverless Framework
serverless.ymlを設定 • runtimeをgo1.xにする • handlerをコンパイルした Goバイナリを指定する !36
go buildする時の注意点 • Serverless Frameworkが指定するバイナリをbuildする時は GOOS=linuxをつける事を忘れずに! • build用のシェルを npm run
deploy時に実行するようにしました (もっと良い方法あれば是非教えてください!) !37
!38 npm run deploy
デモ !39
• Go製のAWS S3 SPA • https://github.com/seike460/utakata • react-reduxを使ったSPA • AWS
Amplifyを使った認証機構 • Serverless Frameworkを使ったデプロイ • α版 鋭意作成中 諸事情によりプログラムは最新ではないです(主にセキュry) • WEBUIを利用しなくても利用できる様に Slack通知部分等は別パッケージにしようと構想中 !40 utakata(泡沫)
これで俺のスケジュール 管理は完璧だ!!!!! !41
待てよ… システムが止まったら… !42
エラーに怯える日々は嫌だ… !43
Fusicではある エラートラッキングツール を使ってます !44
!45 Faultline
!46 faultline Architecture • @k1LoWさんが作っているエラートラッキングツール • Error発生時にそのエラー情報をDynamoDBに保存 (WEBUI有 • Slackにも通知してくれ、即座にWEBUIから状況分析、対応が可能
Go版を使おう! !47
!48 なるほど…
OSSの借りはOSSで返すんだ! !49
faultline-go !50
• Go製のfaultline sender エラー発生時にfaultlineにデータを送付 • Slackにもデータ送付 • …を作ってたのですが発表駆動開発に失敗… Go力不足でした。。。 !51
faultline-go
• AWS Lambdaが golang 対応したことをきっかけに AWS + golangを試したが相性が良い • コンパクトにAWSツールを作成出来る
• AWSにこんな機能があれば…と思っているあなた →作っちゃいましょう • 一緒に AWS + golang 盛り上げて行きましょう!!!! !52 まとめ
ご清聴ありがとうございました! !53 株式会社Fusicは技術の大好きなエンジニアを募集してます!