AWS CLIカンファレンス2016に参加してきた

img-jaswug-cli

西澤です。日頃お世話になっているJAWS-UG CLI専門支部が主催するAWS CLIカンファレンス2016(AWS CLIを冠するカンファレンスは世界初とのこと)に参加してきましたので、ちょっと雑なメモもありますがレポートさせていただこうと思います。

実行委員会に名前だけありますが、ほとんど手伝えませんでした。申し訳ありません。

13:40 - 基調講演 (AWSJ酒徳さん、小梁川さん)

AWS CLIの基本的な考え方から開発時のTips、運用での活用事例をご紹介いただきました。知らなかったツールや手法もご紹介いただいたので、改めて試してみたいと思います。

  • AWS CLIの基本(AWSJ酒徳さん)
    • 2013年から9月からあるサービス
    • aws configure
    • Query
      • HTTPレスポンスとしてXMLが返ってくる
      • XMLをJSON形式に変換されて出力される
      • JMESPath、jpterm使うと開発に便利
    • Waiters
      • 例えばEC2のステータスを遷移を管理しながらコマンド実行したい
      • サブコマンドwaitを利用する
      • CloudWatch Eventsを利用する
    • Others
      • Templates(--generate-cli-skelton)を活用する
      • Errors(エラーハンドリング)
      • Pararel(多重度)
        • aws iam list-users --query "Users[].[UserName]" --output text | xargs -I {} -P 10 aws iam delete-user --­­user-name "{}"
  • AWS CLIを使ってやったこと(AWSJ小梁川さん)
    • 前提と課題
      • インフラと開発チームは分断されている
      • インスタンスの数が1000を超える規模になると管理が大変
      • サーバの命名規約などを利用して運用ルールを整備
      • 手作業はもちろん、コマンドラインでも限界がある
    • ユーザ時代にCLI等を活用してやったこと
      • InstanceID,tag:Name,IPアドレス,EBSボリュームのマッピング表をDB化
      • AWS priceページからregion/cost情報をパースしてDB化
      • CloudWatchとの連携させて、DBからリソース情報を見れるようにした
    • 大事なこと
      • 目的とルールを明確にしてツールを作ることを頑張り過ぎない
      • 引き継ぎ、メンテナンスできるようにしておく
      • 当時使ったツールで今ならAWSのサービスで実現できるようになっている
    • 運用において活用すべきAWSサービス
      • CloudTrail(監査)
      • AWS Config(構成管理)
      • OpsJAWSにもぜひご参加を

14:30 - 講演1: AWS CLIを始めるには (古渡 晋也さん)

AWS CLIを活用して、何を自動化しているのか、どのような考え方で利用しているか、を具体的にご紹介いただきました。具体例が多かったところが特に参考になりました。

  • AWS CLIの前
    • s3cmdは今でも利用者がいて困る
    • 他にもいろいろ
      • http://aws.amazon.com/developertools/
    • AWS CLIを使いましょう
  • AWS CLIの最初
    • 2013/09/03 v1.0.0リリース
    • EMRはPreiew版だった為、苦労した
  • AWSのセットアップ
    • configure
    • IAMロールをなるべく使う
  • AWS CLIとjq
    • フィルタ処理
    • テキスト処理
  • Tips
    • 決めたこと
      • JMESPathはちょっとむずい
      • jqをがんばることをやめた
      • 目的を明確にして使う
    • スクリプト活用例
      • プロファイル管理
      • ssh_config管理
      • BacklogのWikiドキュメント作成
      • TerminateProtectionチェック
      • アタッチされていないEBSボリュームの確認
      • SSL証明書を確認する、有効期限切れをチェック
      • --debugオプションを使おう
  • AWS CLIの次へ
    • AWS CodeDeployとAWS CLIを組み合わせた利用例
  • まとめ
    • AWS CLIとっても簡単
    • shellでがんばりすぎない
    • ツールでしかない

15:10 - ミニハンズオン (中山 順博さん)

JAWS-UG CLI専門支部ではお馴染みのハンズオンも全然ミニではありませんでした。

  • JAWS-UG AWS CLI カンファレンス 2016 ミニハンズオン - Qiita
  • AWS CLIを使い、Docker on Elastic Beanstalkで簡単にアプリケーションを公開するまで

  • AWSJ小梁川さんから補足

    • ログ管理に注意
    • Rolling Updateだけでなく、Immutableが出て使いやすくなった
    • Blue/Greenデプロイを利用するケースでは、DNSクライアントのキャッシュに注意
    • 選択肢が広がって活用しやすくなっている

16:00 - 講演2: 見せます!aws directconnect ~ (平 智彰さん)

なんとAWS CLIによるDirectConnectのリアルタイム操作。これは滅多にお目にかかることはできない貴重なデモでした。

16:10 - 講演3: Amazon Route53へのドメイン移管 (神 希嘉さん)

Route53へのドメイン移管における注意事項をまとめた発表。注意事項等がまとまっていて勉強になります。

  • 2014年7月AWSでドメイン管理が可能になった
  • 汎用jpドメインはOKだが、co.jpはまだ使えない
  • ドメイン移管に伴うトラブルで重要となるのは、技術的なこと以外(手続き、サポート先)
  • ネームサーバの移管のタイミングに注意
  • 利用する場合はドキュメントをよく読んでおく

16:40 - 講演4: OpsDevでAWS CLIを使って幸せになった話 (武川 努さん 30分)

具体例を用いてどのようにAWS CLIを活用したかをご紹介いただきました。DevとOpsの順番は意図的に入れ替えて表現されているそうです。

  • AWS CLIをどういう経緯で利用したか?
    • アプリ開発は別会社であることが多いのでDevOpsなんて無理
    • 特定のタイミングだけサーバを増強する仕組みが必要だった
    • 決められたスケジュールで定期的にサーバ増強する必要があった
    • AutoScalingは採用しなかった(当時の環境から総合的に判断)
      • インスタンス消える
      • ログどうするか
      • Nagios監視でAutoScalingとの親和性
      • データベース変更(リードレプリカ増強等)も必要だった
  • 運用負荷をどうさげたか?
    • AWS CLIで定期的な変更作業を自動化した
      • Slack通知など
      • エラー処理
      • シェルでも冪等性を持たせる
    • 今だったらどうするか?
      • ECS+Auto Scaling+HA Proxy
      • CloudFront
      • 監視はDataDogが便利
    • AWS CLIの使いどころ
      • すばやく仕上げる
      • 定期的な処理
      • Slackとの連携
    • AWS CLIを避けるべき
      • 頻繁な呼び出し
      • 制御構造、複雑なエラー処理
    • AWS CLIの利点
      • 引き継ぎしやすい
      • AWS機能の勉強になる
  • 今後も幸せになるために
    • ECS/ECR
    • CIツール/git
    • スクリプト言語(python,javascript)
    • ヒューマンスキルの向上
  • JAWS-UG CLI専門支部
    • 新機能をハンズオンで学べる
    • 意欲ある技術者との出会い
    • AWS CLIを通して各サービスへの理解が深まる
    • 波田野さん、中山さんからたくさん学べる

まとめ

AWS CLIはあくまでツールでしかなく、目的に応じて活用すべきという点を皆さんが強調されていたところが印象的でした。いつも色々と刺激をいただける勉強会ですが、忙しさにかまけず勉強を続けてOutputしていかなければと改めて痛感させられました。メモが十分に取れなかったところもありましたが、今後もAWS CLIを広める活動に貢献できるようにしていきたいと思います。

興味を持たれた方はJAWS-UG CLI専門支部で一緒に勉強しましょう(最近全然参加できてない)。