AWS Solution Architect Associate 試験対策 ch6

AWS勉強メモ

出典: 


AWSにおける運用の考え方

AWSにおける運用の考え方

  • コードによるオペレーション実行

    • ミス減る
    • 再利用可能
  • 定期的に、小規模で、元に戻すことができる変更を行う

    • 構築して終わりではない
    • 定期的な更新を行う前提で設計せよ

      • コンポーネントは疎結合にし、替えがきくように
      • 小さな単位で変更できるように
  • 運用手順を見直す

    • システムの進化に見合った運用手順を確保して運用の品質向上・維持
  • 障害発生を想定する

    • 障害発生時の影響を正確に把握
    • 対応手順もテストする

      • 対応手順が正しいことの確認
      • 運用チームが障害対応の内容を正しく理解していることの確認
  • 運用の失敗をもとに改善する

    • 運用手順の改善
    • 経験から学びチームで共有

作業の自動化

コードによるインフラストラクチャ構成管理

  • 従来のインフラ構築の課題点

    • ミスが発生しうる
    • インフラストラクチャ構築手順のバージョン管理が必要(煩雑)

      • 設計書
      • サーバーのパラメータ
  • アプリケーションのデプロイもそうだった
  • 今ではデプロイ作業の自動化により改善
  • IaC: Infrastructure as Code

    • インフラでもアプリケーションと同じことをしようよ
    • コード管理
    • 作業自動化

CloudFormationのコード管理

  • CloudFormation

    • AWSにおけるIaCの実現
  • テンプレート

    • Codeに相当するもの
    • フォーマット

      • JSON
      • YAML
  • スタック

    • テンプレートにより自動的にプロビジョニングされるリソースの集合

CloudFormationの設定

  • 主な設定項目
項目名 説明
AWSTemplateFormatVersion テンプレートのバージョン
Description テンプレートの説明
Parameters カスタム値の定義 ({"Ref": ... }で参照可能)
Resources AWSリソースのプロビジョニング設定の連想配列
Outputs スタック作成後に出力する項目の指定(SNSTopicとか)
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Description" : "AWS CloudFormation Sample Template AutoScalingMultiAZWithNotifications: Create a multi-az, load balanced and Auto Scaled sample web site running on an Apache Web Serever. The application is configured to span all Availability Zones in the region and is Auto-Scaled based on the CPU utilization of the web servers. Notifications will be sent to the operator email address on scaling events. The instances are load balanced with a simple health check against the default web page. **WARNING** This template creates one or more Amazon EC2 instances and an Application Load Balancer. You will be billed for the AWS resources used if you create a stack from this template.",
  "Parameters" : {
    "VpcId" : {
      "Type" : "AWS::EC2::VPC::Id",
      "Description" : "VpcId of your existing Virtual Private Cloud (VPC)",
      "ConstraintDescription" : "must be the VPC Id of an existing Virtual Private Cloud."
    },

...

"Resources" : {
    "NotificationTopic": {
      "Type": "AWS::SNS::Topic",
      "Properties": {
        "Subscription": [ { "Endpoint": { "Ref": "OperatorEMail" }, "Protocol": "email" } ]
      }
    },

    "WebServerGroup" : {

...

"Outputs" : {
    "URL" : {
      "Description" : "The URL of the website",
      "Value" :  { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [
          "ApplicationLoadBalancer", "DNSName" ]}]]}
    }
  }
}

自動化できるサービスとその機能

  • CodeCommit

    • Gitベースのリポジトリを利用したソース管理
  • CodePipeline

    • アプリケーションのビルド、テスト、デプロイまでの処理手順を定義し、実行できる
  • CodeDeploy

    • アプリケーションのデプロイ
  • Elastic Beanstalk

    • 実行環境の管理、アプリケーションやサービスのデプロイ
  • OpsWorks

    • サーパー構築作業の自動化

      • ChefとかPuppetとか使える
  • CloudFormation

    • AWS内のすべてのインフラストラクチャリソースを自動でプロビジョニング

運用に関するその他のサービス

モニタリング

  • CloudWatch

サポート

  • サービスの稼働状況監視

    • AWS Service Health Dashboard

      • AWSが提供しているすべてのサービスの稼働状況の監視
    • AWS Personal Health Dashboard

      • ユーザ個人に関係のある情報のみ

        • サービスの状況
        • リソースのメンテナンス情報
        • 障害情報
  • AWSサポート

    • AWSのエンジニアがユーザーをサポート

      • 技術情報の問い合わせ

        • 最新サービスや技術のキャッチアップ
      • 障害解決サポート
    • サポートプラン

      • ベーシック
      • 開発者
      • ビジネス
      • エンタープライズ
    • サポートプランにより、問い合わせ方法や対応する緊急度がかわる