おっさん社内SEエンジニアの勉強ブログ

おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-模擬試験1回目問題と要点

今回のテーマ:模擬試験1回目問題と要点

SAA模試1回目

EBS


  • 設問ポイント
    • 200GB規模のRDB
    • 13:00~17:00がピークタイム
    • コスト効率がよいストレージ?
  • 解説

    • コスト効率のよいSSD
      • 汎用SSD
        • 200GBのRDS=小規模
        • ピーク時4時間
        • 高速アクセスなし
    • コスト効率よくないSSD
    • コスト効率:汎用SSDスループット最適化>プロビジョンIOPS
  • 設問ポイント

    • 500MiB/sのスループット
    • 継続的なログ処理
    • 処理性能とコスト効率?
  • 解説

DB


  • 設問ポイント
    • SMBを使用したデータ転送
  • 解説

  • 設問ポイント

    • Kinesisストリームを数日かけて送信
    • ストリームデータをS3へ保存するがS3にない
    • データの未送信あり
  • 解説

    • Kinesis Stream
      • できること
        • ログとデータフィードとの取り込みと処理高速化
        • リアルタイムのメトリクスとレポート作成
        • リアルタイムデータ分析
        • 複雑なストリーム処理
      • 保存期間
        • デフォルト24時間以内まで
        • 最大8760時間(365日)
  • 設問ポイント

    • バックエンド
      • 一時的にアクセス集中
      • DynamoDB
    • フロントエンド
    • 費用帯効果が高くスケーラブルな構成
  • 解説
    • スケーラブル
      • DynamoDB
        • Auto Scaling設定
        • 一時的な高負荷に対するスケーリング
      • SQS
      • スケーラブル:拡張性(scalable)

docs.aws.amazon.com

  • 設問ポイント
    • 負荷テスト実施時、CPU100%
    • 読み取り処理が思い
    • データレイヤーを最適化する方法?
  • 解説

    • リードレプリカ
      • パフォーマンスと耐久性を強化
      • DBインスタンスの容量制限を超えてスケールアウトが容易
    • Sharding
      • データベース内の複数テーブルを分割
      • リクエスト増加で単一マスタ限界時に振り分け
      • アクセス分散
  • 設問ポイント

    • ELBで統合されたログファイルを分析
    • ログファイル分析をする構成
  • 解説
    • 構成

docs.aws.amazon.com

  • 設問ポイント
    • ゲーム開発
    • ユーザー行動の解析を高速化
    • 最小待ち時間で実現
  • 解説

    • ElastiCache
      • フルマネージド型のインメモリDB
        • インメモリDB:メモリ依存に保存
      • シームレスにデプロイ/運用/スケール
        • シームレス:意識せず一体的に利用可
      • 大量データを扱うアプリ/性能改善
  • 設問ポイント

  • 解説

    • 読み取りリクエストの増加によるRDS負荷増加
    • RDSの拡張
  • 設問ポイント

    • DynamoDBを利用すべき状況
  • 解説
    • DynamoDB
      • 規模関係なく数ミリ台のパフォーマンス実現
      • KVMおよびドキュメントDB
      • メタデータ・セッションデータなど一連のストリームデータを蓄積
        • ビックデータの解析

aws.amazon.com

  • 設問ポイント
    • RedshiftをDWHで利用
    • クラスターダウンに備える
    • プライマリークラスターのダウン時すぐに利用できる
  • 解説

    • Redshift
      • 高速、シンプル、費用対効果の高いDWH
      • ノード
        • コンピューティングリソース
        • グループ化=クラスタ
      • クロスリージョンスナップショット
        • プライマリークラスターdown
          • 即座に利用できる構成を維持
        • Redshiftクラスター構成時に設定可能
      • シングルAZ配置のみサポート
  • 設問ポイント

    • S3に蓄積したデータをRedshift連携したBI利用
    • プライベートサブネットのみデータ利用に限定
  • 解説
    • Redshift
      • 拡張VPCルーティング
        • VPC内にデータを移動する制御
      • VPCエンドポント
        • S3アクセスをVPC内のみにデータを移動する制御

docs.aws.amazon.com

  • 設問ポイント
    • 大規模データの仕組みをAWSへ移行
    • 現状、数百万行のデータを列集計し定期的にレポーティング
  • 解説

    • Redshift
      • 高速でシンプルかつ費用対効果が高いDWH
      • 列指向型のデータベース
      • 列集計に優れたDWH
        • レポーティングやBIで活用
  • 設問ポイント

    • ステートレスなアプリ構築
    • セッションデータを格納するDB
  • 解説

CloudFront


  • 設問ポイント
    • ECサイト展開
    • 各地域に応じた言語表示
    • 言語区分
      • URL
        • jp
        • en
  • 解説
    • クエリ文字列パラメータ
      • キャッシュ設定
        • HTTPフィールドで言語表示の切り替え
      • サーバー情報を送るためURLの末尾につけ立つ変数

docs.aws.amazon.com

環境の自動化


  • 設問ポイント
    • 社内CI/DC
    • 自動ワークロード設定
    • Elastic Beanstalkのワークロード
      • ワークロード:実行中のSW処理によって占有される度合
  • 解説
    • Elastic Beanstalk
      • 自動的にデプロイメント詳細を処理
      • WEBアプリなどのワーカー環境構築
      • 実行時間の長いワーカープロセスのチューニング

docs.aws.amazon.com

  • 設問ポイント
  • 解説

  • 設問ポイント

    • CloudFrontを利用したグルーバル配信
    • 配信コスト削減効果
  • 解説
    • CloudFront
      • オリジンからファイル取得
      • エッジロケーションからファイル圧縮
      • 各ロケーションにおける配信コスト低減

docs.aws.amazon.com

  • 設問ポイント
    • CloudFormationテンプレート
      • VPCとサブネット構築し、NACL制限
      • パブリック内で制限なしでHTTPアウトバウンド
      • 特定IPからのFTPインバウンド
  • 解説

    • HTTPアウトバウンド許可

        NetworkACL
        Rulenumber:110
        RuleAction:allow
        Egress:true
        CidBlock:0.0.0.0
        PortRange:
            From:80
            To:80
      
    • 特定IPからのFTPインバウンド

        NetworkACL
        Rulenumber:120
        RuleAction:allow
        Egress:false
        CidBlock:特定IP
        PortRange:
            From:20
            To:20
      
    • Egress
      • true→アウトバウンド
      • false→インバウンド
  • 設問ポイント

    • ECS利用しDockerサービスを利用予定
    • Dockerイメージセットの保管先
  • 解説
    • Amazon ECR
      • ECR = Elastic Container Registry

docs.aws.amazon.com

  • 設問ポイント
    • 社内CI/CD
    • chefレシピの利用
  • 解説
    • OpsWorks
      • Chef/Puppet利用可能
      • Chef/Puppet
        • オートフォーメーションプラットフォーム
        • コードを使用し、環境の自動化

docs.aws.amazon.com

サーバレス


  • 設問ポイント
    • ECSを利用し、マイクロサービス型分散システム構築
    • マイクロサービス1とマイクロサービス2の連携
  • 解説

    • SQS
      • サービス間の後処理連携
      • フルマネージド型のメッセージキューイングサービス
      • マイクロサービス
      • 分散システム
      • サーバレス
  • 設問ポイント

    • ユーザーがファイルをS3にアップロード
    • 各ファイルDynamoDBと連携
  • 解説

    • Lambda関数作成
      • ファイルの名前をDynamoDBレコード追加
    • S3バケットのイベント機能有効化
      • Lambda関数と連携
  • 設問ポイント

    • マイクロサービス設計でアプリケーション構築
    • コンポーネントは分離させ連携可
  • 解説

  • 設問ポイント

    • 会員登録のWEBサイト構築
    • SMSにメッセージの自動配信
  • 解説

    • SNS
      • SMS対応デバイスにテキストメッセージ送信
  • 設問ポイント

    • SNSとSQSの違い
  • 解説
    • SQS
      • キューをポーリングするメッセージシステム
      • ポーリング型配信
    • SNS
      • トピックに関するメッセージ送信
      • プッシュ型配信

Rouote53


  • 設問ポイント
    • EC2、CLB、Auto-Scaling、Route53構成
    • Blue/Greenデプロイメント=異なる2つのアプリ
    • ルーティングポリシーは?
  • 解説

docs.aws.amazon.com

VPC


  • 設問ポイント
    • デフォルトのACL設定でサブネット構築
    • Webサーバーはパブリックサブネット
    • DBサーバーはプライベートサブネット
    • DDoS攻撃?が変なIPからありその対策
  • 解説

    • NACL
      • 1つ以上のサブネットに対しインバウンド/アウトバウンドを制御するFW
      • 特定IPに対し拒否設定を登録
      • サブネットの保護を実施
  • 設問ポイント

  • 解説

  • 設問ポイント

    • ELB、複数AZにEC2設置
    • 利用急増
      • Auto-Scaling
    • インターネット接続
  • 解説

    • NATインスタンスからNATGWへ移行
      • NATGWをパブリックサブネットへ設置
      • プライベートサブネット側のルートテーブルにルート追加
  • 設問ポイント

    • 2つのAWSアカウント利用
    • VPC間で連携要件方法?
  • 解説

    • VPCピアリング
      • VPC間接続はVPCピアリングを利用
      • VPC間での相互通信が可能
    • TransitGateway
      • 多数のAWSアカウントやVPC間通信を行う際に利用
  • 設問ポイント

    • パブリックサブネットにEC2
    • インターネット接続可能で、自由にWEBサイトアクセス
    • ルーティングテーブルは何?
  • 解説
    • ルートテーブルの設定
      • 自由にどこからでも接続可
      • インターネット接続可能
        • Target:InternetGW

docs.aws.amazon.com

  • 設問ポイント
    • VPC設定しパブリックサブネット1つ利用
    • 単一VPC内でのCIDR範囲
  • 解説
    • AWS VPC
      • CIDR範囲
        • /16~/28

S3


https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-prefixes.html:embed;cite

  • 設問ポイント
    • 高可用性
    • フォールトトレランス
    • ファイルデータ格納でS3利用
    • AZ損失時でもアクセス可能な状態?
  • 解説
    • Amazon S3の可用性
      • S3はデフォルトで高可用性なので不要
      • フォールトトレランス
        • 構成要素の一部故障や停止
        • 予備の系統に切り替える
  • 設問ポイント
    • BCP対策
    • iSCSIを介してオンプレとの接続
  • 解説

  • 設問ポイント

    • EC2からS3へのアクセス
    • インターネットを通過しない
  • 解説
    • VPCエンドポイント
      • インターネットを通過せずアクセス可
    • cf)インターネットを通過するアクセス

docs.aws.amazon.com

  • 設問ポイント
    • 動画データを大量保存
    • アップロードした動画を利用可能
    • 限られた期限内のアクセス許可
  • 解説
    • Amazon S3のアクセス権限
      • デフォルト
        • オブジェクト所有者のみしかアクセス不可
      • 事前署名付きURLを利用
        • 自身のセキュリティ資格を使用しアクセス可
        • 他ユーザーに対しアクセス許可を提供

docs.aws.amazon.com

  • 設問ポイント
    • 動画保存
    • データ量削減
      • 2か月以上は削除
    • 保存後は変更しない
  • 解説
    • S3 Standard IA
      • アクセス頻度低い
        • IA = Infrequency Access
        • 低コスト
      • 種別
        • 標準IA
          • 再作成できないデータ保管
        • One-zone
          • AZ障害発生時にデータを再作成可能
      • ライフサイクルポリシー
        • 数か月以上のデータ削除

docs.aws.amazon.com

  • 設問ポイント
    • バージョンによってデータ管理
    • 複数EC2インスタンスからストレージにアクセス
    • 頻繁に利用可能
  • 解説

    • S3
      • データ共有
      • バージョニング可能
      • 頻繁に利用
  • 設問ポイント

    • 特定ファイル登録
    • データ確認はレコード生成後2か月は逐次確認
    • 以降のデータ確認は不要
  • 解説

    • S3のライフサイクルポリシー
      • オブジェクトのライフタイムを定義
      • 移動、アーカイブ、削除可
  • 設問ポイント

    • データストレージをクラウド移行
    • データ送信後は変更はほぼなし
    • 例外で特定ファイルを時期不定で更新がある
    • 使用するストレージクラスは?
  • 解説

    • Standard-IA
      • 低頻度アクセス時に利用
      • 重要データを保管
  • 設問ポイント

    • 写真共有サイトを運営
    • 他WEBサイトから共有サイトリンク
    • 広告料金がもらえない
    • 画像リンクの問題解消は?
  • 解説
    • 有効期限付きの事前署名付きURL
      • 利用が終わったら削除
      • リンクからの閲覧拒否

docs.aws.amazon.com

  • 設問ポイント
    • ストレージ容量限界
    • S3を利用し大量データ保管
    • ユーザーがアクセスしデータ保管するため間違って削除があり得る
    • データ保護向けの管理は?
  • 解説
    • S3バケットのバージョンニング有効化
      • 削除ファイルを復元
      • 単一ファイルの複数バージョン保管

docs.aws.amazon.com

EC2


  • 設問ポイント
    • 開発者が本番向けEC2を削除するかも?
    • 対応方法は?
  • 解説

    • EC2の操作制限
      • AWSアカウント分割
        • 開発向けの環境のみ管理
        • 開発用リソースしかアクセスできない
      • タグ付け
        • 専用タグ付与
        • タグベースのIAMポリシー制限
  • 設問ポイント

    • 大量データを定期的に処理
    • 費用効果が高いもの
    • 高負荷時はAuto-Scaling利用し拡張
  • 解説

    • スポットインスタンス
      • 一時的な高負荷時のAuto-Scalingで使用
      • 費用面で格安
  • 設問ポイント

    • 常に6つのEC2が3つのAZで稼働
    • 単一AZが利用不可でも100%のフォールトトレランスが必要
      • フォールトトレランス:障害があってもシステムは稼働
  • 解説

    • フォールトトレランスの条件
      • 1つのAZが落ちても6つのEC2が稼働
      • 各AZに3つのEC2
      • 2つのAZに6つのEC2
  • 設問ポイント

    • Linux AMIから起動した3つのWebサーバ
    • Auto-Scalingが同じAMIで利用
    • パブリックサブネットで稼働
    • 4つ目起動時インターネット接続不可
  • 解説

    • インスタンス起動時の動作
      • パブリックアドレスが付与されないときもあり
      • パブリックIPの割り当てがオフ
  • 設問ポイント

    • Kinesis使用
      • データフィールド取り込み
      • EMRでフィールド分析
        • EMR = Elastic Map Reduce
    • カスタムMySQLへ保存
      • 3つのボリューム
        • ルート
        • ブート
        • RAID-0に分割ボリューム
    • 3つのボリュームのバックアップ取得?
  • 解説

    • EBSのバックアップ
      • すべてのボリュームのスナップショット取得
      • インスタンスを停止
      • 各ボリュームに対し個別にスナップショット作成
  • 設問ポイント

    • VPCには3つのサブネット
      • パブリック:1つ
        • Auto-Scaling設定のEC2
      • プライベート:2つ
    • EC2は同じSGで設定
      • カスタムポートを使用し、モバイル許可するアプリ
      • カスタムポートでインターネット接続
    • ロールアウト:公開、運用開始、本格展開
    • インターネット接続するための条件?
  • 解説

    • セキュリティグループの反映
      • 既存のSGで即時反映
      • インターネット接続用のポート解放
  • 設問ポイント

    • リージョンでの障害発生
    • BCPソリューションの作成
  • 解説

    • EC2のBCP対策
      • EC2からAMIを作成し別リージョンへコピー
      • 障害発生時別リージョンで復元
      • AMIやスナップショットはデータ保存コストのみ
  • 設問ポイント

    • EC2をオンデマンドにスケールアウトするため、Auto Scaling
    • 起動時にソフトウェアをプレインストール
  • 解説

    • Auto Scalingでできない事
    • cf)起動設定
      • ソフトウェアのインストールはない
  • 設問ポイント

    • VPCで異なるサブネットのインスタンス
      • ping実行でTimeout
      • ルートテーブルは有効
      • CIDR上のエントリーあり
  • 解説

セキュリティの確保

  • 設問ポイント
    • EC2とRDS構成のWEBアプリ
    • EBSボリュームの暗号化
  • 解説

    • AWS Key Management Service(KMS)
      • キー作成・管理を容易に実施
      • EBS対応で暗号化可能
  • 設問ポイント

    • 一時的な認証情報
    • 高いセキュリティ要件
  • 解説

    • AWS STS
      • STS = セキュリティアクセストークンサービス
      • 一時的な認証情報
        • アクセスキー
        • シークレットアクセスキー
        • トーク
  • 設問ポイント

    • 自社リソースの保護
    • リソースの保管時とAWSへ転送時のデータ保護は?
  • 解説

  • 設問ポイント

    • S3のデータ暗号化
    • 暗号化キーではない方法
  • 解説
    • SSE-S3
      • Amazon S3がデータとマスターの暗号化キーを管理
      • 暗号化と複合化はS3によって自動で管理

コスト最適化


  • 設問ポイント
    • WEBアプリ数年間利用
    • 利用率:90~100%
    • コスト最適化は?
  • 解説

    • リザーブインスタンス
      • 1年間か3年間をReserved(予約)
      • 通常より安価に使用可能
      • 支払い
        • 全額前払い
        • 一部前払い
        • 前払いなし
  • 設問ポイント

    • EC2とRDSの障害復旧モデル
    • コスト最小化は?
  • 解説
    • 費用対効果が高いBCP対策
      • バックアップを取得し、S3へ保管後にリストア
      • バックアップ方式
        • EC2:AMI
          • スナップショットとブートイメージ
        • RDS:スナップショット

IAM


  • 設問ポイント
    • JSONでのリソース制御
      {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "Stmt1487980617000",
                    "Effect": "Allow",
                    "Action": [
                            "codebuild:*",
                            "codecommit:*",
                            "codedeploy:*"
                    ],
                "Resource": [
                    "arn:aws:codebuild:us-east-2:123456789012:project/my-demo-project",
                    "arn:aws:codecommit:us-east-2:123456789012:MyDemoRepo",
                    "arn:aws:codedeploy:us-east-2:123456789012:application:WordPress_App",
                    "arn:aws:codedeploy:us-east-2:123456789012:instance/AssetTag*"
                ]
                }
            ]
      }
    
  • 解説

    • 特定権限設定
      "Action": [
          許可するAWSサービス
      ],
    
      "Resource": [
          制限する項目
      ]
    
    • 制限する項目
      • codebuild
        • 1つのプロジェクトはすべて許可
      • codecommit
        • MyDemoRepoのアプリは許可
      • codedeploy
  • 設問ポイント

    • ルートアカウント作成
    • IAMユーザーとグループ作成
    • 特定のセキュリティ認証情報は?
  • 解説

    • アクセスキー
      • IAMユーザーまたはルートユーザーの長期認証情報
      • アクセスキーIDとシークレットアクセスキーで構成
      • AWS CLI/AWS APIをにプログラムでリクエスト署名
  • 設問ポイント

    • JSONでのS3リソース制御
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Sid": "FullAccess",
                  "Effect": "Allow",
                  "Action": ["s3:*"],
                  "Resource": ["*"]
              },
              {
                  "Sid": "DenyCustomerBucket",
                  "Action": ["s3:*"],
                  "Effect": "Deny",
                  "Resource": ["arn:aws:s3:::customer", "arn:aws:s3:::customer/*" ]
              }
          ]
      }
    
  • 解説
    • アクセス許可
      • S3に対しすべて許可
        {
            "Sid": "FullAccess",
            "Effect": "Allow",
            "Action": ["s3:*"],
            "Resource": ["*"]
        }
      
      • アクセス拒否

          {
              "Sid": "DenyCustomerBucket",
              "Action": ["s3:*"],
              "Effect": "Deny",
              "Resource": ["arn:aws:s3:::customer", "arn:aws:s3:::customer/*" ]
          }
        
      • 設問ポイント

        • EC2のWebアプリ
        • DynamoDBに書き込み
        • セッション読み取り専用EC2あり
        • この時のテーブルアクセス制御は?
      • 解説
        • IAMロールをEC2にアタッチ
          • DynamoDBの読み取り処理を許可

Auto Scaling


  • 設問ポイント
    • EC2インスタンスに対し、AutoScalingの最適化
    • スケールイン/アウトが頻発
    • 対応策?
  • 解説
    • スケールイン/アウト頻発
      • スケールインの開始が早すぎ
      • Auto-Scalingグループ設定
        • クールダウンタイマーの変更
      • CloudWatchアラーム設定
        • スケールインの基準値を変更

運用上の優秀性


  • 設問ポイント
    • BCP対策
    • コスト最適化
    • 他リージョンで必要時同じ構成で実装
  • 解説
    • CloudFormation
      • 既存システム構成の準備
      • AMIなどの指定
      • EBSデータの内容も継承可

今回のテーマは以上です。

SAA学習-セキュリティと運用-コスト最適化

今回のテーマ:コスト最適化

主要サービスの公式資料

Auto Scaling: aws.amazon.com

リザーブインスタンス docs.aws.amazon.com

AWS Trusted Advisor: aws.amazon.com

Amazon CloudWatch: aws.amazon.com

5つの設計原則と11のベストプラクティス

5つの設計原則と11のベストプラクティスよりコスト最適化のスコープの概略図は以下のようになります。

f:id:In-houseSE:20211122093612p:plain

Well-Architected FrameworkのCost Optimization:コスト最適化

コスト最適化では、不必要なリソースを削除し、最適な料金選択によりコストを最適化します。
設計事項は以下の項目が挙げられます。

  • 不必要なリソース削減
  • 透明性のある費用割賦
  • マネージド型サービスの利用によるコスト削減
  • 固定の償却コストを変動コストへ変換
  • スケールによるコストメリット
  • データセンターへの投資不要化

コスト最適化の主要サービス

AWSでのコスト最適化の観点は以下のものが挙げられます。

  • 需要と共有の一致
  • コストの高いリソース
  • 支出の認識
  • 継続した最適化

また、コスト最適化の観点とAWSで使用できるサービスの関係図は以下のようになります。

f:id:In-houseSE:20211122093631p:plain

AWSの課金方式

AWSは利用量に応じて柔軟な価格設定となります。
利用形態の概要は以下のようになります。

  • 従来課金
    従来課金による利用料に応じた価格設定が基本
  • 予約による低価格
    EC2など特定のサービスには、予約による低価※格販売が実施
    リザーブド価格
  • 使用するほど安い
    AWSボリュームディスカウントを受けることができ、使用量や増える程節約可能

AWSの料金改定

他のクライドサービスと競争するため、頻繁に料金改定がされ利用ごとに料金表を確認することが基本となります。

公式サイト

aws.amazon.com

EC2の購入オプション

EC2の購入オプションは、利用形態や利用基幹などに応じて多岐にわたるため、コスト最適な選択をすることが重要となります。
オプションの項目は以下のようになります。

EC2のリザーブインスタンス

EC2のリザーブインスタンスは利用期間を長期指定で利用する形式となります。
リザーブインスタンスの購入オプションとオンデマンドに合わせた概要となります。

項目 スタンダード コンバーティブル
利用期間 1年:40%割引
3年:60%割引
1年:31%割引
3年:54%割引
AZ/インスタンス/ネットワークタイプの変更
インスタンスファミリー/OS/テイナンシー/支払いオプションの変更可否 なし
リザーブインスタンスマートプライスでの販売可否 可能 今後可能

また、リザーブインスタンスやスポットインスタンスを利用するユースケースは以下のようになります。

  • 一定した状態または使用料が予測可能
  • BCPなどキャパシティ予約が可能なアプリケーション

EC2のスポットインスタンス

予備のコンピューティング容量をオンデマンドインスタンスに比べて、最大90%で利用できるEC2インスタンスとなります。
ポイントは以下のようになります。

  • 予備用の入札式で利用するため安価
  • 起動に通常より少し時間が必要
  • 予備用のため途中で削除される可能性あるため、一時的な拡張で利用

EC2の物理対応可能なインスタンス

物理サーバーにインスタンスを起動し制御可能なタイプのインスタンスは以下のものがあります。

  • ハードウェア専用インスタンス

  • Dedicated Host

    • EC2インスタンス容量を完全に専用として利用できるサーバー
    • サーバーにバインドされた既存のソフトウェアライセンスを利用可能
  • ベアメタル

    • アプリケーションは基盤となるサーバーのプロセッサーとメモリーに直接アクセス可能なインスタンス
    • AWSの各種サービスと連携可能なOSが直接仮想のハードウェアにアクセス可能

AWS Organizationsによる一括請求

AWS Organizationsの一括請求で、メンバーアカウント間のリザーブインスタンスを共有化できたり、S3の利用用に応じた課金がお得となります。

Saving Plan

1年~3年の期間に一定の使用量を守ることでコストを削減できます。
ポイントは以下のものがあります。

  • リザーブインスタンスと同様に1年または3年の特定量の処理能力(USD/時間で測定)を使用する契約を結ぶことで適用される割引契約
  • AWSコンピューティング使用料金を最大72%制約
  • Amazon EC2AWS Fargate、AWS Lambdaに適用可能

価格算定ツールを利用

AWS公式ツールを利用し、見積や価格比較を実施します。
公式ツールは以下のものがあります。

ツール 概要
簡易見積りツール 利用するAWSサービスに対する利用料金を見積
TCO計算ツール AWS利用した場合とオンプレ環境やコロケーション環境との価格比較
Pricing Calculrator ビジネスや個人のニーズに沿った個別の予測コスト見積

コストの可視化

CloudWatchのbilling機能により請求額通知を可能とし、Trusted Advisorからアドバイスをもらいます。
Trusted Advisorの他の項目は以下のものがあります。

  • コスト最適化
  • セキュリティ
  • 耐障害性
  • パフォーマンス向上

AWS Budgets

カスタム予算を設定し、コストまたは使用料が予算額や予算量を超えた場合、細かくアラームを設定することが可能です。

Cost Explorer

AWSのコストと使用量の経時的変化を可視化し、カスタムレポートを作成することで、コストと使用料のデータ分析を行います。

AWSのコストと使用状況レポート

AWSのコストと使用状況に関する最も包括的データを提供します。

AWS Cost Categories

自身の組織やプロジェクト構造に分けてコストをカテゴライズすることが可能な機能となります。

今回のテーマは以上です。

SAA学習-セキュリティの運用-AWS KMSの活用

今回のテーマ:AWS KMS

主要サービスの公式資料

AWS KMS: docs.aws.amazon.com

AWS KMS

AWS KMSは、データを暗号化するためのマネージド型暗号化サービスとなります。
特徴としては以下のものが挙げられます。

  • 暗号鍵の作成/管理/運用を実施するマネージドサービスで、AWSコンソールやAWS SDKまたはCLIを使用し、キーの作成/インポート/ローテション/削除/管理を実施
  • IAMと連携し鍵のアクセス管理を実施
  • カスタマーマスターキー(CMK)の無効化/有効化/削除を実施し、1年ごとの自動ローテションが可能
  • CMKを外部から持ち込んで管理することが可能
  • キーを保護するため、FIPS140-2の検証済みまたは検証段階のハードウェアセキュリティモジュールを採用
  • AWS CloudTrail統合されており、すべてのキーの使用ログを表示
  • RDSやS3などの多数のAWSサービスに適用可能
  • KMS SDKを利用し、アプリケーションの暗号化が可能

AWS KMSの概念

AWS KMSの構成要素として3つあり以下のようなものがあります。

  • カスタマーマスターキー

    • 暗号化を実行する上で最初に作成されるマスターキー
    • 暗号化キーを暗号化する
    • ローテションされる
  • カスタマーデータキー(暗号化キー)

    • 実際のデータ暗号化に利用するキー
    • KMSで生成されCMKにて暗号化される
  • エンベロープ暗号化

    • マスターキーで暗号化せず、暗号化したデータキーを利用し暗号化をする暗号化方式

構成要素よりAWS KMSのポイントは、以下のようになります。

  • データキーとマスターキーによる暗号化を実施
  • カスタマーマスターキー(CMK)を利用しデータを暗号化

エンベロープ暗号化

エンベロープ暗号化の暗号化方式は、以下のように概要図となります。

f:id:In-houseSE:20211116114349p:plain

今回のテーマは以上です。

SAA学習-セキュリティと運用-セキュリティの確保

今回のテーマ:セキュリティの確保

主要サービスの公式資料

AWS CloudTrail: docs.aws.amazon.com

Amazon CloudWatch: docs.aws.amazon.com

Amazon GuardDuty: docs.aws.amazon.com

Amazon Inspector: docs.aws.amazon.com

AWS WAF: docs.aws.amazon.com

AWS Shield: docs.aws.amazon.com

AWS リソースの アクセス管理: docs.aws.amazon.com

AWS Security Hub: docs.aws.amazon.com

AWS CloudHSM: docs.aws.amazon.com

5つの設計原則と11のベストプラクティス

5つの設計原則と11のベストプラクティスよりセキュリティの確保のスコープの概略図は以下のようになります。

f:id:In-houseSE:20211116100722p:plain

Well-Architected FrameworkのSecurity

Well-Architected FrameworkのSecurityはAWS内のデータ/システム/アセットを保護し、モニタリングによりセキュリティを高めます。
設計事項としては以下の項目が挙げられます。

  • すべてのレイヤーでセキュリティを適用
  • アクセス追跡/モニタリングの確実な実施
  • 条件ドリブンのアラートをトリガーとし、セキュリティイベントへの応答を自動化
  • AWS責任共有モデルに基づく対象範囲の保護に集中
  • セキュリティのベストプラクティスの自動化
    • ソフトウェアベースのセキュリティ設定を使用し、迅速でコスト効率のよいスケーリングを安全に実行
    • 仮想サーバーのカスタムベースラインイメージによる新サーバーへの適用自動化
    • インフラストラクチャ全体のテンプレート化による管理

責任共有モデル

セキュリティに対しAWSとユーザーで責任分解し対応する責任共有モデルとなります。
ユーザー側の責任範囲とAWS側の責任範囲は以下のようになります。

f:id:In-houseSE:20211116100930p:plain

公式サイトの資料:

aws.amazon.com

なお、ユーザーが利用するAWSサービスの項目は以下のものが挙げられます。

  • IAMによるアカウント管理
  • セキュリティグループの設定
  • アプリケーションのロールベースのアクセス設定
  • ネットワーク/インスタンスオペレーション/バッチなどの設定
  • OS/ホストベースのファイアーウォール設置

AWSのセキュリティの観点

AWSでのセキュリティの観点は、以下のものが挙げられます。

  • データ保護
  • 権限管理
  • インフラ保護
  • 検出制御

また、セキュリティの観点とAWSで使用できるサービスの関係図は以下のようになります。

f:id:In-houseSE:20211116100810p:plain

データ保護

データ保護の項目として以下のものが挙げられます。

  • 暗号化
  • S3の暗号化
  • RDSの暗号化

データ保護:暗号化

KMSは、多くのDBサービスと統合されており暗号化を容易に実施できます。
KMSを活用できるAWSサービスは以下のものが挙げられます。

  • EBS
  • RedShift
  • RDS
  • Elastic Transcoder
  • S3
  • WorkMail
  • EMR

KMSより堅牢な対応として、CloudHSMを活用し、不正使用防止策がとられている専用HWモジュールによる暗号化キーを保護するサービスを活用します。(専用HWモジュールの略称:HSM)

データ保護:S3の暗号化

S3は、データ保護のためAWS認証情報によるアクセス制御と暗号化を実施します。
S3の暗号化方式と特徴は以下のようになります。

暗号化方式 特徴
サーバーサイド暗号化 AWSのサーバーリソースを利用し格納データを暗号化
・暗号化タイプ:SSE-S3/SSE-KMS/SSE-C
クライアントサイド暗号化 ・暗号化プロセスをユーザー側で管理
・暗号化タイプ:AWS KMSで管理されたカスタマーキーで暗号化/クライアントで管理するマスターキーで暗号化

データ保護:RDSの暗号化

RDSは、セキュリティグループの制御、データ接続の暗号化およびリソースの暗号化を実施します。
RDSのセキュリティの実施概要については以下のようになります。

項目 実施概要
セキュリティグループ ・DBのSGでDBインスタンスへのアクセス制御
VPCのSGでVPC内のインスタンスへのアクセス制御
・EC2のSGでEC2インスタンスへのアクセス制御
データ接続の暗号化 SSL/TLSを用いてアプリケーションとDBインスタンスのデータ接続を暗号化
リソースの暗号化 ・暗号化オプションにより保管データを暗号化

権限管理

権限管理の項目でAWSで実施するサービスなどは以下のものが挙げられます。

  • AWS Directory Service
  • Security Token Service(略称:STS)
  • Amazon Cognito

権限管理:AWS Directory Service

AWS Directory Serviceは、ユーザーに関わる各種情報を保管しユーザー認証を実現する仕組みとなります。
管理する情報と実現する機能について以下のものがあります。

  • 管理するユーザー情報

    • ID
    • ユーザー名
    • 妙名氏名
    • 部署
    • グループ
    • 担当
    • 電話番号
    • メールアドレス
    • パスワード
  • 実現する機能

  • アプリのアクセス制御

    • ファイル共有
    • パッチ管理など

また、AWS Directory Serviceを使用する際、AWSに新規ディレクトリを作成するか既存のActive Directory認証を利用した制御を利用するか2つの認証方式があります。

権限管理:Security Token Service(略称:STS)

STSは、限定的で一時的なセキュリティ認証情報を提供するサービスとなります。
フローとしては以下のようになります。

f:id:In-houseSE:20211116100850p:plain

権限管理:Amazon Cognito

Amazon Cognitoは、シンプルでセキュアなユーザーのサインアップ、サインインおよびアクセスコントロールをアプリケーションへ実装するサービスになります。
例:FacebookSNS認証など

インフラ保護

インフラ保護の観点としてネットワーク制御となり、観点は以下のものが挙げられます。

  • サブネットの分割
  • VPCアクセス制御

インフラ保護:サブネットの分割

サブネットは、インターネットアクセス範囲を定義するため利用します。利用するサブネットは、プライベートサブネットを活用し、インターネットから隔離することでセキュリティを高める対応を行います。

インフラ保護:VPCアクセス制御

VPCは、セキュリティグループとネットワークACLで制御します。

  • セキュリティグループ

  • ネットワークACL

    • サブネット単位で制御
    • ステートレス

検出制御

検出制御は、監視やモニタリングを継続的に実施し、セキュリティを高めます。
AWSサービスと概要については以下ものがあります。

AWSサービス 概要
CloudTrail AWSユーザーの行動ログを取得し、ガバナンス、コンプライアンスおよび運用とリスク監視を行えるように支援するサービス
CloudWatch AWSリソースとAWSで実行するアプリケーションに対し、さまざまなメトリクスやログを収集/追跡するモニタリングサービス
AWS GuardDuty AWS上で悪意のある操作や不正な動作を継続的にモニタリングする脅威検出サービス
AWS Inspector 自動的にアプリケーションを検証し、その露出、脆弱性およびベストプラクティスから逸脱状況を確認後、セキュリティ評価を実施するサービス
AWS WAF 可用性、セキュリティ侵害、リソースの過剰消費といった一般的なWebの脆弱性からWebアプリケーションまたはAPIを保護するWebアプリケーションファイアーウォール
CloudFrontと連携されるサービス
AWS Shield マネージド型の分散サービス妨害(略称:DDoS)に対する保護サービス
AWS Shieldにはスタンダートとアドバンスの2つの階層がありサポート範囲が異なる
IAM Access Analyzer 外部エンティティと共有されているAmazon S3バケットやIAMロールなど組織とアカウントのリソースを識別し、セキュリティ上でリスクであるリソースとデータへの意図しないアクセスを特定
AWS Security Hub セキュリティアラートを一元的に表示と管理し、コンプライアンスチェックを自動化
監査結果から修正すべき設定の数と現在のセキュリティ状態を把握可能

cf)AWS WAFとAWS ShieldをセットでDDos攻撃対策を実施します。

今回のテーマは以上です。

SAA学習-環境自動化-小テスト

今回のテーマ:環境自動化の小テスト

問1 Codeシリーズの組合せとして正しい内容を選択してください

回答

CodeDeployはコーディングされた内容を展開する

解説

AWS CodeDeployは、Amazon EC2/AWS Fargate/AWS Lambda/オンプレミスで実行されるサーバーなど、さまざまなコンピューティングサービスへのソフトウェアのデプロイを自動化を行うフルマネージド側サービス

問2 Elastic Beanstalkの説明で正しい内容を選択してください

回答

Webアプリケーションやサービスを使い慣れたサーバーでデプロイおよびスケーリングするためのサービス

解説

Elastic Beanstalkでは、アプリケーションを実行しているインフラストラクチャについて学習することなく、AWSクラウドでアプリケーションをすばやくデプロイし、管理できます

問3

Elastic Beanstalkの説明として間違っている内容を選択してください

回答

アプリケーションはBeanstalkによって展開されるWebアプリケーションの単位

解説

アプリケーションはトップレベルの論理単位でバージョンや環境設定が含まれる

問4

OpsWorksで実施できる利用方法として正しい内容を選択してください

回答

OpsWorks for Puppet EnterpriseはPuppetのみしか利用できません

解説

なし

問5

Amazonのコンテナサービスの説明として正しい内容を選択してください

回答

Amazon ECRはコンテナサービスを格納します

解説

なし

問6

CodePipelineの特徴として間違えている内容を選択してください

回答

Code Commit/CodeBuild/CodeDeployに特化した専用パイプラインサービス

解説

CodePipelineは上記以外にもECSなどで利用可能です

問7

Amazon ECSについて間違っているものを選択してください

回答

DockerイメージをYAML/JSONを利用して設定する

解説

Amazon ECSはDockerFileを使ってDockerイメージを作成します

問8

CloudFormationのテンプレート内の記述要素について間違っている内容を選択してください

回答

Parametersにリソースなどの詳細な設定内容を記述する

解説

Parametersにはパラメーター設定を定義し、関数で呼び出す際に利用する

今回のテーマは以上です。

SAA学習-環境の自動化-CloudFormationの概要

今回のテーマ:CloudFormationの概要

主要サービスの公式資料

AWS CloudFormation: docs.aws.amazon.com

CloudFormation

AWSクラウド環境内の全インフラリソースを記述し、テンプレート化することで展開する環境自動設定サービスとなります。
特徴としては以下のものが挙げられます。

  • プロビジョニングされたリソースの変更・削除が可能
  • JSON/YAMLで記述
  • クロスリージョンとクロスアカウントで管理
  • 直接サポートされてないリソースや機能を利用する場合、カスタムリソースを使用
  • カスタムリソース使用時、スタック作成の一部に独自ロジックを実装

ユースケース

CloudFormationを使用する場合、環境構築を正確に実施する場合や効率的に展開したい時に使用します。
実装時のためのポイントは以下のものが挙げられます。

  • AWSリソースの構築を効率化
  • 開発/テスト/本番環境で利用するインフラの標準化
  • 毎回小野路リソースやプロビジョニング設定を正確に利用
  • ソフトウェアと同じように環境構築を管理

CloudFormationの構成

CloudFormationの構成は、テンプレートで定義された内容を読み込みAWSリソースの集合体であるスタックを作成します。
構成要素のポイントは以下のものがあります。

  • テンプレート
    JSON/YAMLでリソースとパラメーターを定義

  • Cloud Formation
    スタックの作成/変更/削除/エラー検知とロールバックやリソース間の依存関係を自動判定

  • スタック
    AWSリソースの集合体でスタック単位で管理可能。
    スタックを削除すると関連したリソースも削除

CloudFormationの機能

CloudFormationの機能は、テンプレート自体を管理や便利に使うための機能を提供してます。
機能の要素は以下ものが挙げられます。

要素 概要
変更セット ・スタックの更新を行うための概要
・変更による影響度を確認するためのスタック
・スタック変更は直接更新と変更セットの実行で可能
ドリフト ・テンプレートによって展開したAWSリソースを展開語に変更した場合、元テンプレートとの差分を検出するチェック機能
スタックセット ・複数のAWSアカウント複数のリージョンに対しスタックを作成できる機能
スタック間のリソース参照機能 ・被参照添付レートの参照値をエクスポートし、値を抽出
・参照先のテンプレートのインポートによりリソース参照を行うことで、連携したインフラ展開が可能

また、CloudFormationデザイナーを利用することで、視覚的にテンプレートを作成することが可能です。

f:id:In-houseSE:20211115100515p:plain

テンプレート

実装する際のサンプルは以下のようなものがあります。

AWSTemplateFormatVersion: 
Description:
Metadata:
Parameters:
Mappings:
Conditions:
Transform:
Resources:
 FirstVPC:
  Type:AWS::EC2::VPC
  Properies:
   CidrBlock:10.0.0.0/16
   Tags:
    -Key:Name
     Value:FirstVPC
 AttacheGateway:
  Type:AWS::EC2::VPCGatewayAttachement
  Properies:
   DependOn:
    VpcId: !Ref FirstVPC
    InternetGatewayID: !Ref InternetGateway
Outputs:

実装要素の補足説明は以下となります。

項目 補足説明
AWSTemplateFormatVersion テンプレートのバージョンを指定
Description テンプレートの説明
Metadata テンプレートに関する追加情報
Parameters 実行時に必要なパラメーターとしてKeypairやユーザー名を記述。定義するとRef関数で値参照が可能
Mappings 条件パラメーターを指定するためのキーと値のマッピングを記述
Conditions リソース作成時の条件名と条件内容を記述
Transform サーバレスアプリのSAMバージョンを記述
Resources 実際にスタックを生成するリソースとそのプロパティを記述
Outputs スタック構築後に出力される値や出力先を記述

実際に作成するリソースの名称やプロパティの記述となります。

 FirstVPC:
  Type:AWS::EC2::VPC
  Properies:
   CidrBlock:10.0.0.0/16
   Tags:
    -Key:Name
     Value:FirstVPC

任意にユーザー側でリソース間の依存関係を実装する記述となります。

Properies:
   DependOn:

組込関数:RefやFindInMapの活用部分となります。
AWS標準の設定値を参照する場合はRefを使用し、Mappingsで定義した値を参照する場合はFindInMapを使用します。

VpcId: !Ref FirstVPC

今回のテーマ以上です。

SAA学習-環境の自動化-AWSの環境自動化サービス

今回のテーマ:AWSの環境自動化サービス

主要サービスの公式資料

Auto Scaling: docs.aws.amazon.com

Cloud Formation: docs.aws.amazon.com

CodeCommit: docs.aws.amazon.com

CodeBuild: docs.aws.amazon.com

CodeDeploy: docs.aws.amazon.com

ECS: docs.aws.amazon.com

Elastic Beanstalk: docs.aws.amazon.com

OpsWorks: docs.aws.amazon.com

SystemManager Run Command: docs.aws.amazon.com

スコープ

5つの設計原則と11のベストプラクティスより環境の自動化のスコープの概略図は以下のようになります。

f:id:In-houseSE:20211109160515p:plain

主要サービス

AWSで環境の自動化を行うサービスとして以下のものが挙げられます。

  • Auto Scaling
  • Cloud Formation
  • Code シリーズ
  • ECS
  • Elastic Beanstalk
  • OpsWorks
  • SystemManager Run Command

目的

環境を自動化することで開発速度を高め、DevOpsとCI/CDによる開発を実現します。

クラウドファーストの時代背景

テクノロジー×ビジネスに柔軟に対応するため、クラウドファーストが必要不可欠となります。
概略図は以下のようになります。

f:id:In-houseSE:20211109160540p:plain

また、リーンによる素早いサービス検討とCI/CDによる素早い開発をマイクロサービスに対し実施します。
概略図は以下のようになります。

f:id:In-houseSE:20211109160608p:plain

環境自動化サービス

AWSでは、DevOpsを実現する環境自動化サービスを豊富に提供されております。
概略図は以下のようになります。

f:id:In-houseSE:20211109160742p:plain

環境自動化サービスの概要は以下のようになります。

サービス名 概要
Codeシリーズ 開発コードのgit上のコミット・実行・デプロイを自動。
PipelineはCloudFormation/ECSのデプロイ自動化にも利用可能
Elastic Beanstalk Webアプリやサービスを使い慣れたサーバーでデプロイやスケーリングをするサービス
OpsWorks ChefやPuppetのマネージド型インスタンスのサーバー設定・デプロイ・管理を自動できるようになる設定管理サービス
CloudFormation クラウド環境内のすべてのインフラストラクチャリソースを記述し、
プロビジョニングするためテンプレート化されたプロビジョニングサービス
Amazon ECS AWS上でDockerコンテナによる環境構築のテンプレート化するサービス
DockerFile開発イメージを設定したインフラ設定をコード化
CloudWatch EC2インスタンスやEBSボリューム・DBインスタンス、カスタムメトリクスなどリソースを簡単にモニタリング

Codeシリーズ

Codeシリーズは、開発コードをgitベースのリポジトリ上で、コミット・実行・デプロイを自動化する一連のサービスとなります。 概略図は以下のようになります。

f:id:In-houseSE:20211109160805p:plain

Elastic Beanstalk

Elastic Beanstalkは、Webアプリケーションの定番構成の構築・デプロイの自動化サービスとなります。
ポイントは以下のようなものがあります。

  • 速く簡単にアプリをデプロイするサービス
  • Java,PHP,Ruby,Python,Node,js,.Net,Docker,Goの開発言語に対応し、Webアプリを展開
  • Apatch,Nginx,Passenger,IISなどのWebサービスでデプロイ
  • コードをアップロードすれば、キャパシティのプロビジョニング、ロードバランシング、Auto Scalingからアプリケーションのヘルスチェックまでデプロイを自動化

Elastic Beanstalkの構成用途

Elastic Beanstalkの構成用途として、アプリケーション単位にバージョン・環境設定をコードし、保存されて環境にバージョンが展開されます。
項目としては以下のものが挙げられます。

項目 概要
アプリケーション ・トップレベルの論理単位でバージョン/環境/環境設定が含まれる要素
バージョン ・デプロイ可能なコードでS3で管理
・異なる環境/異なるバージョンを展開可能
環境 ・各環境(Webサーバー/ワーカー)に応じて構築されるインフラ環境
・バージョン(ソースコード)をデプロイ
環境設定 その環境に関連するリソースの動作を定義する設定パラメータ
・永続データの格納場所はS3やRDSなどの外部サービスを利用

Elastic Beanstalkのユースケース

Elastic Beanstalkのユースケースは、Webアプリケーションのデプロイを容易にすることやタスクの長いワークロード展開に利用します。 Webサーバー環境とワーカー環境では以下のようになります。

Webサーバー環境
  • ELB+Auto Scalingでスケーラブルな構成をコード化し、バージョン管理を実施
  • スケーラブルなWebアプリケーションを実行の実現
  • 単一コンテナのDockerコンテナを実行可能
  • 複数コンテナはECSを使用した環境実行が可能
ワーカー環境
  • SQS+Auto Scalingでスケーラブルなバッチ処理ワークを実現
  • 定期的なタスク実行基盤の作成:毎日深夜1時に動作するバックアップ処理
  • ワーカーホスト内でWebアプリケーションを動作させワークロードの時間がかかる処理を実行

OpsWorks

OpsWorksは、ChefやPuppetによるインフラ設定・運用の仕組みをAWS上でマネージド型サービスとして提供してます。
AWS上で使用できるサービスは以下になります。

  • OpsWorksスタック
  • OpsWorks for Chef Automation
  • OpsWorks for Puppet Enterprise

OpsWorks for Chef Automation

OpsWorks for Chef Automationは、Chefサーバーを作成し、継続的なデプロイメントおよびコンプライアンスチェックの完全マネージド型サーバーサービスとなります。
サービスの概要としては以下のものがあります。

  • Chef Automaionは、Chefのcookbookやレシピを利用しインフラ管理を自動化するサービス
  • インフラおよびアプリの継続的なデリバリーパイプラインを構成することが可能
  • リソースはChefサーバーから構成内容のアップデートを取得
  • オペレーション/コンプライアンス/ワークフローイベントを可視化
  • AWSでChefサーバを構築でき、Chef Automate APIやChef DKなどのツールを利用

OpsWorks for Puppet Enterprise

OpsWorks for Puppet Enterpriseは、フルマネージド側Puppetマスターにより、アプリケーションのテスト/展開/運用を自動します。
サービスの概要としては以下のものがあります。

  • Puppetマスターは、インフラないノードを管理し、ノード情報を保存とPuppetモジュールの中央リポジトリ
  • Puppetマスターは、以下のタスクを処理する全スタック自動可
    • ソフトウェア
    • OS設定
    • パッケージのインストール
    • データベース設定
    • 変更管理
    • ポリシー適用
    • モニタリング
    • 品質保障
  • モジュールは、インフラストラクチャの設定方法に関する手順を格納したPuppetコードを再利用および共有が可能とするユニット
  • Puppetを使用し、EC2やオンプレミスデバイスにあたるノードの設定/デプロイ/管理方法を自動化

OpsWorksスタック

OpsWorksスタックは、スタックとアプリケーションの作成/管理のため、シンプルで柔軟な方法を提供するAWSのオリジナルサービスとなります。
サービスの概要としては以下のものがあります。

  • スタック/レイヤー/インスタンス/アプリケーションと呼ばれるコンポーネントによりモデル化を実施
  • コードで構成管理やオートスケーリングが可能
  • Linux/Windowsサーバをサポート
  • ライフライクルイベントによるタスクの自動化が可能
  • OpsWorksエージェントがChef Clientのローカルモードでレシピを実行
  • スタックがOpsWorksのトップエンティティである全インスタンスの構成要素をJSON形式で管理
  • AWS OpsWorksスタックはChefサーバ不要

Elastic BeanstalkとOpsWorksの違い

Webアプリのデプロイに特化したElastic Beanstalkに対し、OpsWorksは様々なアプリケーションに対応する高度なインフラ環境構築が可能です。

  • Elastic Beanstalk
    アプリケーションのデプロイ自動化
    Webアプリケーションやサービスを使い慣れたサーバーにおいてデプロイとスケーリングをするためのサービスとなります。

  • OpsWorks
    インフラの設定自動化
    ChefやPuppetのマネージド型インスタンスのサーバー設定/デプロイ/管理を自動化できるようになるインフラの設定管理サービスとなります。

CloudFormation

CloudFormationは、AWSクラウド環境内の全インフラリソースを記述しテンプレート化して展開する環境自動設定サービスとなります。
ポイントは以下のものがあります。

  • プロビジョニングされたリソースの変更/削除が可能
  • 追加リソースは通常課金のみで追加料金なし(CloudFromationのみなら)
  • JSON/YAMLで記述
  • クロスリージョンとクロスアカウントで管理
  • 直接サポートされていないリソースや機能を利用する場合、カスタムリソースでスタック作成の一部に独自ロジックを組み込むことが可能

コンテナ

コンテナは、ホストマシンのカーネルを利用し、プロセスやユーザーなどを蚊瓜する仮想化方式となります。 イメージ図としては以下のようになります。

f:id:In-houseSE:20211109160914p:plain

Docker

Dockerは、コンテナ側の仮想環境を作成/配布/実行するためのプラットフォームとなります。
ポイントは以下のものが挙げられます。

  • コード化されたファイルを共有するため誰でも同じ環境構築が容易に可能
  • 作成した環境を配布教諭が容易
  • 環境の即時構築/削除が容易なため、CI/CDによる開発が可能

AWSのコンテサービス

AWSで使用できるコンテナサービスとして以下のものがあります。

種別 AWSサービス名 概要
レジストリ Amazon ECR コンテナエンジンに実行されるイメージを保管
コントロールプレーン Amazon ECS/EKS コンテナを管理するサービス
データプレーン AWS Fargate コンテナが実行される環境

Amazon ECS

Amazon ECS(Elastic Container Service)は、Dockerコンテナをサポートする拡張性とパフォーマンスに優れたコンテナオートストレーションサービスとなります。
ポイントは以下のものが挙げられます。

  • コンテナ化されたアプリをAWSにおいて簡単に実行およびスケール可能
  • Fargateを利用することでコンテナのデプロイと管理サーバーのプロビジョニングや管理は不要
  • あらゆる種類のコンテナ可されたアプリケーションを簡単に作成可
  • Dockerコンテナの数が多くても数秒で起動可能
  • ELB/VPC/IAM/ECR/CloudWatch/CloudFormation/CloudTrailなどのAWSサービスを利用可
  • VPCネットワークモードで、TaskごとにENIを自動割り当てし、Security GroupをTaskごとに設定可
  • VPC内の他リソースへPrivete IPで通信が可能
  • Fargate起動タイプとEC2起動タイプの2種類のモード

Amazon ECR

Amazon ECR(Elastic Container Registry)は、フルマネージド型のレジストリサービスでDockerコンテナイメージを簡単に保存/管理/デプロイすることが可能です。
ポイントは以下のものが挙げられます。

  • ECSとDocker CLIに統合されており、開発から本稼働までのワークフローを簡略化
  • IAMによる協力な認証管理機構
  • エンドポイントにアクセスできるならAWS外からでも利用可能
  • ライフサイクルポリシーでイメージの自動クリーンアップ
  • VPCネットワークモードでタスクごとにENIを自動割り当てし、さらにセキュリティグループをタスクごとに設定可能

Amazon EKS

Amazon EKS(Elastic Kubernetes Service)は、コンテナ化されたアプリケーションのデプロイ/管理/スケールをオープンソースKubernetesを使用し実行するサービスとなります。
ポイントは以下のものが挙げられます。

  • Kubernetesは、自動デプロイ/スケーリング/アプリ/コンテナの運用自動化のため設計されたオープンソースプラットフォーム
  • Kubernetesのパートナーやコミュニティが作成した既存のプラグインやツールを使用可能
  • マネージド側サービスであり、コントロールプレーンの管理不要
  • ワーカーノードとマネージドコントロールプレーンとの間に、暗号化処理された安全な通信チャネルを自動的にセットアップ
  • Kubernetes環境で管理されるアプリケーションと完全な互換性

AWS Fargate

AWS Fargateは、サーバーやクラスターの管理なしにコンテナを実行するECSに対応したコンピュータエンジンとなります。 起動モードは2種類あり以下のものになります。

EC2起動モード
  • ECSでEC2インスタンスを起動
  • コンテナアプリケーションを実行するインフラストラクチャに対し、サーバーレベルの詳細なコントロールを実行可能
  • サーバークラスタを管理し、サーバーでのコンテナ配置をスケジュール可能
  • サーバークラスターでのカスタマイズの幅広いオプションの利用可能
Fargate起動モード
  • ECSで設置できる専用のコンピューティングエンジン(2019年12月よりEKSも対応可)
  • EC2インスタンスクラスター管理は不要
  • インスタンスタイプの選択/クラスタースケジューリング管理/クラスター使用の最適化は不要
  • CPUやメモリなどアプリ要件を定義すると必要なスケーリングやインフラはFargateが管理
  • 秒で数万個のコンテナを起動

CodePipeline × CloudFormation の連携

CloudFromationで設定したAWS環境に対し、CodePipelineを使うことでテンプレートの変更/実行/展開を自動化できます。

CodePipeline × ECS の連携

ECSで設定したDocker環境に対し、CodePipelineを使用することでテンプレートの変更/実行/展開を自動化できます。

今回のテーマは以上です。