AWSの仕組みがキーワードベースで理解できるようまとめてみた2

AWSの仕組みがキーワードベースで理解できるようまとめてみました。

1. S3

S3とはAWSのサービスに含まれる機能のひとつで、「Amazon Simple Storage Service」の略称です。

オブジェクトストレージサービスの一種であり、データ容量を気にすることなく保存することができます。

オブジェクトのファイル単位での出し入れが可能なので、その場に応じて自由な使い道が想定され、より柔軟なデータ保存が実行できるのが特徴となっています。

業務全体で利用しているデータの容量が保存しきれなくなっている、豊富なデータの分析・保管に使える媒体が欲しい、そんなときにはAWSのS3に魅力を感じられるでしょう。


既に世界中の企業で利用されていて、保存されているアプリケーションデータ数は数百万にものぼるとのこと。

大手企業が頼るほどのストレージサービスとして浸透しているので、これからもS3はその利便性を高め、あらゆる事業に欠かせない存在になると予想できるでしょう。

S3はストレージ(データ保存する場所)を提供する。

S3の操作はマネジメントコンソールのダッシュボードから行う。


S3ーオブジェクト

S3で扱うエンティティの単位。

わかりやすく言えば、テキストや画像などのファイルのことを指す。


S3ーバケット

オブジェクトを格納するコンテナのこと。

わかりやすく言えば、S3ではドライブのことをバケットという。

すべてのオブジェクトはバケットに格納される。

S3を使用する時は、まずバケットを作ることから始まります。


S3ーバケット名

S3バケットの名前は、ほかのAWSユーザーも含めて、唯一無二の名前でなければならない。

もしWebサーバーとして使用する場合は、ドメイン名をバケット名とする。


S3ーオブジェクトキー

バケット内のオブジェクトを区別するための識別子。

1つのオブジェクトには必ず1つのキーを被らないように設定します。

例えば、user_name.txtというファイルをUserというディレクトリにそのままの名前で保存すると、 User/user_name.txtがキーとなります。


S3ーオブジェクトメタデータ

オブジェクトの作成日とか、オブジェクトのサイズはいくらだとかを表すデータ。

オブジェクトを作成したらユーザーが変更することは出来ないのが特徴。


S3ーバケットポリシー

該当のバケットにアクセスできるユーザを指定します。


S3ーユーザーポリシー(IAMポリシー)

アクセスできるバケットを指定します。


S3ーAccess Control List(ACL)

自分以外のほかのAWSアカウントに対して、「読み取り/書き込み」それぞれの操作を「許可」もしくは「拒否」に設定できる一覧のことです。


S3ーWebサイトホスティング

静的なwebサイトをホスティング(一般公開)すること。

静的なwebサイトをホスティングするには、バケットをそのままWebサイトとして公開します。

URLを設定し、バケットを誰でもアクセスできるようにするということです。

htmlファイルをサーバにアップロードしておき、リクエストに対してそのままそのファイルをレスポンスする。


S3ーアクセスログ

アクセスログとはサーバーに対しどのようなリクエストがあったかを記録する機能です。

ログの内容として、バケット所有者、バケット名、リクエスタ、 時刻やレスポンスの時間、アクション、レスポンスのステータス、エラーコード

2. RDS

Amazon Relational Database Service (以下、RDS)はリレーショナルデータベースを提供するサービスです。


オペレーティングシステムやデータベースエンジンの管理はAWS側で行われ、利用者は数分でデータベースを起動してアクセスできます。

EC2同様、従量課金となっており、RDSインスタンスが起動している時間に対して利用料が発生します。

現時点でRDSでは次の6つのデータベースエンジンをサポートしています。


・MySQL

・MariaDB

・Oracle

・SQL Server

・PostgreSQL

・Amazon Aurora



上記の内、Amazon Auroraは、クラウド向けにAWSが構築したデータベースです。

MySQLおよびPostgreSQLと互換性があります。

提供されるスタイルはEC2とよく似ています。

インスタンスとしてVPC上に配置し、インスタンスクラスも複数用意されています。

EC2と大きく異なる点は、RDSは「マネージドサービス」であり、アップデートなどが自動で行われることです。

バックアップなど面倒な管理タスクも自動化されており、管理者が行う必要はありません。


AWS Database Migration Service(DMS)を使用すれば、既存のデータベースからの移行や複製ができます。


RDSーAmazon Aurora

AWSが提供している、MySQLとPostgreSQL との互換性があるAWSオリジナルのフルマネージド型のデータベースです。

標準的な MySQLと比べて 5 倍、標準的なPostgreSQL と比べて 3 倍の処理能力があります。

また、読み取り専用のインスタンス(リードレプリカ)を最大15個設置することができます。

読み書きを行うプライマリのDBとは別に、読み取り専用のレプリカを建てることで、アクセス頻度の高いデータに対して処理速度を向上させることができます。

互換性があるため、オンプレミス環境のMySQLやPostgreSQLからの、標準的なインポートツールやスナップショットを使用して移行ができるのはもちろんのこと、 SQLもそのまま使用でき、コード、アプリケーション、ドライバー、ツールなど、プログラムやソフトウェア側の調整が必要ありません。


RDSーAmazon DynamoDB

Amazon DynamoDBは、Amazon Web Services(AWS)が開発したマネージドデータベースサービスの1つです。

NoSQLというタイプのキーバリューストア型のデータベースであり、通常のデータベースとは大きな違いがあります。

リレーショナル型の特徴は、表であること、テーブル同士が連携していることです。

つまり、事前に形式をしっかり決めておかなければなりませんし、形式通りのデータしか入力できません。

テーブル同士が連携(リレーション)していることは、ストレージの節約になりますが、処理が遅くなる側面もあります。


キーバリューストア型は、納めるデータに書式はありません。

項目数(列数・カラム数)もバラバラでよければ、データ型も指定しません。 テーブル同士の連携もありません。

そのため、SQLが使えず、高度な検索ができない弱点がありますが、そのかわり、リレーショナル型よりもはるかに高速に応答します。

DynamoDBはVPCなしで接続できるので、Lambdaなどの非VPCのアプリケーション実行環境と相性がよいというメリットもあります。


RDSーAmazon ElastiCache

Amazon ElastiCacheは、インメモリ型のデータベースです。

インメモリ型とは、データベース操作のたびに外部記憶装置と読み書きを行うのではなく、 頻繁に読み出しのあるデータ

3. ACM

ACMとはAWS Certificate Managerの略で、AWSのサービスの1つです。

また、SSL証明書発行サービスを指します。

ACMを使うことで、簡単かつ安価にSSLの対応、そしてSSL証明書の更新が出来ます。


ACMが発行したSSL証明書は、ユーザーのプライベートネットワークリソースや、AWSの様々なサービスに導入できます。

4. Route53


Amazon route53はDNS(ドメインネームサービス)です。

復習しておくと、DNSとは、Webブラウザに入力した「http://wwww.XXX.com/」のようなURLを、「IPアドレス」に変換するしくみです。


Amazon route53では、アクセスしてもらいたいアドレスを、実際に使用しているEC2やS3などのAWSサービスのエンドポイント(接続点)に結び付けます。

これを名前解決といいます。

Amazon route53ではドメインの取得もできます。


ドメインの取得とは「gigyo.jp」や「mofukabur.com」などのドメインの使用権を買って、レジストラ(ドメイン登録を担当する組織)に申請することです。

Amazon route53には、トラフィックが1つのエンドポイントに集中しないようにしたり、 一箇所のサービスに障害が生じたとき速やかにほかの場所に切り替える機能もあり、ルーティングを柔軟に管理できます。

5. AWS Lambda


AWS Lambdaは、データやリクエストのリアルタイム処理やバックエンドの処理を、自動実行するしくみです。

このようなしょりのための専用サーバーの準備や管理する必要がなく、必要なイベントに応じて自動実行されます。

常駐サーバーとは異なり、プログラムの実行時にのみ課金されます。

Lambda関数と呼ばれる形式の関数を用いますが、これは特別新しい言語ではありません。

よく知られているプログラミング言語で書いたコードを基に「Lambdaコンソール」などを用いてグラフィカルに作成できるのです。

使える言語はJava、C#、Python、Ruby、Node.js、Goなどで、よくある目的のためのテンプレートも揃っています。


Lambda関数は、Lambdaサービスに保存されます。

何らかのトリガーで、特定のAWSリソースにおいて実行されます。

有名な例は、S3バケットに画像が置かれると、サムネイル作成関数が呼び出され、サムネイルを自動的に作成する例です。


LambdaはプログラムのコードをLambdaサービスにアップロードしておくと、特定のAWSサービスで実行できるしくみです。

アップロードするプログラムのコードを「Lambda関数」といいます。


Lambdaを呼び出す方法は3種類あります。

有名なのは、S3やSES、APIゲートウェイと組み合わせるパターンです。

SES(Amazon Simple Email Service)は、メールを受信したときにアクションを起こすといった形で使います。

APIゲートウェイは、WebブラウザなどからAPIが呼び出されたりしたときになんらかの処理を実行するといった形で使います。