38
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初学者必見】これだけ分かればAWSを使える! 10 の重要概念・サービスを徹底解説(おまけ 14選)

Last updated at Posted at 2024-10-28

はじめに

AWSはAmazonが提供している便利なクラウドサービスとして有名ですが、初めて使おうと思うと何やら知らない言葉が沢山出てきて圧倒されてしまう人もいるのではないでしょうか?

そのような方々のために、この記事ではAWSを使うにあたって最低限知っておきたい10の重要概念・サービスをピックアップして解説します!

紹介するのは以下の概念・サービスです。

  • マネジメントコンソール
  • リージョン
  • アベイラビリティゾーン
  • EC2
  • S3
  • VPC
  • RDS
  • Lambda
  • IAM
  • CloudWatch

ここで紹介する重要概念・サービスを理解すればAWSを使っていくための土台が出来上がります。ぜひこの機会にAWSの根幹をなす概念・サービスを抑えてみましょう!

このくらいは当然知っていると思われた方向けに、おまけとしてその他のよく使うサービスの紹介も行います。おまけで紹介しているサービスもよく使われるものばかりなので知らないものがあれば、この機会に触れてみてはいかがでしょうか?

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よろしければOrganizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただいた方は、ぜひこちらまでご連絡ください。

そもそもAWSとは何か?

AWS(Amazon Web Services)は一言で説明すると、
システム運用に必要な様々な機能を提供しているクラウドサービス
です。

クラウドサービスとは?

クラウドサービスとはインターネット経由で提供されるサービスの総称です。

AWSのようなクラウドサービスは世界中にデータセンターを保有しており、これらの計算資源を適切に管理することでサービスを提供しています。これにより、サービス利用者は 自身で物理サーバなどを管理することなく計算資源にアクセスする ことが出来るようになります。

クラウドサービスには SaaS、PaaS、IaaSの分類がありますが、AWSは使う計算資源を細かく管理できる IaaS(Infrastructure as a Service)に該当します。AWSは IaaSの世界シェア1位 の最も知名度の高いクラウドサービスの一つとなっています。

具体的にはどのようなサービスがあるか?

AWSが提供しているサービスの中には

  • Webサーバ
  • IPアドレス
  • ドメイン
  • データベース
  • ストレージ

などのウェブアプリに必須のものだけなく、

  • ファイアウォールの設定
  • サービスのログ解析
  • 機械学習モデルの構築
  • プログラムのビルドやデプロイ

を行うサービスまで用意されており、2024年10月現在では328種類ものサービスが提供されています。

10の重要概念・サービスの紹介

AWSの基本的な理解が出来たところで本題に入ります。

実際に手を動かすことが出来る方は、時間のある時にでも自分で手を動かしてみてください。自分の手で操作することで学習効果を更に高めることが出来るでしょう。

その1 AWS マネジメントコンソール

一言で言うと、マネジメントコンソールはAWSの操作画面のこと です。ここではアカウントで利用しているサービスの利用状況や設定・料金などをまとめて管理できます。

リソース(計算資源)をIaCでコード管理する場合を除けば、ほとんどのインフラ構築の作業はマネジメントコンソールで完結します。規模の大きいプロジェクトではリソースが非常に多くなり、ヒューマンエラーが増えるのでIaCでリソース管理することが推奨されます。

補足:IaCとは

Infrastructure as Codeの略で、インフラ構築の際の設定項目をコードとして管理することで開発環境から本番環境への移行時に設定ミスを減らすことなどが目的。

使い方 [このリンク](https://console.aws.amazon.com) にアクセスすると以下のようなサインイン画面が表示されます。

サインイン画面

AWSアカウントを持っている場合はここからログインすることが出来ます。AWSアカウントを持っていない場合は 新しいAWSアカウントを作成 から作成することが出来ます。

無料枠もあるのでまだ持っていない方は一度自分でアカウントを作ってみることをおすすめします!

初めてログインすると以下のような画面が表示されます。この画面からAWSのサービスを選択して使用する方法はこれ以降の章で説明していきます。

スクリーンショット 2024-10-25 020613.jpg

その2と3 リージョンとアベイラビリティゾーン

AWSの仕組みを理解するための鍵となる考えにリージョンとアベイラビリティゾーンがあります。

本記事の初めで、AWSは世界中にデータセンターを保有していてそれらの計算資源を管理してユーザに提供している、という話をしました。これについて、より詳細に解説します。

リージョンとは、AWSが契約しているデータセンターが集中的に存在している地域のこと です。2024年10月現在では、世界で34の地域でAWSが提供されています。それぞれのリージョンの中には概ね3つのアベイラビリティゾーンが含まれます。

アベイラビリティゾーンとは、1つ以上のデータセンターを有するそれぞれが独立したデータセンター群のこと です。複数のデータセンター群を使うことで自然災害などの障害に強いクラウドサービスを作ることが出来ます。

これらの情報を視覚化すると以下の図のように表すことができます。
注:AZはアベイラビリティゾーン、DCはデータセンターの略

リージョンとアベイラビリティゾーン

補足:データセンターとは

サーバやネットワーク機器などの装置を設置・運用することに特化した建物のこと。大量のコンピュータがラックに収納されている。

その4 Amazon EC2

EC2 は Elastic Compute Cloud の略で、その名の通り柔軟に計算資源を管理することが出来るサービス となっています。

自分で使いたい計算資源のインスタンスタイプを選択することでコストを最適化することが出来るほか、一時的なイベントのためにサイトを用意する場合にもインスタンスサイズを大きく設定することで簡単に計算資源を調達することが出来ます。

インスタンスタイプによって、CPU・メモリ・ストレージ・ネットワーク帯域幅のどれに特化しているかが変わるので用途に応じて適切なタイプを選択することが出来ます。メモリを最適化したい場合やGPUを用いた高速な計算をしたい場合などで選ぶべきインスタンスタイプは異なります。

インスタンスの性能とサイズに応じて料金は高くなりますが、見積りが難しい場合にも簡単に作って壊すことが出来る点は便利な点の一つです。

また、インスタンスの作成時にはマシンイメージを指定することでOSやアプリケーションソフトウェアを導入した状態で仮想マシンを使うことが出来ます。

補足:インスタンスとは

AWS上で稼働している仮想サーバのこと。
ユーザ視点では一つの物理サーバのように扱うことが出来る。

使い方

1. EC2 インスタンスの起動

まずマネジメントコンソールでサービス一覧または検索バーからEC2のダッシュボードを開きます。

EC2ダッシュボード

この画面で「インスタンスを起動」をクリックします。すると以下のような画面に遷移し、インスタンスの設定を行うことが出来ます。

EC2インスタンス

名前は"TestApplicationServer"とし、マシンイメージで用いるOSはデフォルトのままAmazon Linuxを使用します。さらにインスタンスタイプもt2.micro、VPCもデフォルトの設定でストレージも最小の8GBとします。

キーペアには新しく作成したキーペアを用います。また、セキュリティグループの設定はあとでSSH接続が出来るように自分のIPからのSSHを許可するようにします。

EC2インスタンス2

ここまでの設定が済むとEC2を作成することが出来ます。「インスタンスを起動」をクリックし、正常に起動すると以下のような画面が表示されます。

EC2起動

2. EC2 インスタンスへの接続

次のステップと書かれている下の「インスタンスに接続する」をクリックします。

EC2インスタンス接続

ここではSSH接続によってアクセスを試みます。上の画像に示されているコマンドを参考にしてターミナルで以下のコマンドを入力することでインスタンスへの接続を行うことが出来ました。

> ssh -i {作成したキーペアのファイルのパス} ec2-user@{パブリック IPv4 DNS}

EC2インスタンス接続成功

その5 Amazon S3

S3 は Simple Storage Service の略で、様々な用途に応じてデータを保管することが出来るサービスになっています。

機械学習などのために用いる大規模データを保存したり、ログを長期間使用しないまま保管しておいたり、すぐに使いたいデータを一時的に保存しておくといった場合でもそれぞれの用途でコスト効率の高い選択肢が用意されています。S3のコストは保存容量+転送量で決定されるのでそれらのコストのバランスが適したストレージクラスを選ぶことが大切です。

例)長期間の保存用 →{保存容量コスト:低,転送量コスト:高}

S3ではバケットと呼ばれる格納場所に任意の形式のファイル(オブジェクトとも呼ばれます)を保存することが出来ます。バケットは後からスケールアップ・ダウンが可能です。

S3にはオブジェクトを静的Webサイトとして公開したり、直感的なUIでクエリ操作を行えたり、アクセス権限を細かく設定することが出来るといった便利な機能がいくつも備わっています。

使い方 #### 1. S3バケットの作成

EC2の時と同様にS3の画面に移動し、「バケットを作成」をクリックします。以下の画面に辿り着いたら設定項目を入力していきます。

S3バケット

バケットタイプは汎用、バケット名は"testappbucket-1"とし、ACL無効、パブリックアクセスはブロック、バージョニングは有効、暗号化はS3のマネージドキーで行うように設定をしてバケットを作成しました。

S3バケット作成

2. オブジェクトのアップロード

次にバケットの名前をクリックして以下の画面に移動します。

S3バケットページ

「アップロード」を押して以下の画面で「ファイルを追加」をクリックすることでローカルからファイルをアップロードすることが出来ます。

S3バケットアップロード

以下のような画面になればファイルをアップロード出来ていることになります。ここでアップロードしたファイルはローカルへのダウンロードや静的Webサイトとしてインターネット上に公開することが出来ます。

S3アップロード完了

その6 Amazon VPC

VPCはAWSが提供する仮想ネットワークサービスであり、Virtual Private Cloudの略です。EC2のインスタンスなどをインターネットに接続するためのネットワークの設定を担っています 。一つのVPCの中には複数のサブネットを配置することが出来ます。

インターネットに接続するためにはインターネットゲートウェイとルーティングの設定を行う必要があります。セキュリティ対策も当然可能で、インスタンスに対するファイアウォールとして セキュリティグループ を設定し、サブネットに対する ネットワークACL を設定することが出来ます。

ファイアウォールとは

内部のネットワークに外部からアクセスする通信を許可・ブロックする仕組み。

ACLとは

Access Control Listの略。特定のデバイスに対するアクセスを制御する仕組み。

使い方

初めにVPCのダッシュボードに移動し、「VPCを作成」をクリックします。

VPCダッシュボード

以下の画面に移動したらVPCの設定を行います。「VPCなど」を選択するとデフォルトで2つのAZにプライベート・パブリックの2つのサブネットを配置するような構成になっています。この画面からネットワーク構成を選択するだけでDNSホスト名の有効化・DNS解決の有効化・インターネットゲートウェイの作成と配置・ルートテーブルの作成までを1クリックで行ってくれます。

VPC設定

先程EC2を起動した際にはデフォルトVPCを利用しましたが、今回のような手順で作成したVPCをEC2の配置場所として指定することも出来るようになります。

その7 Amazon RDS

RDSは代表的なリレーショナルデータベースのサービスである MySQL、MariaDB、PostgreSQL、Oracle Database、SQL Server、Db2、Amazon Auroraの7種類のサービスをクラウド上で利用できるサービスです。

RDSで作成できるデータベースインスタンスはEC2などのように用途に応じたインスタンスクラスとサイズを設定することが出来ます。RDSはマネージドサービスであるため、データベースサービスのアップデートは自動で行われます。

一般的なインフラ構成の例として、EC2にソフトウェアを配置してデータベースをRDSに構築してこれらを連携させるというものが考えられます。RDSの特徴としては、自動バックアップ機能と負荷分散機能による応答の高速化があります。

使い方

RDSはEC2インスタンスと同様にVPCのサブネットに配置することができます。これで適切なソフトウェアを走らせるEC2インスタンスからアクセスできるようになります。

以下はAWSの公式に想定されている一般的な構成の例です。

con-VPC-sec-grp.jpg

以下では、このような構成でインフラ構築を行う方法を解説します。

1. DBサブネットグループを作成する

前項で作成したVPCのサブネットにはインターネットからのリクエストを処理するためのパブリックサブネットとVPC内部からのリクエストを処理するプライベートサブネットが存在しています。

パブリックサブネットの設定はEC2の項で扱ったように自分のIPからSSH接続を許可するようにします。ここではプライベートサブネットの設定も行います。

VPCのダッシュボードからセキュリティグループに移動し、「セキュリティグループを作成」をクリックします。

image (10).jpg

セキュリティグループの名前を "test-private-sg" として、作成済みのVPCを選択します。

image (11).jpg

インバウンドルールを編集し、タイプに "MySQL/Aurora" を選択することでEC2インスタンスから MySQL のトラフィックを許可する設定に出来ます。

次にDBインスタンス用のサブネットグループを作成し、VPC内にRDSを配置します。まずRDSのダッシュボードを開き、サイドバーから「サブネットグループ」を選択します。

スクリーンショット 2024-10-26 143412.jpg

この画面から「DBサブネットグループを作成」をクリックし、以下の画面でサブネットグループの設定を行います。

スクリーンショット 2024-10-26 164044.jpg

名前と説明を適切に設定して、VPCの項で作成したものを選択します。更に「サブネットを追加」の項ではプライベートに設定してあるサブネットの識別子を選択します。設定が完了したら作成を行い、以下のような画面に遷移したらOKです。

スクリーンショット 2024-10-26 164811.jpg

2. DBインスタンスを作成する

RDSのサイドバーから「データベース」を選択し、下の画面で「データベースの作成」をクリックします。

image (12).jpg

データベースの作成では、「接続」の項で予め作成したEC2インスタンスとの接続を行い、予め作成したDBサブネットグループとVPCのセキュリティグループを設定することでEC2インスタンスとの接続が可能になります。

ここまでで初めに述べたインフラの構成が完成したことになります。ここでは解説はしませんが、この状態からEC2インスタンスにウェブサーバをインストールすることでDBインスタンスと接続することが出来ます。

その8 AWS Lambda

LambdaはAWSのサービスの中でも非常に便利なサービスの一つです。Lambdaを使うことでサーバを全く意識せずに計算資源を用いてコードを実行することが可能になります。

Lambdaの実行は予め設定したトリガーとなるイベントの発生によって自動で行われます。リクエストに応じてスケーリングは自動で行われるのでサーバの負荷などを注意深く監視しておく必要もありません。

Lambdaのようなコードを配置するだけで自動で実行してくれるサービスをFunction as a Service(FaaS)と呼ぶこともあります。管理に手間がかからないだけでなく、Lambdaは従量課金制なので使われていない間はコストもかかりません。

使い方

初めにLambdaのダッシュボードにアクセスし、「関数の作成」をクリックします。

image (13).jpg

「一から作成」を選択して関数の作成を行うと以下の画面に遷移します。

image (14).jpg

デフォルトでは以下のようなコードがLambda関数に設定されています。ここではこの関数を実行してその結果を見ます。

image (16).jpg

テストタブで空のイベントJSONを用いてテストを実行すると以下のように実行結果が返ってきます。

image (17).jpg

このLambda関数にはもちろんライブラリなどを用いることも可能になっており、様々な場面で柔軟にアプリの機能を実現させることが出来ます。

その9 AWS IAM

AWSのサービスを使う中で重要になってくる概念がこのIAMです。IAMはIdentity and Access Management の略です。

IAMはユーザやアプリケーションがどのAWSリソースにアクセスすることが出来るかを管理します。

より具体的には、リソースへのアクセスを求めるIAMユーザ・フェデレーションユーザ・IAMロール・アプリケーション(公式ドキュメントではこれらを総称してプリンシパルと呼んでいます)が各リソースへのアクセスを許可されているか確認する役割を果たしているのがIAMです。

IAMユーザとは、ルートユーザ以外のAWSアカウントに対して付与することが出来る権限で、ルートユーザやIAM管理者によって作成されます。
フェデレーションユーザとはSSOによってAWSリソースにアクセスするユーザのことです。AWSはSAML2.0の認証に対応しているので同じくSAMLに対応しているGoogle WorkspaceやSlackなどのユーザであればIAMロールを付与することが出来ます。
IAMロールとは、IAMユーザやIAMユーザグループで管理されていないプリンシパルに対して付与する権限のことを指します。

アクセス権限のデフォルトでは、ルートユーザに全てのリソースへのアクセスを許可し、それ以外のユーザには全てのリソースへのアクセスを拒否しています。最小権限の原則に基づき、必要なだけの権限を付与することが推奨されています。

アクセスの許可を付与する方法は以下の3通りです。

  1. AWS外のユーザやアプリケーションに対してIAMロールを付与する
  2. IAMユーザグループに対してアクセス許可を付与する
  3. IAMユーザに対してアクセスを許可する

なお、上記のIAMロール・IAMユーザグループ・IAMユーザの権限はIAMポリシーを紐づけることで管理することが出来ます。ポリシーにはユーザに対してリソースへのアクセス権限を定義するIDベースのポリシーとリソースに対して信頼するユーザの条件を定義するリソースベースのポリシーの2種類があります。このうち、よく使われるのは直感的にも分かりやすいIDベースのポリシーです。

これらの概念を整理するために以下の図を参考にしてみてください。

image (20).jpg

その10 Amazon CloudWatch

CloudWatchはAWSリソースの監視、異常検知と通知、最適なリソース使用の促進をするためのサービスです。

AWSでは利用する仮想的な計算資源のスペックを指定することで物理サーバと同等の可用性を確保することが出来ますが、このリソースのメモリ使用率などをモニタリングして適切なスペックを決めるために用いるのがこのCloudWatchです。

CloudWatchはマネジメントコンソール上でリアルタイムのログを表示するインタフェースであると同時にそのログから監視したいデータを自動的に数値化してくれます。更にこれらの数値変動に対してアラームを発生させるように設定することも出来ます。このアラーム機能を用いることで、他のAWSサービスと統合した際に多くの機能を実現することが出来るようになります。

使い方

CloudWatchの機能の一つであるログ機能をAWS Lambdaの例で確認します。

以下のLambdaの実行画面から「ログ」と記されている箇所をクリックします。

image (17).jpg

遷移先の画面で下にスクロールし、該当する時刻のログストリームをクリックします。

image (21).jpg

ログストリームではLambda関数の実行開始時間や終了時間、エラーがある場合はそのメッセージなども確認することが出来ます。

スクリーンショット 2024-10-26 231648.jpg

【おまけ】その他のサービス

おまけとして、よく使われているサービス14選を簡単に紹介します。上の10個では物足りなかったという方はこちらもチェックしてみてください。

操作ツール

1. AWS CLI

CLIはAWS特有の呼称というわけではなく、Command Line Interfaceの略です。

画面をクリックして操作する代わりに全ての操作をキーボードの操作によるコマンド入力で行うことができる操作画面のことをCLIと呼びます。逆に、画面をクリックして操作するマネジメントコンソールのような操作画面は GUI(Graphical User Interface) と呼びます。

先程インフラ構築の作業はほとんどマネジメントコンソールで完結すると言いましたが、AWS CLIを使うことでも同じ操作を実行できます。

コンピューティング

2. ECS

ECS(Elastic Container Service)は、アプリケーションをコンテナで実行するためのサービスです。コンテナとは、アプリを小さな単位でまとめて動かす技術で、ECSを使うとその管理をクラウド上で簡単に行うことが出来ます。

EC2やFargateのインスタンスから実行をすることが出来ます。

3. Fargate

Fargateは、サーバの管理が不要な場合に用いられるコンテナサービスです。アプリをコンテナで実行するときに必要なインフラを自動で管理してくれます。

データベース

4. DynamoDB

RDB(Relational Database)とは異なる、NoSQLと呼ばれるデータベースの一種で、素早くデータの読み書きができます。オンラインゲームやチャットアプリなど、多くのユーザーが同時にアクセスする場面で活躍します。

5. ElastiCache

ElastiCacheは、データを一時的に保存するキャッシュ用のサービスです。頻繁に使うデータをキャッシュに置くことで、アプリの動作を速くできます。

ネットワーク

6. CloudFront

CloudFrontは、CDN(コンテンツ配信ネットワーク)と呼ばれる仕組みで、画像や動画などのファイルを速く届けるサービスです。世界中の拠点からユーザーに近い場所から配信してくれます。

7. ELB

ELB(Elastic Load Balancer)は、アプリへのアクセスを複数のサーバーに振り分けてくれるサービスです。アクセスが集中したときも、サーバーへの負荷を分散して安定動作を保ちます。

8. Route 53

Route 53は、DNS(ドメイン名システム)のサービスで、ドメインの管理やルーティングを行います。ドメイン名にアクセスしたとき、どのサーバーに接続するかを決める役割を持っています。

セキュリティ

9. Cognito

Cognitoは、アプリにログイン機能を簡単に追加できるサービスです。ユーザーのIDを安全に管理し、GoogleやFacebookなどのアカウントでのログインもサポートします。

10. WAF

WAF(Web Application Firewall)は、ウェブサイトを攻撃から守るための防御システムです。不正なアクセスを防ぎ、アプリを安全に保ちます。

アプリ統合

11. SNS

SNS(Simple Notification Service)は、通知を送るためのサービスです。メールやSMSでユーザーにお知らせを送ったり、他のシステムと連携することができます。

12. SQS

SQS(Simple Queue Service)は、データを順番に並べて待たせるためのサービスです。複数のシステム間でデータをやり取りするときに便利で、処理が遅れてもデータを失わないようになっています。

機械学習

13. SageMaker

SageMakerは、AIモデルを作ったり学習させたりできるサービスです。AIを使ったアプリを簡単に開発し、実際に動かすための環境を提供してくれます。

14. Bedrock

Bedrockは、文章を生成するAIモデルなど、さまざまなAI技術を使いやすくするサービスです。複雑な設定なしで、大規模なAIモデルをアプリに組み込むことができます。

AWSにはここで紹介しきれないほど豊富なサービスが存在しています。使いたいサービスがある場合は公式サイトのドキュメントを参考にしてみましょう。

終わりに

いかがだったでしょうか?この記事ではAWSを使えるようになるための10の重要概念・サービスを解説しました。この記事で紹介した概念をしっかりと理解して実践に繋げてみてください!

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よろしければOrganizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただいた方は、ぜひこちらまでご連絡ください。

38
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?