Goで作るAWSツール

 Goで作るAWSツール

E7151ab8219e76672f7a7691dd2c88e6?s=128

shiro seike

April 22, 2018
Tweet

Transcript

  1. Goで作るAWSツール JAWS-UG福岡
 6度目もちょっと濃い目にAWSの話をしてみよう !1 株式会社Fusic @seike460

  2. seike460 seike460 seike460 seike460 株式会社Fusic 清家史郎 (@seike460) !2 # 得意な技術

    - PHP - Server - AWS - Backend # 得意になりたい技術 - golang - Serverless
  3. 皆さん、AWS使ってますか? !3

  4. 最高ですよね! !4

  5. でもたまにもっと自分色に染めたい
 って思うことありませんか? !5

  6. 私の体験例を少し… !6

  7. !7 みんな大好き

  8. !8 こんなサーバレス作りました • API Gatewayで送信データを受け取る • Lambdaでデータをバリデーション、問題なければS3に保存

  9. バグってるっポイとの報告
 ↓
 S3データの調査
 (結果バグでは無くて勘違い !9 運用中…

  10. !10 バケット選んで

  11. !11 ディレクトリ選んで

  12. !12 ディレクトリ選んで × 階層分(メンドイ)

  13. !13 ファイルを選んで 多い…検索だ!

  14. !14 プレフィックス。。。部分一致がイイな ҎԼ༷ʹϑΝΠϧ໊ΛΧςΰϥΠζͯͨ͠
 JEUZQFBDUJPOKTPO
 ॊೈʹݕࡧ͍ͨ͠ɻɻɻ

  15. CLI | grepでも解決出来る
 何度も実行しなければならない
 リアルタイム検索あったらなー… !15

  16. 作りました !16

  17. s3ry !17

  18. • Go製のAWS S3 操作CLI • https://github.com/seike460/s3ry • アップロード • ダウンロード

    • 削除 • ファイルリスト作成 !18 s3ry(エスリー)
  19. デモ !19

  20. • 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. 次の体験例 !21

  22. • 弊社、Slack無いと生きてきません。常に開いています • Todoは無料アプリ
 スケジュールはicalで出力出来るグループウェアで管理してました • 僕の頭にはこの情報を保持できるメモリ容量はありませんでした
 (内部MTGスッポカシた事あります • 記憶も大事ですよ?でも時代はpollingではなくてpushですよね


    (僕は悪くない
 • Slackが通知してくれる事で業務中にコードに集中出来る
 (むしろ予定を忘れていた方が効率的なんだ • この課題を解決するServerlessで作ろう(お金は書けたくない
 (嘘です、本当にごめんなさい !22
  23. AWS S3で運用するSPA !23

  24. utakata !24

  25. !25 utakata Architecture

  26. なに使ってるの? !26

  27. react-redux !27

  28. • React • Facebook社製のViewライブラリ • Redux • 状態管理を行なうライブラリ • React+Reduxすると何が良いのか?

    • Reduxが状態管理してReactは描画だけに集中出来る !28 react-redux
  29. !29 人気 + α(後述)

  30. AWS Amplify !30

  31. • AWS製のJavaScriptライブラリ • Amazon Cognitoと連携した認証部分を行なってくれる • React用のComponentを利用するだけでログイン画面が完成 !31 AWS Amplify

  32. lestrrat-go/ical !32

  33. • @lestrratさんが作成しているical読み込みライブラリ
 面倒なicalをmapに展開してくれる為、凄く助かった !33 lestrrat-go/ical

  34. Serverless Framework !34

  35. • 主にAWS LambdaとAWS API Gatewayを使った
 いわゆるServerlessを作成出来るFramework • AWS LambdaがGo対応したら即Go対応取り込んでくれた(最高) •

    npmを利用してインストールすることができます • 簡単にServerless Architectureを作成して、
 Serverlessすることが可能 !35 Serverless Framework
  36. serverless.ymlを設定 • runtimeをgo1.xにする • handlerをコンパイルした
 Goバイナリを指定する !36

  37. go buildする時の注意点 • Serverless Frameworkが指定するバイナリをbuildする時は
 GOOS=linuxをつける事を忘れずに! • build用のシェルを npm run

    deploy時に実行するようにしました
 (もっと良い方法あれば是非教えてください!) !37
  38. !38 npm run deploy

  39. デモ !39

  40. • Go製のAWS S3 SPA • https://github.com/seike460/utakata • react-reduxを使ったSPA • AWS

    Amplifyを使った認証機構 • Serverless Frameworkを使ったデプロイ • α版 鋭意作成中
 諸事情によりプログラムは最新ではないです(主にセキュry) • WEBUIを利用しなくても利用できる様に
 Slack通知部分等は別パッケージにしようと構想中 !40 utakata(泡沫)
  41. これで俺のスケジュール 管理は完璧だ!!!!! !41

  42. 待てよ…
 システムが止まったら… !42

  43. エラーに怯える日々は嫌だ… !43

  44. Fusicではある
 エラートラッキングツール を使ってます !44

  45. !45 Faultline

  46. !46 faultline Architecture • @k1LoWさんが作っているエラートラッキングツール • Error発生時にそのエラー情報をDynamoDBに保存 (WEBUI有 • Slackにも通知してくれ、即座にWEBUIから状況分析、対応が可能

  47. Go版を使おう! !47

  48. !48 なるほど…

  49. OSSの借りはOSSで返すんだ! !49

  50. faultline-go !50

  51. • Go製のfaultline sender
 エラー発生時にfaultlineにデータを送付 • Slackにもデータ送付
 • …を作ってたのですが発表駆動開発に失敗…
 Go力不足でした。。。 !51

    faultline-go
  52. • AWS Lambdaが golang 対応したことをきっかけに
 AWS + golangを試したが相性が良い • コンパクトにAWSツールを作成出来る


    • AWSにこんな機能があれば…と思っているあなた
 →作っちゃいましょう • 一緒に AWS + golang 盛り上げて行きましょう!!!! !52 まとめ
  53. ご清聴ありがとうございました! !53 株式会社Fusicは技術の大好きなエンジニアを募集してます!