Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

はじめてのAWS CLI

274 views

Published on

はじめてのAWS CLI

Published in: Technology
  • Be the first to comment

はじめてのAWS CLI

  1. 1. はじめてのAWS CLI Nobuhiro Nakayama / 2016/9/17 / JAWS-UG 秋の大分熊本勉強会ツアー@大分
  2. 2. me.json { "name":"Nobuhiro Nakayama", "company":"UCHIDAYOKO CO., LTD.", "favorite aws services": [ "IAM", "AWS CLI“ ], "certifications":[ "AWS Certified Solutions Architect-Professional", "AWS Certified SysOps Administrator-Associate", ] }
  3. 3. Agenda  AWS CLIとは?  なぜAWS CLIを使うのか  AWS CLIの使い方  Demo  Tips
  4. 4. AWS CLIとは
  5. 5. AWS CLIとは?  AWSを操作するためのコマンドラインツール  コマンドライン = 黒いアレ  AWSを操作する方法はいろいろ/CLIはその一つ  Management Console(ブラウザ)  SDK  CLI CLIとAWS Tools for Windows PowerShellがある(今日はCLIについてお話しします)
  6. 6. AWS CLI  様々なプラットフォームに対応  Windows、Linux、Mac  大半のサービスをサポート  http://docs.aws.amazon.com/cli/latest/reference/  CloudFrontがずっとPreview・・・
  7. 7. なぜAWS CLIを使うのか
  8. 8. CLIはいいぞ
  9. 9. なぜAWS CLIを使うのか  手順書をメンテナンスしやすい  作業ミスの予防  作業の効率化  AWSの理解を深めるため
  10. 10. Management Consoleの手順書の場合・・・  手順書作りは刺身タンポポ  スクリーンキャプチャ地獄  デザインの変更への追従  「またExcelに画像を貼り付ける仕事がはじまるお・・・」
  11. 11. ?!
  12. 12. AWS CLIの手順書の場合・・・  (慣れるまでは)作成がすこし大変  各種確認も含めた手順の確立が必要  作った手順書の利用は(いい意味で)刺身タンポポ  変数に案件固有のパラメータを設定したら、あとは手順書通りに実行するだけ  メンテナンス頻度の低下(APIはほとんど変わらない)  属人性の排除  「スクリーンキャプチャしてる場合じゃねぇ!」 「頻繁に実施する作業」に対しては手順書を作りましょう
  13. 13. AWS CLIの手順書の場合・・・
  14. 14. 各種ドキュメンテーションツール  Sphinx  CLI専門支部創設者推奨!  Wiki  latex  esa.io  Qiita:Team  Excel
  15. 15. 【宣伝】JAWS-UG CLI専門支部  運用エンジニアのためのAWS CLI勉強会  手順書はすべて公開  http://qiita.com/tcsh/items/b55eee599ae2c8806e4f  隔週月曜に本編を開催  https://jawsug-cli.doorkeeper.jp/  毎月1回の朝会も開始  http://jawsug-asa.connpass.com/
  16. 16. AWS CLIの使い方
  17. 17. AWS CLIの使い方 1. インストール 2. 認証情報およびリージョンの設定 大きくはこの2つだけ
  18. 18. インストーラのダウンロード、インストール  Windows:msi (32bit/64bit)  AWS公式サイトへ  Linux:pip(Python 2.6.5以上が必要)  Pip:Pythonのパッケージ管理システム  Amazon LinuxはAWS CLIがプリインストール yumでアップデートしても最新になってない場合はpipで  Bundle Installも可能(手順は公式ドキュメントで)
  19. 19. 認証情報とリージョンの設定 1. IAMユーザの作成 2. 権限の付与 3. アクセスキーの発行 4. 認証情報とリージョンの設定
  20. 20. 1.IAMユーザの作成  最初のIAMユーザはManagement Consoleから作成  作成時にアクセスキーを発行することも、後から発行することも可能
  21. 21. 1. IAMユーザの作成
  22. 22. 2.権限の付与  IAMユーザに権限を付与  ユーザに直接付与することもできるが、 IAMグループに権限を付与し、そのグループにユーザを参加させる方が良い  権限は管理ポリシーとインラインポリシーの2つの方法で定義可能
  23. 23. 2.権限の付与(管理ポリシーの場合)
  24. 24. 2.権限の付与(管理ポリシーの場合)
  25. 25. 2.権限の付与(管理ポリシーの場合)
  26. 26. 3.アクセスキーの発行  各ユーザ毎に発行することができる  ユーザあたり2つまで  削除する以外に、一時的に「無効化」することも可能(後で有効化できる)  最後の利用日時も確認できる
  27. 27. 3.アクセスキーの発行
  28. 28. 3.アクセスキーの発行
  29. 29. 3.アクセスキーの発行
  30. 30. 4.認証情報とリージョンの設定  aws configureコマンドで設定可能  ウィザード形式で設定を入力  設定ファイルを直接編集することも可能 ~/.aws/credentials:認証情報 ~/.aws/config:デフォルトリーション、アウトプットの形式など  認証情報はプロファイルとして複数保持することができる コマンド設定時や実行時にプロファイルを指定することで認証情報の切り替えるが可能 --profile “プロファイル名”
  31. 31. 4.認証情報とリージョンの設定  コマンド  結果 > aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
  32. 32. 4.認証情報とリージョンの設定  コマンド  結果 > aws configure list Name Value Type Location ---- ----- ---- -------- profile <not set> None None access_key ****************RDPA iam-role secret_key ****************9GA8 iam-role region ap-northeast-1 env AWS_DEFAULT_REGION
  33. 33. 【参考】assume role  IAMロールに設定された権限を持ったクレデンシャル(認証情報)を 発行する機能  STS(Security Token Service)  アクセスキー/シークレット/セッショントークンが発行される  認証情報には有効期限がある  予め信頼関係を設定された対象にのみ、認証情報を発行させることができる  セキュアなシステムを構成するために欠かせない
  34. 34. 【参考】assume role ?  インスタンスプロファイルを設定したEC2インスタンスでは、 認証情報をメタデータとして自動取得
  35. 35. Demo 「JAWS-UG AWS CLI カンファレンス 2016 ミニハンズオン」をちょっとだけ。 http://qiita.com/domokun70cm/items/d3ef69dcf9ddcdbd093c
  36. 36. アプリケーション アプリケーションバージョン Ver. 1 環境 設定 EC2 ELB AS SNS やってみること
  37. 37. Tips on Linux / Mac On Linux / Mac
  38. 38. Tips  手順を再利用しやすくしよう  変数展開  ヒアドキュメント  JSONを手軽に扱おう  JSONのクエリ(--queryオプション/jp.py)  JSONファイルの検証(jsonlint)
  39. 39. 変数展開  手順を再利用しやすくするため、パラメータ部分を変数に  コマンド実行時に展開
  40. 40. 変数展開  利用例 > EB_APP_NAME="AWS CLI Conf Elastic Beanstalk Application 20160718" > aws elasticbeanstalk describe-applications ¥ --application-names "${EB_APP_NAME}"
  41. 41. ヒアドキュメント  JSONなどのテキストを生成するのに便利  パラメータは変数化して再利用しやすく  AWS CLIではパラメタとしてJSONファイルを渡すことが多いので、 覚えておくと便利
  42. 42. ヒアドキュメント  利用例  [JAWS-UG CLI] Amazon KMS 入門 (1) カスタマーマスターキーの作成 http://qiita.com/domokun70cm/items/2606cf7cf3e84f64f2ab#%E3%83%9D%E3%83%AA% E3%82%B7%E3%83%BC%E3%81%AE%E7%94%9F%E6%88%90
  43. 43. --queryオプション  --queryでレスポンスから必要な情報だけを抽出できる  JMESPath:クエリ言語  パース、フィルタ、整形など  実行結果のレスポンスがJSONの場合が多いため、利用は不可避
  44. 44. --queryオプション  利用例(オプションなし) > aws elasticbeanstalk create-application ¥ --application-name "${EB_APP_NAME}" { "Application": { "ApplicationName": "AWS CLI Conf Elastic Beanstalk Application", "ConfigurationTemplates": [], "DateUpdated": "2016-06-25T09:10:37.175Z", "DateCreated": "2016-06-25T09:10:37.175Z" } }
  45. 45. --queryオプション  利用例(オプションあり) > aws elasticbeanstalk create-application ¥ --application-name “${EB_APP_NAME}” ¥ --query Application.DateCreated " 2016-06-25T09:10:37.175Z "
  46. 46. jp.py  レスポンスを一旦ファイルに出力した後にパースしたい場合に便利  クエリの書き方は--queryと同様  AWS CLIに同梱  jqの代替
  47. 47. jp.py > aws iam create-access-key ¥ --user-name ${ADMIN_NAME} ¥ > ${ADMIN_NAME}.json ¥ && cat ${ADMIN_NAME}.json { "AccessKey": { "UserName": "jawsug-cli-admin", "Status": "Active", "CreateDate": "2016-08-06T05:55:49.222Z", "SecretAccessKey": "****************************************", "AccessKeyId": "********************" } }
  48. 48. jp.py > ADMIN_ACCESS_KEY=$( ¥ cat ${ADMIN_NAME}.json ¥ | jp.py 'AccessKey.AccessKeyId' ¥ | sed 's/"//g') ¥ && echo ${ADMIN_ACCESS_KEY} { "AccessKey": { "UserName": "jawsug-cli-admin", "Status": "Active", "CreateDate": "2016-08-06T05:55:49.222Z", "SecretAccessKey": "****************************************", "AccessKeyId": "********************" } }
  49. 49. jsonlint  JSONファイルの検証を行ってくれるツール  壊れている部分を指示してくれる  長いJSONファイルは人間がチェックするものではない!
  50. 50. jsonlint  インストール(Amazon Linux等の場合) > sudo yum install npm --enablerepo=epel –y > sudo npm install -g jsonlint
  51. 51. jsonlint  利用例 > jsonlint -q test.json
  52. 52. jsonlint  注意点  JSON形式になっているかは検証してくれますが、 パラメータなど中身の妥当性(idが存在するかなど)までは検証しません。
  53. 53. まとめ
  54. 54. CLIはいいぞ  オペレーションをより手堅く  ルーチンワークにかける時間を圧縮  AWSに対する理解も深まる
  55. 55. おしまい 楽するためにがんばろう
  56. 56. 参考資料  AWS Black Belt Tech シリーズ 2015 AWS CLI & AWS Tools for Windows Powershell  http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-2015-aws- cloudtrail-aws-sdk-for-powershell  [JAWS-UG CLI] 総合案内  http://qiita.com/tcsh/items/14c3278f69ab073afe0f  npm  https://www.npmjs.com/

×