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運用自動化への第一歩 

2,312 views

Published on

トレノケート主催無料セミナー資料「AWS運用自動化への第一歩」

Published in: Software
  • Be the first to comment

AWS運用自動化への第一歩 

  1. 1. AWS運用自動化への第一歩 トレノケート株式会社 無料セミナー 運用は、オペレーション(操作)からコードへ
  2. 2. $ whoami  三浦 美緒 • トレノケート株式会社 技術教育エンジニア(インストラクター) • AWS認定インストラクター (AWSの認定トレーニングカリキュラムを実施できるのは、 AWSから認定を受けたインストラクターだけなんですよ!) • 日経BP社「日経クラウドファースト」誌上にて 「本格導入前に習得する AWS基礎演習」好評連載中 • 前職は外資系UNIXベンダーにSEとして勤務 金融系顧客企業のデータセンターに常駐し、オープン系システムの 運用管理システム提案・設計・導入、周辺ツールの開発に従事  好きなAWSのサービス:Amazon CloudWatch  好きなチーム:FC東京 2© 2018 Trainocate Japan, Ltd. All rights reserved.
  3. 3. クラウドを、仮想データセンターとして運用していませんか? クラウドにしたのに運用コストや工数が減らない…… オンプレミスと同じ運用をしていませんか? クラウドに適した運用方法を修得して、 TCO削減を目指しましょう 3© 2018 Trainocate Japan, Ltd. All rights reserved.
  4. 4. 廃棄 (再構築) 運用・ 保守 開発・ 構築 設計 分析・ 企画 運用の自動化・省力化が、TCO削減のポイント 4© 2018 Trainocate Japan, Ltd. All rights reserved. 構築 テスト デプロイ監視 保守 保護 システムライフサイクルのフェーズで 最も長い期間が【運用・保守】です AWSには、運用業務を自動化する 機能やサービスがあります
  5. 5. ITインフラの運用を、ドキュメントからコードへ 5© 2018 Trainocate Japan, Ltd. All rights reserved. 手順書 コード テンプレート仕様書 Infrastructure as code!  AWSの頻回な機能Updateに ドキュメントを対応させるのが困難  「AWSに詳しい人」に任せがちで 属人化しやすい  オペレーションミスで人的障害も  AWS CLIコマンドをスクリプト化し 再利用性の高い操作を自動化  CloudWatchの監視とアラートで 必要なとき自動で復旧、スケーリング  CloudFormationで自動デプロイ
  6. 6. 本日のセミナー目標 6© 2018 Trainocate Japan, Ltd. All rights reserved. ✓ AWS CLIの使いどころを知る ✓ AWS CLIのセットアップ(簡単!)方法を知る ✓ AWS CLIの基本の使い方を知る ✓ 「帰ったら自分でも試してみよう」とやる気になる ✓ トレノケートのAWS認定トレーニング受講を検討し始める ※【お断り】 ・本資料のコマンド実行例はbashの環境で記載しています。 ・本資料の内容は2018年3月1日時点の情報に基づきます。
  7. 7. AWS CLIについて 7© 2018 Trainocate Japan, Ltd. All rights reserved. AWS CLI
  8. 8. What’s AWS CLI?  AWSの各種サービス、リソースを操作できる管理インターフェース  インターネット経由でAWSへアクセス  指定したアカウントの権限内でAWSリソースを操作  Pythonベースのプログラム 8© 2018 Trainocate Japan, Ltd. All rights reserved. AWS cloud AWS Management Console internet できることは同じ! (むしろCLIの方が多い!) Python ベースの CLI Web API (HTTPS) ・AWS VPC サブネットを作成 ・Amazon EC2 インスタンスを起動 ・Amazon S3 バケットを作成 ・Amazon RDS スナップショット作成 etc… ブラウザ ベースの Web UI $ aws s3 mb s3://mynewbacket $ aws ec2 describe-instancesAWS CLI
  9. 9. AWS CLIの利用準備 9© 2018 Trainocate Japan, Ltd. All rights reserved. AWS CLI
  10. 10. Setup  AWS CLIのインストール要件 • 必須:Python 2 (2.6.5+) or Python 3 (3.3+) • 推奨:pip 10© 2018 Trainocate Japan, Ltd. All rights reserved. Python AWS CLI Windows Mac OS Linux Command Prompt / Powershell Shell (bash/zsh etc...) AWS CLIのインストールは… PIP推奨(最新版が提供される) 各OSのパッケージツールも利用可 Linux yumやapt-get Windows MSIパッケージ インターネットに 接続できるPC $ python --version $ yum –y install python $ pip --version $ yum –y install python-pip $ pip install awscli --upgrade --user
  11. 11. Credentials (IAM User)  使用する認証情報がWebマネジメントコンソールとは異なる • マネジメントコンソール ユーザー名/パスワード • AWS CLI アクセスキーID/シークレットアクセスキー • 上記はいずれも【IAMユーザー】の認証  確認・作成方法 • [IAM]→[ユーザー]→[認証情報] 【アクセスキーID】【シークレットアクレスキー】 © 2018 Trainocate Japan, Ltd. All rights reserved. AWS cloud AWS CLI AWS Management Console internet ・Amazon EC2 インスタンスを起動 ・Amazon S3 バケットを作成 ・Amazon RDS スナップショット作成 etc… アクセスキーID シークレットアクセスキー ユーザー名 パスワード IAM permissions できること、できないことは IAMユーザーの権限に依存 認証! HTTPS
  12. 12. Credentials (IAM Role)  コマンド実行用EC2インスタンスを設置 • OSレベルで認証(SSH鍵認証/RDPユーザー認証) • 【セキュリティグループ】や【NACL】等ネットワークセキュリティレイヤー を活用 ⇒ 送信元IPアドレスを限定できる • 【IAMロール】を使用して権限を認可 © 2018 Trainocate Japan, Ltd. All rights reserved. AWS CLI internet ・Amazon EC2 インスタンスを起動 ・Amazon S3 バケットを作成 ・Amazon RDS スナップショット作成 etc… ユーザー名/パスワード 秘密鍵/公開鍵 IAM permissions できること、できないことは IAMロールの権限に依存 role SSH RDP 認可! 認証! セキュリティグループ (ファイアウォール)で保護
  13. 13. Configure  aws configure • 認証情報、デフォルトのリージョン、出力フォーマットを指定する • 設定ファイルに保存され、次回以降コマンド実行時に参照される © 2018 Trainocate Japan, Ltd. All rights reserved. $ aws configure AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXX AWS Secret Access Key [None]:XXXXXXXXXXXXXXXXXXXXXXXXX Default region name [None]: ap-northeast-1 Default output format [None]: $ cat .aws/config [default] output = json aws_access_key_id = XXXXXXXXXXXXXXXXXX aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXX region = ap-northeast-1 $ ◀ IAMロール使用時は不要 ◀ 同上 ▲ ファイルシステム上に認証情報が保存されるので扱いに注意 IAMロールなら認証情報を保存しておく必要がない。 ◀ 省略時デフォルトはJSON
  14. 14. Tools  aws_completer • とにかく長いAWS CLIのサブコマンドを入力補完してくれるツール • パッケージマネジャーがAWS CLIと同時にインストールしてくれる  (参考)aws-shell • サブコマンドやリソースIDの補完、候補のサジェストなど 高機能な専用シェル • 開発者向けのプレビュー • pipでインストール可能 14© 2018 Trainocate Japan, Ltd. All rights reserved. $ which aws_completer /usr/bin/aws_completer $ complete –C ‘/usr/bin/aws_completer’ aws $ aws ec2 desc[Tab] ◀ OSによりインストール先のパスが異なるので確認
  15. 15. 準備完了! 15© 2018 Trainocate Japan, Ltd. All rights reserved. AWS CLI
  16. 16. Usage $ aws service subcommand [--option parameter] ... 16© 2018 Trainocate Japan, Ltd. All rights reserved. $ aws ec2 describe-instances { "Reservations": [ { "OwnerId": “nnnnnnnnnnnn", "Instances": [ { "PrivateDnsName": "ip-172-31-22-162.ap-northeast-1.compute.internal", "RootDeviceType": "ebs", "EnaSupport": true, "Tags": [ { "Value": "Bastion", "Key": "Name" }, ], "Hypervisor": "xen", "State": { "Code": 80, "Name": "stopped" }, (以下略) ▲ 実行結果は標準出力へ表示される。JSON形式がデフォルト。
  17. 17. Help $ aws service help $ aws service subcommand help 17© 2018 Trainocate Japan, Ltd. All rights reserved. $ aws ec2 describe-instances help DESCRIBE-INSTANCES() DESCRIBE-INSTANCES() NAME describe-instances - DESCRIPTION The describe-instances operation returns information about instances that you own. If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an invalid instance ID, a fault is returned. If you specify an instance that you do not own, it will not be included in the returned results. Recently terminated instances might appear in the returned results. This interval is usually less than one hour. SYNOPSIS : (以下略) ▲ サービス、サブコマンドについてヘルプが用意されている。
  18. 18. Useful Options  --query • キーを指定して、表示や操作を絞り込む • ex) 実行結果のうちインスタンスIDだけ出力する  --filters • 値を指定して、表示や操作を絞り込む • ex) ステータスが‘running’のインスタンスをだけ操作する 18© 2018 Trainocate Japan, Ltd. All rights reserved. $ aws ec2 describe-instances ¥ --query ‘Reservations[*].Instances[*].InstanceId’ $ aws ec2 describe-instances ¥ --filters ‘Name=instance-state-name,Values=stopped’ ▲ JSONの出力と異なるので注意。 ▲ JSONフォーマットの各キーを、‘.’(ピリオド)で区切って記述する。[n]はデータ番号を指定。[*]は全件。
  19. 19. 【実行例】Amazon EC2 インスタンスを新規に起動したい:準備  キーペアを用意する  セキュリティグループを用意する • a • I • c • d  AMIのIDを確認する (最新のAmazon Linux AMIを検索する例) 19© 2018 Trainocate Japan, Ltd. All rights reserved. $ aws ec2 create-key-pair --key-name mykey ¥ --query ‘KeyMaterial’ --output text > mykey.pem $ aws ec2 create-security-group ¥ --group-name EnableHTTP --description “Allow TCP80” $ aws ec2 authorize-security-group-ingress ¥ --group-name EnableHTTP ¥ --protocol tcp --port 80 --cidr 0.0.0.0/0 $ aws ec2 describe-images --owner amazon ¥ --filters 'Name=name,Values=amzn-ami-hvm-*' ¥ 'Name=root-device-type,Values=ebs' ¥ --query 'Images[].[Name,ImageId]’ ¥ --output text | sort | tail -1 | cut -f2 ◀ リージョンを指定しない場合は configureで設定したデフォルト
  20. 20. 【実行例】Amazon EC2 インスタンスを起動したい:起動  EC2インスタンスを起動する  起動したEC2インスタンスの状態を確認する  SSHでアクセスする 20© 2018 Trainocate Japan, Ltd. All rights reserved. $ aws ec2 describe-instances --instance-ids InstanceId $ aws ec2 run-instances --image-id $AMIID ¥ --instance-type t2.micro --count 1 ¥ --security-groups EnableHTTP --key-name mykey ¥ --query ‘Reservations[0].Instances[0].InstanceId’ ▲ 実行結果からインスタンスIDだけ出力 $ ssh –i mykey.pem ec2-user@¥ `aws ec2 describe-instances --instance-ids InstanceId ¥ --query ‘Reservations[0].Instances[0].PublicDnsName’ ¥ --output text`
  21. 21. 【実行例】Amazon EC2 インスタンスを終了(削除)したい  EC2インスタンスを終了する  終了したEC2インスタンスの状態を確認する 21© 2018 Trainocate Japan, Ltd. All rights reserved. $ aws ec2 describe-instances --instance-ids InstanceId --query ‘Reservations[0].Instances[0].State’ { “Code”: 48, “Name”: “terminated” } $ $ aws ec2 terminate-instances --instance-ids InstanceID
  22. 22. 【実行例】S3にファイルをアップロード/ダウンロード/削除したい  S3バケットの内容をリストする  S3バケットにファイルをアップロードする  S3バケットからファイルをダウンロードする  S3バケットのファイルを削除する 22© 2018 Trainocate Japan, Ltd. All rights reserved. $ aws s3 ls s3://BucketName $ aws s3 cp LocalFileName s3://NewBucketName $ aws s3 cp s3://NewBucketName LocalFileName $ aws s3 rm s3://NewBucketName/ObjectKeyName
  23. 23. AWS CLI利用シナリオ 23© 2018 Trainocate Japan, Ltd. All rights reserved. AWS CLI
  24. 24. 【Case1】開発環境のインスタンスを毎日定時に起動停止したい  EC2インスタンスは、使わないときこまめに停止 ⇒コスト削減  複数インスタンスを論理的にグループ化して 管理するには【タグ】を使用 24© 2018 Trainocate Japan, Ltd. All rights reserved. $ DEVINSTANCEID=`aws ec2 describe-instances ¥ --filters ‘Name=tag:Environment,Values=Dev’ ¥ --query ‘Reservations[*].Instances[*].InstanceId’ ¥ --output text` $ for i in $DEVINSTANCEID > do > aws ec2 stop-instances –-instance-ids $i > done ◀ 対象をタグで絞り込み ◀ 変数に実行結果を代入 ◀ 出力をシンプルにして加工しやすく
  25. 25. 【Case2】バックアップデータを毎週Amazon S3へアップロードしたい  バックアップやログデータをS3/Glacierへ保管 ⇒オンプレミス環境のストレージ容量削減  オブジェクト名に日付を付与して重複回避  S3バケットのライフサイクル管理で アーカイブ⇒削除まで自動化 25© 2018 Trainocate Japan, Ltd. All rights reserved. $ aws s3 cp /var/log/messages ¥ s3://BucketName/backup/messages.`date +%y%m%d` $ aws s3 ls s3://BucketName/backup/ 2018-03-13 00:00:01 48228 messages.180313 2018-03-20 00:00:01 66319 messages.180320 :
  26. 26. 【Case2+】Amazon S3のデータを定期的にアーカイブ/削除したい 26© 2018 Trainocate Japan, Ltd. All rights reserved. $ cat lifecycle.json { "Rules": [ { "ID": "BackupLifecycleRule", "Status": "Enabled", "Prefix": "backup/", "Transition": { "Days": 180, "StorageClass": "GLACIER" }, "Expiration": { "Days": 1000 } } ] } $ aws s3api put-bucket-lifecycle -–bucket BucketName ¥ --lifecycle-configuration file://lifecycle.json ◀ 180日後にGlacierへ移行 ◀ 1000日後に破棄 ◀ JSONフォーマットでルールをテンプレート化しておけば標準化しやすい
  27. 27. まとめ 27© 2018 Trainocate Japan, Ltd. All rights reserved. AWS CLI
  28. 28. AWS CLI まとめ 28© 2018 Trainocate Japan, Ltd. All rights reserved. ✓ WindowsやMac OS、LinuxなどのクライアントPCから インターネット経由でAWSリソースを操作できる ✓ シェルスクリプトやPowerShell、バッチなどを用いて 【繰り返し】の作業を【自動化】できる ✓ AWS CLIは、Pythonベースのプログラムである ✓ データの入出力には主にJSONフォーマットを使用する ✓ マネジメントコンソール(Webアプリケーション)のUIは 逐次Updateされるが、API(コマンド)は比較的変更が少ない うまく活用してAWS環境のシステム運用に活かしてください
  29. 29. AWS認定トレーニングのご紹介 29© 2018 Trainocate Japan, Ltd. All rights reserved.
  30. 30. 『Systems Operations on AWS』で運用自動化の基礎を修得 30© 2018 Trainocate Japan, Ltd. All rights reserved. Day1 Day2 Day3 システム運用について (IAM/AWS CLI) コンピューティング (EC2) ネットワーキング (VPC) ストレージとアーカイブ (EBS/S3/Glacier) 監視 (CloudWatch) リソース管理 (Tag) 構成管理 (AMI) スケーラビリティ (AutoScaling) 自動デプロイ (CloudFormation) Lab1 Lab2 Lab3 Lab4 Lab5 Lab6 Lab7 AWS CLIの基本操作と、AWSにおけるイン フラの基礎となるEC2とVPCについて、機能や リソースの詳細を学習します。 運用に欠かせないシステムとデータのバックアッ プ、自動化の肝となる監視、AWSリソースを 分類し管理するタグについて学びます。 システムのベースとなるAMIの設計、AMIを展 開するAutoScaling、CloudFormationに よるシステム全体のデプロイを修得します。 Lab1 Lab2 Lab3 Lab4 Lab5 Lab6 Lab7 EC2インスタンスを作成する AWS CLIを使用してEC2インスタンスを作成します VPCを構成する VPCを構成し、各コンポーネントの役割を確認します AWSでストレージを管理する CLIでEBSのスナップショット取得、S3へのファイルコピーなどを行います CloudWatchでモニタリングする ログ監視やカスタムメトリクス、アラームからの自動停止を設定します タグを付けてリソースを管理する CLIで指定したタグを持つリソースを抽出し、一括停止など操作します AutoScalingを利用する CLIでAMIを作成し、AutoScalingを構成して自動起動させます CloudFormationを使って CloudFormationのテンプレート編集、スタックを作成し、展開します デプロイを自動化する ほとんどの演習で、EC2インスタンスのOSはWindowsまたはLinuxを選択できます。
  31. 31. Systems Operations on AWS 31© 2018 Trainocate Japan, Ltd. All rights reserved. 日数 3日 形式 講義+実機演習 概要 システム管理者または開発運用 (DevOps) 担当者向けに、自動化や繰り返しが可能なネットワークやシステムのデプロイを AWS プラット フォームで作成する方法について学習します。このコースでは、システム運用および構成管理やデプロイに関係する AWS の特定の機能やツー ルについて取り上げます。 学習目標  AWS の標準インフラストラクチャ機能をコマンドラインから使用する  自動化や繰り返しが可能な方式でAWS リソースをデプロイする  有効な仮想プライベートネットワークを一から構築する  Amazon EC2 インスタンスをコマンドラインでデプロイしたときの、 一般的な問題をトラブルシューティングする  Amazon EC2 インスタンスや AWS の他のサービスの状態をモニ タリングする  ユーザー ID、AWS のアクセス権限、セキュリティを管理する  タグ付けやTrusted Advisorなどで、リソース消費量を管理する  再利用可能な Amazon EC2 インスタンスを作成するために最 適な戦略を選択また実装する  需要に応じて拡大/縮小するシステムを使って、ELB と Amazon EC2 のインスタンスセットを設定する  ベーシックな AWS CloudFormation スタックの定義を編集し、 トラブルシューティングを行う 対象者  システム管理者  インフラ構築・運用・管理担当者  ソフトウェア開発者、特に開発運用 (DevOps) 担当者  実機操作を多く行って、AWS利用の経験を積みたい方 前提 知識  「AWS Technical Essentials 1 および 2」を修了 または、同等の知識がある方(必須)  ソフトウェア開発またはシステム管理の経験  コマンドラインでオペレーティングシステムを管理した経 験(シェルスクリプトやPowerShellなど)  ネットワーキングプロトコル(TCP/IP、HTTP)に関す る基本的な知識 学習内容 1. System Operations on AWS の概要 2. クラウドにおけるネットワーキング 3. クラウドにおけるコンピューティング 4. クラウドにおけるストレージとアーカイブ 5. クラウドにおけるモニタリング 6. クラウドにおけるリソース消費量の管理 7. クラウドにおける構成管理 8. クラウドにおけるスケーラブルなデプロイの作成 9. 自動化され、繰り返し可能なデプロイの作成 ポイント 「AWS認定SysOpsアドミニストレーター – アソシエイト」資格の出題範囲に対応したコースです。 試験バウチャ、模擬試験バウチャも合わせてお申し込みになれます。
  32. 32. AWS運用エンジニア育成 推奨受講コース 32© 2018 Trainocate Japan, Ltd. All rights reserved. AWS システム管理 (Linux) システム管理 (Windows) Bash シェルプログラミング AWS Technical Essentials 2 AWS Security Fundamentals Windows システム管理基礎(後編) PowerShell入門 Optional ITインフラ運用実践1 クラウドアーキテクト・ ファーストステップ Linux システム管理入門 Systems Operations on AWS AWS Technical Essentials 1 Windows システム管理基礎(前編) Python プログラミング入門 Linux オペレーション入門 DevOps Engineering on AWS ※OSの管理経験が不足する場合は、いずれかの受講をご検討ください。

×