aws sdk for go を使って作ってみた話
TRANSCRIPT
AWS SDK for Go
を使って作ってみた話
2015年9月8日
JAWS−UG千葉支部 Vol.5 懇親会JAWS−UG中央線 内田 学
27+6P
2
‣ AWS SDK for Goとは?
‣ 使って作ってみた! ‣ まとめ ‣ 告知
アジェンダ
4
➡AWS SDK for Goとは?
‣ 使って作ってみた! ‣ まとめ ‣ 告知
アジェンダ
5
‣ golang 用のAWS SDK
‣ 2015/09/08 現在 Developer Preview
‣ GitHubを確認するとかなりの頻度で更新
が行われているのがわかる
‣ リリースされているバージョン毎にリリー
スノートが用意されている
AWS SDK for Goとは?
6
‣ golangの特徴を使ってAWSを操作可能
‣ クロスコンパイルによるマルチ環境での動
作が可能
‣ 実行環境の構築/設定が不要
‣ 非同期処理が比較的簡単に実現可能
‣ 比較的省メモリで動作し実行速度も速い
AWS SDK for Goとは?
7
✓AWS SDK for Goとは?
➡使って作ってみた! ‣ まとめ ‣ 告知
アジェンダ
8
‣ 文字通りにAWS SDK for Goを使ってCLIツー
ルを作ってみた
‣ rds-try という名称で地味に公開中
‣ 詳細な内容については README.md と Blog
にまとめて記載済み
‣ なので今回は簡単に説明していく
使って作ってみた!
9
‣ 制限事項として
- Amazon RDS for MySQL のみに対応
- 動作しているRDSインスタンスが必要
- API呼び出しでエラーの場合再呼び出し無し
- 実行状態を通知する機能は無し
- Tagの内容でツールでの作成なのかを判断
- エラーで終了した場合その状態のまま
使って作ってみた!
10
‣ なぜ作ったのか?
- 普段はあまり負荷がないためマイクロインスタンスで十分
- DBには数十万件のレコードがある
- レコード数がそこそこあるので集計やバッチ処理に時間
がかかる時がある
- 処理中にリソースを使い果たしてしまい監視が反応する
時がある
- 処理する時だけインスタンスタイプを変更できたら便利
使って作ってみた!
11
‣ なぜ作ったのか?
- スナップショットから復元して処理すればいいのでは?
- 復元後のRDSはセキュリティグループなどがデフォルト
のため、そのままではアクセス出来ない
- 復元と設定変更を行い集計処理まで自動で出来たら楽に
なるのでは?
- golangを採用したのは単純に興味津々だったから
- AWS CLIや定番のRubyでも当然同じことは可能
使って作ってみた!
12
‣ 出来ることは?
- スナップショットからのインスタンス作成
• 新規スナップショットの作成
- 作成したインスタンスの一覧表示
• 作成したスナップショットの一覧表示
- 作成したインスタンスの削除
• 作成したスナップショットの削除
- クエリー実行時間計測
- クエリー結果ファイル出力
使って作ってみた!
13
‣ 使ってみるには?
- リリースページ からファイルをダウンロード
- 実行環境に対応したものを利用する
- コンフィグファイルを作成する
- クエリーファイルを作成する
- ファイルが出力されるので権限の確認
- 後はコマンドを実行するだけ!
使って作ってみた!
14
✓AWS SDK for Goとは?
✓使って作ってみた! ➡まとめ ‣ 告知
アジェンダ
15
‣ AWS SDK for Go&golang楽しいです
‣ たとえ自分用だとしてもプロダクトを作って
AWS SDKを利用するのはおすすめ
‣ プロダクトがある事で定期的にAWS SDKの
ことを気にする必要がある
まとめ
16
‣ AWS SDKについてもpublic初期から継続的に見て
いるので愛着が半端ない
‣ 利用しているAWS SDKが小変更されただけでも盛
り上がれる!
‣ AWS SDKも初期はAWS APIに近い基本的な関数し
かないため構築手順は多くなるが、それに比例して
AWS API&SDKへの理解度と愛着度が増す
まとめ
17
‣ 最終的には利用しているAWS SDKにコントリ
ビュートしてカイゼンに協力していけるようになる
のが理想形
‣ 皆さんもAWS SDKを使ってプロダクトやサービス
を作ってみてはどうでしょう?
‣ 自分の好きな言語+AWSは最強ではないかと思い
ました!!
まとめ
18
✓AWS SDK for Goとは?
✓使って作ってみた! ✓まとめ ➡告知
アジェンダ
19告知
この中に9/27(日)午前10時30分「高尾山ビアマウント」に集合出来る人はいらっしゃいますか?
20
‣ 遅くなりましたが今年も開催します
‣ JAWS−UG in 高尾山!!
‣ 今年は中央線&京王線の合同開催です
‣ 高尾山でJAWS−UGとか意味わかりません
が?という人には去年の様子を少し紹介!
‣ 詳細についてはBlogをご覧ください
告知
23
https://jaws-ug-chuoline.doorkeeper.jp/events/30570
https://jawsug-keioline.doorkeeper.jp/events/30653
「JAWS−UG 中央線」or 「JAWS−UG 京王線」で検索!
告知
24告知
AWS re:Invent 2015 で集合する前に9/27(日)午前10時30分 「高尾山ビアマウント」に集合でお願いします!
25
https://ekiworld.net/personal/service/index.html http://roote.ekispert.net/ 「駅すぱあと」or「Roote」で検索!
お帰りの際は
26
https://aws.amazon.com/jp/solutions/case-studies/val/ 「AWS 導入事例 駅すぱあと」で検索!
お帰りの際は
28
‣ JAWS-UG 中央線
- http://jaws-ug.jp/bc/chuoline/
‣ JAWS-UG 京王線
- https://jawsug-keioline.doorkeeper.jp/
‣ AWS SDK for Go
- https://aws.amazon.com/jp/sdk-for-go/
Appendix
29
‣ aws/aws-sdk-go
- https://github.com/aws/aws-sdk-go
‣ Release: AWS SDK for Go v0.9.5
- http://aws.amazon.com/releasenotes/
6995518966379854
‣ uchimanajet7 - Pixelhub.me
- http://pixelhub.me/pixelhub1/index.php?
user=uchimanajet7
Appendix
30
‣ uchimanajet7/rds-try
- https://github.com/uchimanajet7/rds-try
‣ rds-try/README.md
- https://github.com/uchimanajet7/rds-try/blob/master/
README.md
‣ aws-go-sdk を使ってRDSをちょっとだけ操作できる「rds-
try」というツールを作ってみた
- http://uchimanajet7.hatenablog.com/entry/
2015/03/17/211139
Appendix
31
‣ Releases · uchimanajet7/rds-try
- https://github.com/uchimanajet7/rds-try/releases
‣ 「JAWS-UG中央線第3回勉強会 in 高尾山 #jawsug」
(2014年08月02日)の開催メモ
- http://uchimanajet7.hatenablog.com/entry/
2014/08/04/130356
‣ 高尾山ビアマウント
- http://www.takaotozan.co.jp/beermnt/
Appendix
32
‣ Jaws-ug中央線 - 全セッション終了後の記念写真です。
- https://www.facebook.com/chuoline.jawsug/posts/
832797526730914
‣ JAWS-UG中央線&京王線合同勉強会 in 高尾山2015
- https://jaws-ug-chuoline.doorkeeper.jp/events/30570
- https://jawsug-keioline.doorkeeper.jp/events/30653
‣ サービス・製品紹介 - 個人ユーザー向けサービス
- https://ekiworld.net/personal/service/index.html
Appendix
33
‣ 駅すぱあとの『Roote』
- http://roote.ekispert.net/
‣ AWS 導入事例:株式会社ヴァル研究所
- https://aws.amazon.com/jp/solutions/
case-studies/val/
‣ まちなみくん
- https://www.facebook.com/matinamikun
Appendix