【AWS】無料教材で体験してみた

AWS

はじめに

近年AWSのシェアがとても広がっており、自分も多少は知っておかないとなと感じていました。
そこで11月まで無料で学習できる教材を見つけました。
AWS、11月2日まで学習プランを無料提供―—EC2やLambda等をハンズオンで学ぶ|CodeZine(コードジン)

今回はこちらを用いて学習を行いました。

私のAWSのスキルは、1度も使用したことがなく使用例も学んだことがないため、完全に0です。
S3がストレージサービスなのは知ってるくらいでしょうか。

ではどのような順番でどのような学習を行ったのかを書いていきます。

01.Introduction to Amazon VPC

一番初めに学んだサービスはVPC(Virtual Private Cloud)でした。
単純にSkillBuilderの順番通りに1番目から選びました。

VPCは全く知らなかったのですが、一応説明が以下のように書いてありました。


ラボの概要

このラボでは Amazon Virtual Private Cloud (Amazon VPC) を紹介します。このラボでは、Amazon VPC ウィザードを使用して VPC を作成し、インターネットゲートウェイをアタッチし、サブネットを追加し、サブネットとインターネットゲートウェイ間でトラフィックが流れるように VPC にルーティングを定義します。

目標

このラボを修了すると、以下ができるようになります。

  • VPC ウィザードを使用して Amazon VPC を作成する
  • 次を含む VPC の基本コンポーネントについて学ぶ
    • パブリックサブネットとプライベートサブネット
    • ルートテーブルとルート
    • NAT ゲートウェイ
    • ネットワーク ACL

このラボで使用するサービス

Amazon Virtual Private Cloud (VPC)

Amazon Virtual Private Cloud (Amazon VPC) では、Amazon Web Services (AWS) クラウドの論理的に分離したセクションをプロビジョニングし、自分で定義する仮想ネットワークで AWS リソースを起動できます。自分の IP アドレス範囲の選択、サブネットの作成、ルートテーブルとネットワークゲートウェイの設定など、仮想ネットワーキング環境を完全に制御できます。 VPC では IPv4 と IPv6 の両方を使用して、リソースとアプリケーションに安全かつ簡単にアクセスできます。


う~ん、全く分かりません。
本当の初心者からしたら具体的に何に使われるのか、どういった時に必要なのかなどが全く伝わりません。

このあと2,3章やって理解できたのですが、AWSのサービスを利用する際のセキュリティについての話ですね。
AWS上にコンピュータを立ち上げた時に誰なら接続できるのか、とか。
世界中のだれでも触れるようになってたら困りますもんね。

まあすべてのサービスの根幹にあたる部分にはなるので最初に持ってきたのでしょうが…
体系的には適切でも、学習としては不親切ですね。

以下が行ったことの要約です。

タスク内容要約

まず、「VPCウィザード」を使用して、VPCの作成プロセスを自動化しました。
具体的な設定として、VPCの名称に「Lab」というプレフィックスを付け、アベイラビリティゾーン(AZ)を1つ選択しました。
ネットワーク構成は、外部と通信可能な「パブリックサブネット」を1つ、外部から直接アクセスできない「プライベートサブネット」を1つ作成するように指定しました。
それぞれのIPアドレス範囲(CIDRブロック)には、パブリックに「10.0.25.0/24」、プライベートに「10.0.50.0/24」を設定しました。
さらに、プライベートサブネットからインターネットへのアクセスを可能にする「NATゲートウェイ」を1つのAZ内に作成する設定を選択し、VPCを構築しました。

次に、ウィザードによって自動作成された各コンポーネントの設定内容を確認し、その役割を学びました。
VPCとインターネットを接続するために「インターネットゲートウェイ」がアタッチされていることを確認しました。
パブリックサブネットのルートテーブルには、インターネット宛(0.0.0.0/0)の通信をインターネットゲートウェイに向けるルートが設定されており、これによりインターネットと直接通信できることが分かりました。
一方、プライベートサブネットのルートテーブルでは、インターネット宛の通信がNATゲートウェイに向けられており、インターネットから直接アクセスできない安全な領域となっていることを理解しました。

この一連の操作を通して、サブネットのルーティング設定によって「パブリック」と「プライベート」がどのように区別されるか、またNATゲートウェイがセキュリティを確保しつつ外部へのアクセスを仲介する仕組みを具体的に学びました。

こちらも難解ですね。
私は多少ネットワークのことは学習していたのでパブリック・プライベート、IPアドレス、ゲートウェイなどに関する知識はあったのですが、それらも無いとここで挫折してしまいそうですね。

一応AWSのコンソールが使えるようになって、それを実際に操作して学べます。
これはとても良いですね、公式から用意されたサンドボックスなので料金がかかることもありません。

続いて、その章の教材が終わるとナレッジチェックがあります。
全5問あり、80%以上正解すればその教材は完了したことになります。

## In Amazon VPC, what is the purpose of a CIDR block?

To manage VPC peering connections

To encrypt network traffic

To define the IP address range for the VPC

To control access to EC2 instances

正直この章のことは全く理解できなかったので、教材をめくりながら答えてきました。

これで1章が終わりですね、最後にラボを閉じて終了です。

02. Introduction to Amazon EC2

続いてEC2ですね。

最近はクラウド上で必要なスペックのコンピュータが借りれるサービスが流行っているので、なんとなく理解できました。
AI学習などのためにGPUを借りれたりしますよね。

このラボの概要と要約は以下の通りです。


ラボの概要

このラボでは、Amazon EC2 インスタンスの起動、サイズ変更、管理、モニタリングの概要が扱われます。

Amazon Elastic Compute Cloud (Amazon EC2) は、クラウド内で規模を変更できるコンピューティング性能を提供するウェブサービスです。Amazon EC2 を使用すると、デベロッパーはウェブスケールのクラウドコンピューティングを簡単に利用できるようになります。

Amazon EC2 のシンプルなウェブサービスインターフェイスを使うと、必要な容量の取得、設定が簡単です。使用するコンピューティングリソースは、お客様自身が完全にコントロールでき、Amazon の実績あるコンピューティング環境で実行できます。Amazon EC2 では、新しいサーバーインスタンスの取得と起動に要する時間が分単位にまで短縮されるため、容量のスケールアップもダウンも、コンピューティング要件の変化に合わせてすばやく実行できます。

また、Amazon EC2 はコンピューティングの経済性をも変革します。お支払いいただく料金は、実際に使用した容量の分のみです。デベロッパーは、Amazon EC2 のツールを利用して、よくある障害シナリオの影響を受けない、耐障害性のあるアプリケーションを構築できます。

目標

このラボを修了すると、以下ができるようになります。

  • 終了保護を有効にしてウェブサーバーを起動する。
  • EC2 インスタンスをモニタリングする。
  • ウェブサーバーで使用するセキュリティグループを変更し、HTTP アクセスを許可する。
  • Amazon EC2 インスタンスのサイズを変更してスケールする。
  • 終了保護をテストする。
  • EC2 インスタンスを終了する。

タスク内容要約

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

  • インスタンス名に「Web Server」と入力。
  • AMIに「Amazon Linux 2023 AMI」、インスタンスタイプに「t3.micro」を選択。
  • キーペアは「キーペアなしで続行」を選択。
  • ネットワーク設定で、VPCに「Lab VPC」、サブネットに「Public Subnet 1」を指定。
  • ファイアウォール設定で、既存の「Web Server security group」を選択。
  • 高度な詳細設定で、「終了保護」を有効化。
  • ユーザーデータに、Apache(httpd)のインストールと簡単なwebページを作成するシェルスクリプトを記述。
  • 上記設定でインスタンスを起動し、ステータスチェックが「3/3 のチェックに合格しました」になることを確認。

2. インスタンスのモニタリング

  • 「ステータスとアラーム」タブで、システムとインスタンスの接続性チェックが正常であることを確認。
  • 「モニタリング」タブで、CloudWatchによる各種メトリクスグラフを確認。
  • 「システムログを取得」し、ユーザーデータスクリプトが正常に実行されたログを確認。
  • 「インスタンスのスクリーンショットを取得」し、コンソールの状態を画像で確認。

3. セキュリティグループの更新とウェブアクセス

  • インスタンスのパブリックIPアドレスにブラウザでアクセスし、接続不可であることを確認。
  • 「Web Server security group」のインバウンドルールを編集。
  • タイプ「HTTP」、ソース「Anywhere-IPv4」のルールを追加し、保存。
  • 再度ブラウザでパブリックIPアドレスにアクセスし、「Hello From Your Web Server!」の表示を確認。

4. インスタンスのサイズ変更

  • 「Web Server」インスタンスを停止。
  • インスタンスタイプを「t3.micro」から「t3.small」に変更。
  • EBSボリューム設定で、ルートボリュームのサイズを「8 GiB」から「10 GiB」に変更。
  • 変更後、インスタンスを再度開始。

5. 終了保護のテストとインスタンスの終了

  • 「Web Server」インスタンスの終了を試行し、「終了保護」機能により失敗することを確認。
  • インスタンス設定から「終了保護を変更」を選択し、保護を無効化。
  • 再度インスタンスの終了を実行し、インスタンスの状態が「終了済み」になることを確認。

実際にクラウド上でコンピュータを借りることができました。
OSやスペックなど様々な種類がありすごかったですね。

実際に動いているところも確認できました。

しかもWebサーバーを立ち上げるタスクでは、ローカル以外からも接続可能になりました。
スマホから接続してみても同じページが表示され、興奮しました!

終了したら前章通りナレッジチェックをして終了です。
ナレッジチェックでは、間違えた場合どういう理由で間違いなのかも教えてくれます。

03.Introduction to Amazon Simple Storage Service (S3)

S3ですね、ストレージサービスだということは知っています。

ラボの概要と要約は以下の通りです。


目標

このラボを修了すると、以下のことができるようになります。

  • Amazon S3 でバケットを作成する
  • バケットにオブジェクトを追加する
  • オブジェクトやバケットへのアクセス許可を管理する
  • バケットポリシーを作成する
  • バケットのバージョニングを使用する

前提条件

このラボは Getting Started with Amazon Simple Storage Service (S3) デジタルコースの続きです。

概要

このラボでは、AWS マネジメントコンソールを使用して Amazon S3 の基本的な機能について説明します。

Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。あらゆる規模や業界のお客様が、ウェブサイト、モバイルアプリケーション、バックアップと復元、アーカイブ、エンタープライズアプリケーション、IoT デバイス、ビッグデータ分析など、広範にわたるユースケースのデータを容量に関係なく、保存および保護することができます。Amazon S3 には使いやすい管理機能が備わっているため、データを整理し、細かく調整されたアクセス制御を設定することで、特定のビジネスや組織、コンプライアンスの要件を満たすことができます。Amazon S3 は 99.999999999% (イレブンナイン) の耐久性を実現するよう設計されており、世界中の企業向けに数百万ものアプリケーションのデータを保存しています。

タスク内容要約

1. S3バケットの作成とオブジェクトのアップロード

  • S3コンソールで「バケットを作成」を選択。
  • バケット名にアカウントIDを付与した一意の名称(reportbucket-<Account ID>)を設定。
  • 「ACL 有効」、「オブジェクトライター」を選択してバケットを作成。
  • 作成したバケットに、ローカルからnew-report.pngファイルをアップロード。

2. オブジェクトの公開とアクセス制御

  • アップロードしたオブジェクトのURLにアクセスし、デフォルトで非公開(アクセス拒否)であることを確認。
  • バケットの「アクセス許可」タブで「ブロックパブリックアクセス(BPA)」設定を編集し、全ブロックを無効化。
  • オブジェクトのアクションから「ACLを使用して公開する」を実行し、オブジェクトを公開状態に変更。
  • 再度オブジェクトURLにアクセスし、画像が表示されることを確認。

3. EC2インスタンスからの接続と権限設定

  • EC2の「Bastion Host」インスタンスにSession Managerで接続。
  • aws s3 lsコマンドでS3バケットの一覧表示、aws s3 ls s3://...でバケット内のオブジェクト一覧表示が可能であることを確認。
  • aws s3 cpコマンドでEC2からS3へのファイルコピーを試行し、書き込み権限がないため失敗することを確認。
  • IAMコンソールでEC2インスタンスに割り当てられているEC2InstanceProfileRoleのARNをコピー。
  • S3バケットの「バケットポリシー」を編集。ポリシージェネレータを使用し、コピーしたロールARNをプリンシパルとして、GetObjectPutObjectアクションを許可するポリシーを作成・適用。
  • EC2インスタンスに戻り、aws s3 cpコマンドでファイルのアップロード(PutObject)とダウンロード(GetObject)が成功することを確認。
  • さらに、プリンシパルを全員(*)とし、GetObjectアクションを許可するステートメントをバケットポリシーに追加。これにより、ブラウザからのオブジェクト閲覧も可能になることを確認。

4. バージョニング機能のテスト

  • バケットの「プロパティ」タブで「バケットのバージョニング」を有効化。
  • 同名で内容の異なるsample-file.txtをアップロード(上書き)。
  • 「バージョンの表示」をオンにし、ファイルが新旧2つのバージョンで保持されていることを確認。
  • オブジェクトを「削除」すると、ファイルは非表示になるが、実際には「削除マーカー」が作成されることを確認。
  • 「削除マーカー」自体を削除することで、オブジェクトが復元されることを確認。
  • バージョニング表示をオンにした状態で特定のバージョンを選択して削除すると、そのバージョンが完全に削除されることを確認。

GoogleDriveやOneDriveのようなただのストレージサービスのことかと思っていたのですが、もっと拡張性に富んだサービスだったんですね。
EC2と組み合わせることでファイルを表示したり、ログを残したり。

バージョン管理もあり、ファイル削除もマーカーだったりということで、本当に堅牢性の高いサービスだということがうかがえます。

この章では前提条件として「Getting Started with Amazon Simple Storage Service (S3)」の続きだと示されていますが、こちらはやっていなくても問題ありませんでした。

その他

4章はAWS Identity and Access Management (IAM)について。
IAMは各ユーザの権限を設定できます。
この人には編集権限を持たせて、この人は読み取り専用、この人はこのサービスだけ編集可能みたいなことができるようです。

5章はAWS Key Management Serviceについて。
KMSでは暗号化キーを作成出来て、具体的には暗号化キーを使用して、Amazon S3 バケットに保存されているデータを暗号化できるようです。
ですがこちらのタスクは途中で進行不可になってしまったので、あまりよく分かっていません。実行権限がちゃんと整備されていなかったのでしょうか?
教材を見てナレッジチェックをクリアしました。

6章はAmazon CloudFrontについて。
こちらはCloudFrontドメインでコンテンツ配信URLが作成できる感じですかね?
S3のファイルをパブリックアクセス可能にしました。
元々S3単体でもパブリックアクセス可能に出来るのですが、こちらは低レイテンシーと高速なデータ転送を特徴としているようです。

Amazon CloudFront によりオブジェクトの配信に適切であると判断されたエッジロケーションから、画像ファイルがページに埋め込まれてブラウザに表示されます。

7章はAmazon DynamoDBについて。
こちらはNoSQLデータベースですね。
私は最近SQLについて学んでいたのですが、こちらは他のアイテムに影響を与えずに追加のアイテムに新しい属性を追加できるようです。
プライマリキーとソートキーという概念には若干戸惑いましたが、こちらの方が扱いやすそうな気がします。

8章はAWS Lambdaについて。
自分としてはn8nのようなサービスだという印象を持ちました。(全然Lambdaの方が先でしょうが、私にはこちらの方が馴染み深かったです)
さまざまなトリガーイベントからプログラムを実行できるというものですね。
これがAWSに組み込まれていることで様々なサービスと組み合わせることができるわけですね。

9章はAmazon API Gatewayについて。
こちらはLambdaと組み合わせることでURLにエントリーしたらプログラム実行という仕組みが組めるようです。
またLambdaで実行するプログラムをnode.jsにすればWebページの内容を動的に変えられますね。

API Gateway エンドポイントの主な目的は、クライアントが API とそのリソースにアクセスするために使用できる一意の URL を提供することです。

10章は各サービスの監査証拠を確認するような感じでした。
IAMでIAMポリシーシミュレーターを使用して権限の確認をしたり、EC2のセキュリティグループを確認したり…のような感じでした。
こちらは最終章だからかナレッジチェックが12問ありました。
その内容も難しく、教材に書いてないことも多かったので勘で解いてました…
結局問題の種類が24問くらいありそうだったので、3回受験してやっと合格しました。
これまでのサービスに関しての問題ならまだしも、監査証拠に関する問題だけだったのでここまで難しくする必要はあったんだろうか…と思いました。


さいごに

全部受講した感想としては、1章の受講は後回しにしてもよさそうですね。
他の章を受けてAWSのサービス概要に慣れてきてから受講するのが良さそうです。
また10章のナレッジチェックは合格しなくてもいいかなと思いました。

今回の受講のおかげでAWSのいくつかのサービスを実際に触ってみることができました。
AWSを学習する障壁としては、やはり使用量に応じて料金が発生することですよね。
ただのテストでお金がかかったり、なんらかのトラブルで莫大な請求が来たり…、試しに遊んでみるには若干ハードルが高いです。

そこで今回の教材なら無料で教材の範囲のサービスを使えるためとても良い機会でした。

また無料でいくつかのサービスが利用できるため、何か作ってみて学んでみるのもいいかもしれませんね。

投稿者プロフィール

MuramatsuYuki

関連記事

  1. AWSのロールプレイングゲーム「AWS Cloud Quest」を触っ…

  2. AWS

    【AWS】Deploy Serverless NextJS app w…

  3. AWS

    【AWS】DynamoDBのバックアップ、復元、別リージョンへのコピー…

  4. AWS

    【AWS】Amazon DynamoDBを使ってみる(CLI、Part…

  5. AWS

    【AWS】Lambdaのバックアップ、復元

  6. 【新米エンジニア学習記録③】Next.jsのデプロイ

最近の記事

制作実績一覧

  1. Checkeys