UDAUDA.BLOG

うだうだしながらIT関連の記事を書いていきます!

AWS SAA

AWSの仕組み

  • インフラやアプリ開発に必要な機能がオンデマンドのパーツサービスとして提供されている
  • サーバーを立ち上げるのに数分で無料で今すぐに利用できることが特徴
  • インフラ/システム機能をブロックパーツのようにオンライン上に組み合わせて自分の好きな構成を実現する仕組み
  • AWSのサービスにはアンマネージド型とマネージド型が存在する
    • アンマネージド型
      • スケーリング/耐障害性/可用性を利用者側で設定し管理する必要がある
      • メリット
        • 設定が柔軟に可能
      • デメリット
        • 管理が面倒
      • マネージド型
        • スケーリング/耐障害性/可用性がサービスに組み込まれておりAWS側で管理されている
        • メリット
          • 管理が楽
        • デメリット
          • 設定が限定的

AWSのグローバルインフラ構成

  • リージョン
    • リージョンは国や地域における地理的に隔離されたAWS拠点
    • 日本には東京と大阪の2つのリージョンがある
    • リージョンとリージョンは物理的に独立したインフラ拠点
      • ただし、隣接リージョン間は広帯域の専用ネットワークで接続されている
    • リージョンに応じてAWSサービスの利用可否と値段が異なる
  • AZ(アベイラビリティゾーン)
    • 同リージョン内のAZ同士は低レイテンシー(遅延時間)のリンクで接続されている
    • AZは1つの複数の物理的なデータセンターで構成されている f:id:RyoheUdagawa:20210712221805p:plain
    • AZにある物理インフラを仮想化してユーザーにインフラ機能をサービスとして提供されている
    • 1つのAZ内のみでAWSサービスを利用しているデータセンターの停止によるサービス停止の可能性がある
    • 複数AZで分けて信頼性の高いシステム構成にするのが基本的なAWSアーキテクチャ
    • 複数AZを跨ぐと物理的な耐久性などが向上するがシステム間の連携や共有が制限される
  • エッジロケーション
    • エッジロケーションはキャッシュデータなどを利用する際の更に小さなエンドポイントとなる拠点
      • エンドポイントとはITの分野では、通信ネットワークの末端に接続された機器や端末、あるいは利用者が直に触れて操作する機器などを指すことが多い。
    • cloudfrontなどもエッジロケーションの1つ

仮想化を理解する

クラウドと仮想化

  • クラウドは仮想化技術によって成り立っているサービス
  • 仮想化とインフラの構成を隠して仮想化された単位に分けたり統合したり利用させる技術
  • 物理的なインフラに仮想化ソフトウェアを設定して、実質的な機能をユーザーに切り分けて提供する

仮想化の対象

  • サーバーの仮想化
    • 1台の物理サーバ上に複数のOSを起動させる技
    • ハイパーバイザー型・VMmare型・コンテナ型
  • ストレージの仮想化
    • 複数のストレージを仮想的に統合して1つの大きなストレージプールを構成する
    • ブロックレベル仮想化/ファイルレベル仮想化
  • ネットワークの仮想化
    • 新たな仮想ネットワークの構築や制御を、ソフトウェアにより動的に実施する技術
    • SDN・VLAN
  • デスクトップの仮想化
    • サーバ上においてPC環境のデスクトップ画面を遠隔地にある接続端末に転送する技術
    • 仮想PC方式・ブレードPC方式

www.infraexpert.com

仮想化のメリット

仮想化を利用することでインフラ利用の効率性や柔軟性が圧倒的に向上する

  • サーバースペースの削除・データセンター費用の削減
  • 効率的なサーバー利用によるコスト削減
  • 調達の迅速化
  • 構成変更やメンテナンス対応の柔軟性
  • セキュリティの向上

クラウドとは

  • 必要に応じて他社所有のハードウェア・ソフトウェア等をネットワークを介して利用するシステム利用形態
  • インフラを仮想化することでソフトウェア化されたサービスとして提供されていることでソフトウェア化されたサービスとして提供されているされているのがクラウド型のサービス

クラウド構成要素

クラウドで提供されるシステム構成要素はインフラ、ミドルウェア、アプリケーションの3層

クラウドの5つの基本特性

  • オンデマンド・セルフサービス
    • 利用者は人を介さず、必要に応じてサーバー、ネットワーク、ストレージを設置・拡張・設定が可能
  • 幅広いネットワークアクセス
  • リソース共有
    • ハードウェアの使用容量などのリソースは複数利用者により共有し、利用者の需要に応じて動的に割り当てる
  • 迅速な拡張性
    • ハードウェア等の資源は必要に応じて自動または手動で増やしたり、減らしたりできる
  • サービスは計測可能
    • 稼働状況が常に計測されており、利用状況をコントロール・最適化できる
    • 計測結果に応じて重量課金が可能

IAM

IAMの概要

IAMとはIdentity and Access Managementは安全にAWS操作を実装するための認証・認可の仕組み

  • AWS利用者認証の実施
  • アクセスポリシーの設定
  • 個人またはグループに設定

f:id:RyoheUdagawa:20210717110204j:plain

https://recipe.kc-cloud.jp/archives/11054

主要トピック

ユーザー、グループ、ポリシー、ロールがIAMの主要な要素

IAMポリシー

  • ユーザーなどへのアクセス制限を付与するための設定ドキュメントのこと(JSON形式)
  • これをユーザー、グループ、ロールに設定する
  • AWSが用意しているポリシーと、自分で作成するポリシーがある f:id:RyoheUdagawa:20210717110908p:plain

IAMユーザー

AWS上の利用者はIAMユーザーという権限を付与されたエンティティとして認定される

  • ルートアカウント
    • AWSアカウント作成時に作られるIDアカウント
    • 全てのAWSサービスとリソースを使用できる権限を有する
    • 日常的なタスクはルートユーザーを使用しないことが強く推奨される
  • 管理者権限
    • 管理者権限の許可が付与されたIAMユーザーのこと
    • IAMの操作権限まであり
    • ルートアカウントしかできない権限は付与されない
  • パワーユーザー
    • パワーユーザーはIAM以外の全てのAWSサービスにフルアクセス権限を有するIAMユーザー
    • IAMの操作権限なし

IAMグループ

  • グループとして権限をまとめて設定される単位のこと
  • グループには通常複数のIAMユーザーが設定される

IAMロール

  • AWSリソースに対してアクセス権限をロールとして付与できる
  • EC2から特定のS3にアクセスできないよう制限をかけたりすることが可能

IAMの認証方式

IAMによるユーザー認証方式は利用するツールに応じて異なる

  • アクセスキーID/シークレットアクセスキー
  • X.509 Certificate
  • AWSマネージメントコンソールへのログインパスワード
    • AWSアカウントごとにパスワードを設定してログイン認証をする
    • デフォルトは未設定(ログインできない)
  • MFA(他要素認証)
    • 物理デバイスなどを利用したピンコードによる認証方式
    • ルートアカウントなどはMFAを付与してセキュリティを強化することで推奨される

IAM設計

AWSを利用するユーザーの役割やアクセス権限を自社の組織構造と合わせて設計することが重要

  • 少数利用がずっと継続する場合は少数利用も含めて最初からIAMグループで設定する方が良い

グループ設計

組織別または個人単位にAWS利用者とその役割別の利用範囲を整理して、グループ設計を実施する

  1. AWS利用者と役割の洗い出し
  2. AWS利用者の特定
  3. 利用者の役割と利用範囲を整理
  4. 利用グループへと集約
  5. 同じ役割や利用範囲を1つのグループとしてまとめる
  6. グループ別の名称と最小限利用範囲を確定する

IAMロールへのポリシー適用

システム設計からAWSサービス間の連携有無を抽出する

  1. システム設計
  2. システム設計からAWSサービス間の連携箇所を特定
  3. 必要な権限設定の設定
  4. リソースに対して必要な権限設定の割り出しを実施

IAMロールの信頼ポリシー

IAMロールは監査人などに一時的な権限を委譲する際にも利用される

  • IAMロールの権限委譲操作に特化したポリシー
  • 当該の信頼ポリシーを関連づけたIAMロールが保有する情報を、信頼ポリシーの操作主体であるPrincipalに委譲(許可)することができる

VPC

IPアドレスの基礎

グローバルとプライベートのIPアドレス

  • グローバルIPアドレス

    • 世界で重複のない一意のIPアドレス
    • インターネット上でのやりとりにに利用されるIPアドレス
    • ICANNが管理する
    • 世界中で一意の必要があり、重複不可
    • グローバルに割り当てられたIPアドレスをもらう必要がある
  • プライベートIPアドレス

    • オフィス内や家庭内などの自分の場所だけで利用されるアドレス
    • 利用範囲は限定的なエリアだけ
    • 限定内エリアでは重複不可だが、グローバルでは重複可能
    • ローカルエリアの管理者が自分でIPアドレスを与える事ができる
    • 設定できるIPアドレス範囲は以下
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.32.255.255
192.168.0.0 ~ 192.168.255.255

サブネットとサブネットマスク

ネットワークの範囲

  • ネットワークの範囲を定義することが必要
  • ネットワークの範囲=IPアドレスの利用可能な範囲
  • プライベートネットワークをサブネットに分けることができる
  • 表記方法
10.0.1.0/16  

IPアドレスサブネットマスク

CIDR(Classlesss Inter-Domain Routing)

196.51.×××.×××/16
左から16桁目までが同じネットワーク範囲と指定

ネットワーク部とホスト部

サブネットによるグループ化

  • ローカルなネットワークに沢山の機器がつながっている特定の端末を発見しづらい

VPCの概要

VPC(Virtual Private Cloud)はAWSクラウドのネットワークからユーザー専用の領域を切り出してくれる仮想ネットワークサービス

  • 任意のIPアドレスを範囲を選択して仮想ネットワークを構築
  • サブネットの作成、ルートテーブルやネットワークゲートウェイの設定など仮想ネットワーキング環境を完全に制御可能
  • 必要に応じてクラウド内外のネットワーク同士を接続することも可能
  • 複数の接続オプションが利用可能
    • インターネット経由
    • VPN/専用線(Direct Connect)
  • 単一のVPCを構築すると単一AZの範囲に認定される
  • 同一リージョン内ではVPCは複数のAZにリソースを含めることもできる
  • VPCとサブネットの組み合わせでネットワーク空間を構築する
  • VPCはサブネットとのセットが必須

VPCの設定

VPCウィザードを利用しない場合はVPCを作成、サブネットを作成と1つずつ作成する

サブネット

  • サブネットはCIDR範囲で分割したネットワーク
  • VPCとサブネットにはCIDR(IPアドレス範囲)が付与され、ネットワークレンジが決まる
  • インターネットゲートウェイへのルーティング有無でサブネットのタイプが分かれる
  • VPC外部接続

    • プライベートサブネットからインターネットに接続するにはNATゲートウェイがパブリックサブネットに必要
    • VPCの外側にあるリソースとの通信には以下の2種類がある
      • AWSネットワーク
      • エンドポイントを利用する f:id:RyoheUdagawa:20210719215112p:plain
  • インターネット経路を設定

    • ルートテーブルとCIDRアドレスでルーティングを設定する
      • ルートテーブルでパケットの行き先を設定
      • VPC作成時にデフォルトで1つルートテーブルを作成
      • VPC内はCIDRアドレスでルーティング  - ルートテーブルはどのサブネットがどのインターネットゲートウェイとつながっているかを表す

AWSのルートテーブルは、 サブネット内にあるインスタンス等がどこに通信にいくかのルールを定めたものです。つまり、ルートテーブルはパケットの宛先(IPアドレス)を見て、どこに通信を流すかが書かれている表です。この表をみてパケットを運ぶので、表にない宛先のものはパケットを送らないので、通信できません。サブネット毎にどこに通信ができるかを定めたものだというところがポイントです。

qiita.com

f:id:RyoheUdagawa:20210719221240p:plain

ルートテーブルの役割

  • パブリックサブネットからインターネットに接続するにはインターネットゲートウェイが必要
  • インターネットゲートウェイルーターの1つ
  • サブネットのルートテーブルにインタネットゲートウェイへのルートを設定することでパブリックサブネットになる f:id:RyoheUdagawa:20210720223252p:plain

プライベートサブネットを作成する

グローバルとプライベートのIPアドレス

まとめ

通信プロトコルOSI参照モデル

  • 通信のルール
    • インターネットの通信の際にメールやWEBアクセスなど、目的によって通信方法が異なる
    • HTTP(Hyper Text Transfer Protocol)はHTML(Hyper Text Markup Language)で書かれた文書などの情報をやり取りする時に使われるプロトコル\
  • ポート番号
    • 通信する出入り口となるのがポート番号で、メールボックスのような役割をになっている
    • ポートとはオペレーティングシステムがデータ通信を行うためのエンドポイント
    • インターネット上の通信プロトコルで同じコンピュータ内で動作する複数のソフトウェアのどれが通信するかを指定するための番号

セキュリティグループとネットワークACL

  • セキュリティグループ
    • インスタンスへのトラフィックのアクセス可否を設定するファイアーウォール機能を提供
    • サーバー単位で適用
    • ステートフル:インバウンド(外から中)のみ設定すればアウトバウンド(中から外)も許可される
    • 許可のみをIn/outで指定
    • デフォルトでは同じセキュリティグループ内通信のみ許可  
  • ネットワークACL
    • サブネットに対するトラフィック制御を実施する
    • VPC/サブネット単位で適用
    • ステートレス:インバウンド設定だけではアウトバウンドは許可されない
    • 許可と拒否をIn/outで指定
    • デフォルトでは全ての通信を許可する
    • 番号の順序通りに適用

NATゲートウェイ

VPCとの接続

  • VPN接続
  • 専用線接続
    • お客様のデータセンターやオフィスを専用線などを介してAWSへプライベートに接続するサービス
    • メリット
    • Direct Connectロケーションに物理的に自社オンプレ環境を接続することでAWS環境との専用接続線を実現する f:id:RyoheUdagawa:20210725140249p:plain
    • Direct Connect gateway
      • Direct Connect gatewayにより同一アカウントに所属する複数リージョンの複数AZから複数リージョンの複数VPCに接続
  • VPCエンドポイント
    • VPCエンドポイントはグローバルIPを持つAWSサービスに対して、VPC内から直接アクセスするための出口
      • Gateway型はサブネットに特殊なルーティングを設定し、VPC内部から直接外のサービスと通信する f:id:RyoheUdagawa:20210725141205p:plain
      • PrivateLink型はサブネットにエンドポイント用のプライベートIPアドレスを生成し、DNSが名前解決でルーティングする f:id:RyoheUdagawa:20210725141402p:plain
  • NATゲートウェイ

EC2

  • 数分で利用可能となる重量課金(時間〜秒単位)で利用可能な仮想サーバー
  • 利用する単位をインスタンスと呼び、任意のAZにインスタンスを立ち上げてサーバーとして利用する
  • ストレージの選択
    • EC2で直接利用するストレージは不可分なインスタンスストアと自分で設定するEBSの2つ
      • インスタンスストア
        • ホストコンピュータに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ
        • EC2の一時的なデータが保持され、EC2の停止・終了と共にクリアされる
        • 無料
      • Elastic Block Store
        • ネットワークで接続されたブロックレベルのストレージでEC2とは独立して管理される
        • EC2をTerminate(終了)してもEBS保持可能で、SnapshotをS3に保持可能
        • 別途EBS料金が必要

公開鍵認証方式を学ぶ

  • EC2インスタンスを作成した際にキーペアを作成して、PEMファイルをダウンロード
  • 作成したEC2インスタンスが自分のモノであると証明するためにPEMという鍵を利用する
  • キーペアであるため、EC2インスタンス側にも対になる鍵を持っている
  • この認証方式を公開鍵認証方式という、基本的な暗号方式を利用している f:id:RyoheUdagawa:20210725170809p:plain
  • 秘密鍵
    • 自分自身だけが所有しており、そのデータや領域が自分のものだと表明するための鍵
  • 公開鍵
    • 公開鍵は秘密鍵を利用する対象となる相手に共有することを目的とした公開された鍵
  • 作成したEC2インスタンスに入る際は、このPEMを指定して認証することが必要
  • EC2のPEMキーも1つで複数のEC2インスタンス用のカギとして利用することができる

SSHを学ぶ

  • SSHプロトコルを利用してEC2インスタンスに安全な接続を実施する
  • Linuxエンジニアにはお馴染みのリモートマシン操作ツール
  • SSH(Secure Shell):クライアントとリモートマシン間の通信を暗号化するプロトコル
  • SSHコマンド:SSH方式によってリモートマシン上でコマンドを実行するコマンド。主にLinuxサーバーの操作に利用
  • SSHクライアント:SSHによるリモートマシン操作を支援するコマンドプロンプトタイプのソフトウェア

AMIイメージ

  • AMIイメージからOSセッティング方式を選択すること
  • 逆にEC2インスタンスの内容をAMIとしてバックアップ可能
    • OSの設定情報
    • サーバーの構成情報
    • ルートボリュームに構成されたEBSやインスタンスストアのデータ
  • AMIはリージョンにおいて一意のものであり、他のリージョンでそのまま利用できない
  • EC2インスタンスはAMIを利用して起動・バックアップ・共有することができる
    • OSの選択
      • 利用したいサーバーのOSの選択としてAMIを利用
      • 利用していたサーバーを復元する際にAMIを利用
    • EC2のバックアップ
      • 既存のEC2インスタンスからAMIを作成できる
      • EC2インスタンスをバックアップとして構成内容を保存する。EBSボリュームのスナップショットも含まれる
    • ゴールデンイメージ
    • 最適なEC2インスタンスの構成をAMIとした上で構成を複数利用することができる
    • 最適なEC2インスタンス構成を反映したAMIをゴールデンイメージと呼ぶ
    • AMIの共有
      • AMIを共有するユーザーのAWSアカウント番号を指定することで他アカウントに共有可能
    • リージョンの移動
    • AMIはリージョン内でのみ利用可能
    • 別リージョンにコピーは可能。このAMIはリージョンのAMIとして別AMIとなる。

EBS

  • EBSはEC2インスタンスと共に利用されるブロックストレージ
  • インスタンス上のワークロード(仕事量、作業負荷)などに利用
  • AWSは3つのストレージサービスを提供
    • ブロックストレージ
      • EC2にアタッチして活用するディスクサービス
      • ブロック形式でデータを保存
      • 高速・広帯域幅
      • 例:EBS、インスタンスストア
    • オブジェクトストレージ
      • 安価かつ高い耐久性を持つオンラインストレージ
      • オブジェクト形式でデータを保存
      • デフォルトで複数AZに冗長化されている
      • 例:S3, Glacier
    • ファイルストレージ
      • 複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス
      • ファイル形式でデータを保存
      • 例:EFS
  • EC2が利用するのはインスタンスストアとEBSの2タイプのストレージ
    • インスタンスストア
      • ホストコンピュータに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ
      • EC2の一時的なデータが保持され、EC2の停止・終了と共にデータがクリアされる
      • 無料
    • Elastic Block Store(EBS)
      • ネットワークで接続されたブロックレベルのストレージでEC2とは独立管理
      • EC2を終了してもEBSデータは保持可能
      • SnapshotをS3に保持可能
      • 別途EBS料金が必要
  • EBSの特徴
    • EC2にアタッチされるブロックレベルのストレージサービス
    • 他のAZのインスタンスにはアタッチできない
    • 1つのEBSを複数のインスタンで共有することはできない
      • ただし、プロビジョンドIPOSのみ複数インスタンスで共有することが可能 f:id:RyoheUdagawa:20210729220601p:plain
  • スタップショット
    • EBSはスナップショットを利用して取得する
    • 特徴
      • スナップショットでバックアップ
      • スナップショットからEBSを復元する際は別AZにも可能
      • スナップショットはS3に保存される
      • スナップショットの2世代以降は増分を保存する増分バックアップとなる
  • スナップショットとAMI
    • Amazon Machine ImageはOS設定のイメージであり、Snapshotはストレージのバックアップとなる
    • AMI
    • Snapshot
      • ストレージ・EBSのその時点の断面のバックアップとして保存するもの
      • ストレージの復元や複製に利用

S3

AWSは3つの形式のストレージサービスを提供

  • ブロックストレージ
    • EC2にアタッチ(接続)して活用するディスクサービス
    • ブロック形式でデータを保存
    • 高速・広帯域幅
    • 例:EBS、インスタンスストア
  • オブジェクトストレージ
    • 安価かつ耐久性を持つオンラインストレージ
    • オブジェクト形式でデータを保存
    • 例:S3、Glacier
  • ファイルストレージ
    • 複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス
    • ファイル形式でデータを保存
    • 例:EFS

## Simple Storage Service(S3)

  • 特徴

    • 高い耐久性
    • 安価なストレージ
    • スケーラブルで安定した性能
      • データは冗長化されて保存されデータ容量に依存しない性能がAWS側で保証される
    • 暗号化
      • 転送中や保存時にデータを暗号化可能
  • データ保存形式

    • バケット
      • オブジェクトの保存場所
      • 名前はグローバルでユニークな必要あり
    • オブジェクト
      • データの単位
      • S3に格納されるファイルでURLが付与される
      • バケット内オブジェクト数は無制限
    • データサイズ
      • データサイズは0KBから5TBまで保存可能

オブジェクトの構成

S3のオブジェクトは以下のような要素で構成されている

  • Key
    • オブジェクト名前
    • バケット内のオブジェクトは一意に識別する
  • Value
    • データそのものであり、バイト値で構成される
  • バージョンID
    • バージョン管理に用いるID
  • メタデータ
    • オブジェクトに付随する属性の情報
  • サブリソース
    • バケット構成情報を保存及び管理する為のサポートを提供f:id:RyoheUdagawa:20210731173813p:plain

www.sbcloud.co.jp

S3の整合性モデル

  • S3は高い可用性を実現するため、データ更新・削除には結果整合性モデルを採用
  • 同時書き込みはタイムスタンプ処理を実施

S3のアクセス管理

S3のアクセス管理は用途に応じて方式を使い分ける

  • IAMユーザーポリシー
    • IAMユーザーに対してS3サービスへのアクセス権限を設定することができる
    • 一元的にユーザー権限を管理する
  • バケットポリシー
    • バケットへのアクセス権をJSONで設定
    • 他アカウントへの許可も可能
    • バケット単位の高度なアクセス管理向け
  • ACL
    • バケットと個々のオブジェクトへのアクセス権限をXMLで設定する
    • 他アカウントへの許可も可能
    • 簡易的にアクセス管理向け
  • 署名付きURL
    • AWS SDKAWSのサービスをプログラムなどから操作できるようにするための開発キット)で生成した署名付きURLで3Sのオブジェクトへの一定時間アクセスを許可

S3のアクセス管理

S3はインターネットからパブリックアクセスの設定が可能

S3の機能

S3アクセスポイント

S3上の共有データセットを使用するアプリケーションへの大規模なデータアクセス管理を実施

  • アクセスポイントの作成
    • アプリケーション向けにS3パケット内にアクセスするためのアクセスポイントを作成
  • アクセス制限設定
  • VPCアクセス制限設定
    • VPCに対して特定のS3バケットへのアクセス制限を設定する
  • アクセス管理の実行
    • アプリケーション向けのアクセス対象を拡大・制限するなど容易にコントロール可能

S3アクセスアナライザー

アクセスポリシーに沿っているかを確認し、不正なアクセスが発生していないか、アクセスポリシーを管理する機能

ライフサイクル管理

バケット内のオブジェクト単位でストレージクラスの変更や削除時期などを設定することができる

レプリケーション

リージョン間を跨ぐクロスリージョンレプリケーションにより耐障害性を高める

バージョン管理

ユーザーによる誤操作でデータ削除などが発生してもバージョンから復元できる

  • 設定
    • バケットをバージョン管理する
    • バージョン管理されたオブジェクトを参照可能
    • ライフサイクル管理によって保存する期間の指定も可能
    • バケット削除時に古いバージョンの別途削除が必要

バックアップ

Glacierを利用してバックアップと復元を実施可能

アーカイブ

  • 複数リージョンをレプリケートすることが可能
  • S3オブジェクトデータをライフサイクル設定によりGlacierに移動 リストア
  • バージョン管理機能によって削除されたデータを復元するのが基本

利用状況の確認

S3の利用状況やS3のイベント発生を確認することができる

CORS

クロスオリジンリソースシェアリング(CORS)により特定のドメインにロードされたアプリケーションが異なるドメイン内のリソースと通信する方法 f:id:RyoheUdagawa:20210804224413p:plain

qiita.com

マルチアップロード

大容量オブジェクトをいくつかに分けてアップロードする機能

バッチオペレーション

S3オブジェクトの大量データに対して一括処理を実行することが可能

  • ジョブ
    • ジョブはS3バッチオペレーションの機能の基本単位でジョブを作成することがバッチオペレーションを作成
    • ジョブにはオブジェクトのリストに対して指定された操作を実行するために必要な全ての情報を登録
    • S3バッチオペレーションにオブジェクトのリストを渡し、それらのオブジェクトに対して実行するアクションを指定
  • マニフェスト

S3の用途

大量データを長期保存するという観点から用途を検討する

コンテンツ配信・保管

CMSから画像等のコンテンツデータの保管先にS3を利用する f:id:RyoheUdagawa:20210805220441p:plain

ログ・バッチの保管場所

ログファイルやバッチファイルの保存場所としてS3を利用する f:id:RyoheUdagawa:20210805220529p:plain

バックアップ・ディザスタリカバリ

バックアップの中長期の保存場所としてS3を利用する

WEBの静的ホスティング

S3のみで静的なWEBサイトをホスティングして構築可能

  • マネージドコンソールで単位で指定
  • 独自どめいんでバケット名として指定
  • 任意のドメインからアクセス時にCORSを利用
  • CloudFrontとの連携(経由での配信処理を推奨)

データレイク

S3はデータレイクとしてデータ活用のハブとして利用できる

AWS CLI

AWS CLIコマンドラインから複数のAWSサービスを制御・管理することが可能

S3の外部接続

標準的なストレージプロトコルを利用して外部システム環境とAWSのストレージサービスを接続するサービス

AWS Storage Gatewayの利点

  • AWSが有する機能や性能を活用できることが大きな利点
    • 標準的なストレージプロコトルを活用したシームレスな統合
    • キャッシュを活用した低レイテンシなアクセスが可能
    • AWSストレージサービスの堅牢性・低コスト・拡張性
    • 効率的なデータ転送
    • AWSのモニタリング・管理・セキュリティとの統合

AWS Storage Gatewayの用途

  • データ移転や保存などAWSストレージを利用したい場合に用いる
    • ビックデータ処理・クラウドバースディング・システム移行のためにデータをAWSストレージに移動させたいケース
    • バックアップ・アーカイブ・災害対策としてAWSにデータを保持
    • オンプレミス環境で容易にAWSストレージを活用

Storage Gatewayのタイプ

  • 利用するデータに応じて3つのゲートウェイを利用する
    • ファイルゲートウェイ
      • オンプレミスのファイルデータをAWS Storage Gateway経由でAmazon S3上のオブジェクトとして格納
    • ボリュームゲートウェイ
      • オンプレミス環境のディスクデータをAWS Storage Gateway経由でSanpshotとしてAmazon S3上に取得し、AWS環境でのDisaster Recoveryを実現
    • テープゲートウェイ
      • Storage Gatewayを仮想テープライブラリとして利用することで堅牢性の高い外部保管バックアップストレージを実現

Amazon S3 Glacier

バックアップなど中長期保存用のS3よりも安価なストレージ

  • S3と同じ耐久性で値段が安い
  • 一方で、データ取得などの迅速性がない

Glacierの仕組み

S3とは異なり、ボールトとアーカイブという単位でデータを保存

  • ボールト
    • ボールトとはアーカイブを格納するコンテナ
    • ボールトはリージョンに作成
  • アーカイブ
    • アーカイブは写真、動画、ドキュメントなどの任意のデータでS3 Glacierでのストレージの基本単位
    • アーカイブは一意のアドレスを持つ
  • ジョブ
    • アーカイブにSELECT クエリを実行したり、アーカイブを取得したり、ボールトのインベントリを取得したりする実行単位
  • 通知設定
    • ジョブの完了には時間がかかるため、ジョブの完了時にSNSと連携した通知設定が可能

AWSアーキテクチャ設計の基礎

AZの選択

  • 1つのリージョンにつき2つのAZを利用してアーキテクチャを設計することが基本(3つ以上はコスト効率が低下する)
  • マルチAZにサーバーやDBの冗長構成を確立させることで高い可用性を実現する f:id:RyoheUdagawa:20210808150656p:plain

VPC

2つ以上のVPCアーキテクチャを設計するのが基本となる

  • 1つVPC
    • 可用性が低下するため、アイデンティティ管理やハイパフォーマンスコンピューティングなどその用途は限られる
    • 1人などの小規模で利用する場合は2つ以上VPCを利用するのが面倒なケースもある
  • 2つ以上のVPC

サブネットの分割

  • サブネットはCIDR範囲で分割したネットワークセグメント
  • サブネットはインターネットアクセス範囲を定義するためlに利用する
  • サブネットのサイズは「/24」以上の大きいサブネットを推奨

  • パブリックサブネット

    • インターネットと接続が必要なリソースを揃える
    • インターネットとのアクセス制御に利用する
  • プライベートサブネット

  • 1つのAZに対して1つのパブリックサブネットと1つのプライベートサブネットが基本

  • プライベートサブネットに多くのIPアドレスを割り当てる

Well-Archtected Framework

  • 5つの設計原則
    • Reliability(信頼性)
      • 障害による中断・停止と障害復旧による影響を軽減するインフォストラクチャーを構成する
      • 設計事項
        • インフラストラクチャサービスの障害復旧の自動化など軽減設計
        • 復旧手順のテストによる検証
        • 需要変化に応じた水平方向へのスケーラビリティに高可用性の確保
        • キャバシティの推測をやめる
        • モリタリングと自動化を進める
      • 信頼性の主要なサービス
        • 基盤
          • IAM
          • VPC
          • Auto Scaling
          • ELB
          • Cloud Formation
        • 変更管理
          • CloudTrail
          • AWS Config
        • 障害管理
          • CloudWatch
    • Perfomance Efficiency(パフォーマンス効率)
      • システム要件のリリース最適化によるインフラの効率化
      • 設計事項
        • システム要件を満たすためのコンピューティングリソースを効率化する
        • システム要件やAWSサービスの進化に応じてAWSインフラの効率化を推進する
      • パフォーマンス効率の基本対応領域は以下4つ
        • コンピューティング
          • Auto Scaling
          • Lambda
        • ストレージ
          • EBS
          • S3
          • Glacier
          • EFS
        • データベース
          • RDS
          • Dynamo DB
          • Elastic search
          • Aurora
          • Redshift
        • 容量と時間のトレードオフ
          • Cloud Front
          • Elastic Cache
    • Security(安全性)
      • AWS内のデータ・システム・アセットの保護とモニタリングによりセキュリティを高める
      • 設計事項
        • 全てのレイヤーでのセキュリティを適用
        • アクセス追跡・モニタリングを確実な実施
        • 条件ドリブンのアラートをトリガーとしてセキュリティイベントへの応答を自動化
        • AWS責任者共有モデルに基づく対象範囲の保護に集中する
        • セキュリティのベストプラクティスの自動化
      • セキュリティの基本対応領域は以下の4つ
        • データ保護
          • ELB
          • EBS
          • S3
          • RDS
          • KMS
        • 権限管理
          • IAM
          • MFA
        • インフラ保護
        • 検出制御
    • Cost Optimization(コスト最適化)
      • 不必要なリソースの削減や最適な料金選択によりコストを削減
      • 設計事項
        • 不必要なリソース削減
        • 透明性のある費用
        • マネージド型サービスの利用によるコスト削減
        • 固定の償却コストを変動コストへと転換
        • スケールによるコストメリット
        • データセンターへの投資不要化  - コスト最適化の基本対応領域は以下
        • 需要と供給の一致
          • Auto Scaling
        • コスト効率の高いリソース
          • EC2 購入公式
          • Trusted Advisor
        • 支出の認識
          • Cloud Watch
          • 見積もりツール
        • 継続した最適化
          • AWS最新情報
          • Trusted Advisor
    • Operational Excellence(運用上の優秀性)
      • 運用上の優秀性とは計画変更が起こった場合や予期せねイベントの発生時において、自動化された運用実務及び文書化されテストされレビューされた手順があること
      • 設計事項
        • コードに基づく運用実施
        • ビジネス目的に沿った運用手順
        • 定期的かつ小規模で増加的な変更実施
        • 予期せねイベントへの応答テスト
        • 運用イベントと障害からの学習
        • 運用手順を最新のものに保持すること
    • 運用上の優秀性の基本対応領域は以下の3つ
      • 準備
        • cloud Formation
        • Codeシリーズ
        • Runbook Playbook
      • 運用
      • 進化

AWSのベストプラクティス

AWSのベストプラクティスとして11の原則を定義している

  • スケーラビリティの確保
    • 需要に変化できるアーキテクチャを設計する
    • 関連する主要サービス
      • EC2 Auto Recovery
      • EC2 Auto Scaling
      • Cloud watch
      • RDS
      • DynamoDB
  • 環境の自動化
    • システムの安定性・整合性及び組織の効率性を改善するための主要プロセスを自動化する
    • 関連する主要サービス
      • Cloud Formation
      • Codeシリーズ
      • ECS
      • Elastic Beastalk
      • OpsWorks
      • Cloud Watch
  • 使い捨てリソースの使用
    • サーバーなどのコンポーネントを一時的なリソースとして利用・設計する
    • 関連する主要サービス
      • EC2
      • Auto Scaling
  • コンポーネント疎結合
  • サーバーではなくサービス(サーバレス)
  • 最適なデータベース選択
    • ワークロードに応じた最適なデータベース技術を利用する
    • 関連する主要なサービス
      • Redshift
      • RDS
      • Dynamo DB
      • Aurora
      • Elastic search
  • 増大するデータ量対応
    • IOT/ビックデータなどで絶えず増加するデータの保持を効率的に実施する
    • 関連する主要サービス
  • 単一障害点の排除
    • AWSのサービスの多くは高可用が保証されているものが多いものの、以下の主要なサービスはELBなどによる高可用設計が必要
    • アーキテクチャで高可用性を実現すべきサービス
      • EC2
      • Direct Connect
      • RDS
    • 利用する主要サービス
      • ELB
  • コスト最適化
    • リソースが適切なサイズから必要に応じたスケールアウト・スケールインの実施と最適な料金プランの選択
  • キャッシュの利用
    • 繰り返し取り出すデータやコンテンツについてはキャッシュを利用する構成
    • 関連する主要サービス
      • Cloud Front
      • Elastic Cache
  • セキュリティの確保
    • 全てのレイヤー・業界・リソース内/外においてセキュリティを実装する f:id:RyoheUdagawa:20210809223156p:plainf:id:RyoheUdagawa:20210809223156p:plain

信頼性の設計

高可用性

  • 高可用性とはアーキテクチャにより自動でシステムのダウンタイムを限りなくゼロにすること
  • AWSアーキテクチャ設計において高可用なシステムを実現するかが重要なポイントとなる
  • 高可用なサービス利用
    • AWSのサービスの多くはAWS側で高可用に設計されている
  • 高可用なアーキテクチャ設計
    • 基本機能はユーザー側で高可用な設計をする必要がある
  • 高可用性の非機能要件

ELB(Elastic Load Balancing)

  • マネージド型のロードバランシングサービスでEC2インスタンスの処理を分散する際に標準的に利用する
  • 特徴
    • インスタンス間の負荷を分散する
    • 異常なインスタンスを認識して対応する
    • パブリック・プライベートどちらでも使用可能
    • ELB自体も負荷に応じてキャパシティを自動増減するスケーリングを実施
    • 従量課金で利用可能
    • マネージドサービスなので管理が不要
    • Auto Scaling、Route53、Cloud Formationなどと連携
  • 主要機能

    • ヘルスチェック
      • EC2インスタンスの正常・異常を確認し、利用するEC2の振り分けを行う
    • 負荷分散
      • 配下のEC2の負荷に応じて、複数のAZに跨るEC2インスタンスの負荷分散を行う
    • SSLサポート
      • ELBでSSL Terminationできる
    • スティッキーセッション
    • Connection Draining
    • S3へのログ保管
  • ELBの種類

    • CLB
    • 初期に提供されたELB
    • 標準的なL4/L7におけるロードバランシングが可能だが複雑な設定はできない