SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【AWS】ソリューションアーキテクトアソシエイト対策②(S3、Lambda、その他)

続きます。

S3(Amazon Simple Storage Service)

概要と関連記事

インターネット経由で利用できるオブジェクトストレージサービス。
バケットにオブジェクト(公開物など)を格納することで管理する。

以下の記事でサービス自体の利用していますが、かなり部分的な使い方しかできておらず、SAAの勉強を始めて、ストレージとして利用することによって他のサービスと連携を行うことによって真価を発揮するものなのかなという印象を持ちました。

www.wantanblog.com


S3やLambdaは他のサービスとの連携を行うアーキテクチャが紹介されることが多いようです。
また他のサービス等と比較したときに、S3は高速なトランザクション処理には向かないようです。


S3に関する基本用語

・バケット
オブジェクトの格納場所。グローバルで一意に設定される。

・オブジェクトキー
オブジェクトを一意に特定するためのキー

・プレフィックス
S3にはフォルダという概念が存在しないため、階層構造はプレフィックスによって表現される。

・バージョンID
バージョニングするためのID。

・VPCエンドポイント
VPC内から接続するためのエンドポイント。

S3の構成と特徴

耐久性
イレブンナイン(99.999999999%)の耐久性を持つ

結果整合性
保存されたファイルは同一リージョン内の3か所以上のアベイラビリティゾーンに複製保存される。
この特徴からS3は結果整合性となる。
対象データ(ファイル)を更新、削除した場合には、最終的な整合性は担保されるが、途中では旧バージョンを読み込む可能性がある。



【ストレージの種類】

・S3標準
デフォルトで作成されるストレージ。高頻度アクセスな場合に用いる。

・S3 Intelligent-Tiering
アクセス頻度に応じて、効率のよいストレージクラスを自動選択する。
(なんでもこれにしちゃダメなの??)

・S3 標準 – 低頻度アクセス (S3 標準 – IA)
その名の通り、アクセスが低頻度なデータを格納するのに適している。
S3標準と同様の耐久性や性能を低コストで利用できるが、データの取り出しに課金が行われる。

・S3 1 ゾーン – 低頻度アクセス (S3 1 ゾーン – IA)
上記の「S3 標準 – IA」と使用シーンは同様。
特徴としては1つのアベイラビリティゾーンにのみ保存され、コストはさらに低くなる。

・S3 Glacier (S3 Glacier)
低コストのストレージで、データのアーカイブに用いられる
容量当たりのコストは非常に安くて済む、取り出しに手続きが必要だったり通常はアクセスしないデータ(アーカイブ)が適している。オンプレでいうテープ保存の代用的な用途になる。


参考(AWS公式):ストレージクラス - Amazon S3 |AWS


【S3の機能】

・バージョニング
固有のバージョンIDを付与することによってオブジェクトを複数世代で管理する。世代は差分ではなく別のオブジェクトとして存在するため、容量の考慮は必要となる。

・静的ウェブサイトホスティング
私が記事を作成した機能ですね。
単純なhtmlなど、静的なコンテンツのみを配置できる。ホスティング機能を有効かすることによってアクセス可能となる。

・暗号化

Amazon S3 のデフォルトの暗号化により、Amazon S3 バケットのデフォルト暗号化の動作を設定できます。バケットにデフォルト暗号化を設定して、バケットに保存される際すべてのオブジェクトが暗号化されるようにします。オブジェクトは、Amazon S3 で管理されたキー (SSE-S3) または AWS Key Management Service (AWS KMS) カスタマーマスターキー (CMK) のいずれかで、サーバー側の暗号化を使用して暗号化されます。
引用元:Amazon S3 バケットのデフォルト暗号化を有効にする方法 - Amazon Simple Storage Service

暗号化は大別して3種類存在し、AWS側に管理を任せるか、利用者が管理を行うか選択できる。
デフォルトで有効になっており、オブジェクトをバケットに格納する際に暗号化され、取り出す際に復号される。

・署名付きURL
有効期限を設定し、S3オブジェクトへの操作を有効にする際に用いられる。
非AWSアカウントユーザの利用を想定しているため、他のユーザが使用するwebアプリ等からのファイル操作もできる。


・アクセス制御
以下のようなアクセス制御を行うことによって、アカウントごとの制御や誰でもアクセスできるようにアクセス権を設定できる。

IMAポリシーによるアクセス制御
ACLによるアクセス制御
バケットポリシーによるアクセス制御
パブリックアクセス制御

Lambda(Amazon Lambda)

ラムダと読みます。

概要と関連記事

EC2と比較して、利用者自身がサーバ管理を必要としないサーバレスであること、また処理の実行時間に制限(15分?)があるため、比較的軽量な処理を実行するのに適している。

軽く見た感じだと、関数の中身というよりは他のサービスとの連携が重要になると思われます。

記事でも紹介している通り、実践的には「Amazon API Gateway」やNoSQLである「dynamoDB」(dynamoDBは別記事にてまとめる予定)などとの連携や、イベントドリブンである特徴からS3や「CloudWatch」との連携が試験的には重要になると思われます。

関連記事

www.wantanblog.com

www.wantanblog.com


Lambdaの特徴

【課金体系】
Lambdaの課金はリクエスト量×処理量により算出される。
稼働時間ではなく処理数に依存するため、定常的にリクエストが発生するシステムよりは局所的にリクエストが発生するシステムに向いている。

【Amazon API Gatewayとの連携】

ブラウザ等からHTTP(S)接続を行いたい場合は「Amazon API Gateway」を経由させてAPIを作成する。
実際にはAPI GatewayでLambdaにイベント通知を行っている。


Lambda単体だとSAA対策としてはあまりかくことがないけど、他サービスとの連携がでてきたら相関関係をまとめなおしにくるかもしれません。

その他のコンピューティング系サービス

ここではその他のコンピューティング系サービスとして、仮想環境を提供する「Docker」関連のサービスについて記しておきます。この辺は実機学習でも全く触ったことがないところで理解が浅い・・・
引用引っ張りまくりになりました。

そもそも「Docker」とは?

少し脱線になってしまいますが、この「Docker」まだ全く触ったことないけどできたら勉強したいと思っている技術なんですよねぇ。
最近は使うことも「普通」になってきているようですし、時間ができたら少しでもいいからやりたいな。

Docker(ドッカー[2])は、コンテナと呼ばれるOSレベルの仮想化(英語版)環境を提供するオープンソースソフトウェアである[3]。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。
引用元:Docker - Wikipedia

・データプレーン
コンテナが実行される実行環境を指す。データプレーンのOS上でコンテナが実行される。
⇒FargateやEC2が該当

・コントロールプレーン(オーケストレーションサービス)
コンテナの実行環境や死活確認などのコンテナ管理を担う。
⇒ECSやEKSが該当

・レジストリ
コンテナの格納場所。データプレーンへのコンテナ配置(デプロイ)を行う。
⇒ECRが該当

ECR(Amazon Elastic Container Registry)

Amazon Elastic Container Registry (ECR) は、完全マネージド型の Docker コンテナレジストリです。このレジストリを使うと、開発者は Docker コンテナイメージを簡単に保存、管理、デプロイできます。Amazon ECR は Amazon Elastic Container Service (ECS) に統合されているため、開発から本稼働までのワークフローを簡略化できます。
引用元:Amazon ECR(Docker イメージの保存と取得)| AWS

この辺は使用経験がないと略語が覚えにくい感じがする。
ECRはレジストリに該当する。レジストリはコンテナを登録、保管する場所だからRegistry だと。

AWS Fargate

AWS Fargate は、サーバーやクラスターの管理の必要なしにコンテナを実行するための、Amazon ECS に対応したコンピューティングエンジンです。AWS Fargate を使用すると、コンテナを実行するために仮想マシンのクラスターをプロビジョニング、設定、スケールする必要がありません。これにより、サーバータイプの選択、クラスターをスケールするタイミングの決定、クラスターのパッキングの最適化を行う必要がなくなります。
引用元:AWS Fargate(サーバーやクラスターの管理が不要なコンテナの使用)| AWS

Fargateはデータプレーンに該当する。
コンテナ管理機能で見たときにはEC2と同じ役割になるが、コンテナ管理に特化したマネージドサービスであるため、管理の手間が削減でき本来の開発などに注力しやすくなる。

ECS(Amazon Elastic Container Service)

Amazon Elastic Container Service (Amazon ECS) は、Docker コンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスです。これにより、コンテナ化されたアプリケーションを AWS で簡単に実行およびスケールできます。Amazon ECS では、独自のコンテナオーケストレーションソフトウェアをインストールおよび操作したり、仮想マシンのクラスターを管理およびスケールしたり、それらの仮想マシン上のコンテナをスケジュールしたりする必要はありません。
引用元:Amazon ECS(Docker コンテナを実行および管理)| AWS

ECSはコントロールプレーンに該当する。
後述するEKSと比較すると、データプレーンにEC2とFargateが用いれる点が最大の特徴となる。
逆に言えば、Fargateを用いる場合はECS一択となるため、管理負荷を下げたい場合などは必然的にECSを用いることが推奨となる。

EKS(Amazon Elastic Kubernetes Service)

Amazon Elastic Kubernetes Service (Amazon EKS) では、コンテナ化されたアプリケーションのデプロイ、管理、スケールを Kubernetes を使って AWS で簡単に実行できます。
引用元:Amazon EKS(AWS でマネージド Kubernetes を実行)| AWS

EKSはコントロールプレーンに該当する。
基本的にはECSと同様のサービスと考えてよさそうだが、「Kubernetes」のコンテナ管理サービスを採用している点とデータプレーンにはEC2のみしか使用できない点が明確に異なる。

Kubernetes(クバネティス/クバネテス/クーべネティス、K8sと略記される)は、コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、オープンソースのコンテナオーケストレーションシステムである。
引用元:https://ja.wikipedia.org/wiki/Kubernetes

Kubernetesについてはまったく知識がないので不利。

その他のストレージ系サービス

この辺は雑にいくしかない。実際のところ試験的にどのくらい重要なんだろう。

EFS(Amazon Elastic File System)

Amazon Elastic File System (Amazon EFS) は、AWS クラウドサービスおよびオンプレミスリソースで使用するための、シンプルでスケーラブル、かつ伸縮自在な完全マネージド型の NFS ファイルシステムを提供します。アプリケーションを中断することなくペタバイト規模にオンデマンドでスケールするよう設計されており、ファイルの追加および削除に合わせて自動で拡大および縮小されるため、拡張に合わせて容量をプロビジョニングおよび管理する必要がなくなります
引用元:Amazon EFS(EC2 用フルマネージド型ファイルシステム)| AWS

ファイルシステム。EC2+EBSの組み合わせでファイルシステムを構築する場合と比較すると、構築や管理の手間で省ける。
また、複数のアベイラビリティゾーンから読み書きが可能であるため、大量データの分散処理などに向いている。

AWS Storage Gateway

AWS Storage Gateway は、オンプレミスから実質無制限のクラウドストレージへのアクセスを提供するハイブリッドクラウドストレージサービスです。お客様は Storage Gateway を使用して、ストレージ管理を簡素化し、主要なハイブリットクラウドストレージのユースケースでコストを削減できます。ユースケースには、テープバックアップのクラウドへの移行、クラウドベースのファイル共有によるオンプレミスストレージの削減、オンプレミスアプリケーション用に AWS 内のデータへのアクセスを低レイテンシーで提供するといったことに加え、移行、アーカイブ、処理、災害対策の各種ユースケースなども含まれています。
引用元:AWS Storage Gateway(ハイブリッドストレージの統合)| AWS

なんと、オンプレミス側に設置するサービスだそうです。
主にはオンプレのストレージとS3をつないで、移行やバックアップのための連携を担う感じか。


・ファイルゲートウェイ
オンプレ側をファイルシステムとして扱い、S3をバックアップとして利用する構成。

・ボリュームゲートウェイ
オンプレのサーバからiSCSIデバイスとしてマウントできるストレージを提供する感じ??
大別して2種類存在する。

⇒キャッシュボリューム
S3にデータのプライマリコピーを保持する構成。プライマリストレージのコストを大幅に削減する。
⇒保管型ボリューム
オンプレ側にプライマリコピーを保持する構成。S3にはスナップショットを保管する。

・テープゲートウェイ
オンプレの物理テープの代替としてS3を利用する構成。アーカイブとかに使用する。



パッと書いてもテープぐらい極端なものじゃないと使い分ける利用シーンがいまいち思い浮かばないな。
こんなんで大丈夫か?インフラ構築をまともにやったことのない弱みですね。


こんな雑な感じでやっても結構時間かかるな果たしてどこまでいけるのか・・・