AWS Hands-on
手を動かしながら AWS を学ぶハンズオン集です。気になるテーマを選んで、マネジメントコンソールで実際に構築してみましょう。各ハンズオンは独立しているので、どれから始めても構いません。
AWS に自分専用のネットワーク空間「VPC」を作成します。サブネットもサーバーも置かず、ネットワークの一番外側の「箱」を 1 つだけ作る、AWS ネットワークの最初の一歩です。
はじめる →VPC という大きなネットワークの箱の中を、用途ごとに区切る「サブネット」を 2 つ作成します。アドレス範囲を小さな区画に分けるという、ネットワーク設計の基本となる考え方を体感します。
はじめる →VPC の中にパブリックサブネットとプライベートサブネットを作ります。インターネットゲートウェイとルートテーブルを使って、片方はインターネットにつながり、もう片方はつながらないという違いを自分の手で構成します。
はじめる →CIDR の異なる 2 つの VPC を VPC ピアリングでつなぎ、それぞれ独立したまま、許可した範囲だけプライベート IP アドレスで直接通信できる状態を作って確かめます。
はじめる →外から直接アクセスできないプライベートサブネットのサーバーに、NAT ゲートウェイで外向きの通信だけを許します。インターネットゲートウェイとの違いを、踏み台サーバー経由の SSH で実際に確かめます。
はじめる →マネージドサービスの NAT ゲートウェイを使わず、ふつうの EC2 に設定を施して「NAT インスタンス」を自分の手で組み立てます。IP フォワーディングと送信元/送信先チェックの無効化を、実際に設定して体感します。
はじめる →インターネットへの経路を持たないプライベートサブネットの EC2 から S3 にアクセスできない状態をまず確認し、VPC ゲートウェイ型エンドポイントを追加することで、外を経由せずに S3 へアクセスできる状態に変えます。
はじめる →仮想サーバーサービス「EC2」で Amazon Linux のサーバーを 1 台起動します。鍵(キーペア)を作り、自分のパソコンのターミナルから SSH でログインして、クラウドの中に自分のサーバーがある状態を体感します。
はじめる →EC2 の「ユーザーデータ」に数行のスクリプトを書いておき、起動した瞬間から Apache Web サーバーが動いている状態を作ります。サーバーにログインせず、ブラウザでアクセスすると自分のページが表示されるところまでを体験します。
はじめる →EC2 のパブリック IP は停止・起動のたびに変わってしまいます。Elastic IP アドレスを取得して関連付け、何度再起動しても同じアドレスでアクセスできる状態を作ります。固定の便利さと、放置すると課金される注意点の両方を体験します。
はじめる →セットアップ済みの EC2 からカスタム AMI(自分専用のイメージ)を作り、そこから新しいサーバーを起動します。何も入れ直していないのに同じ状態のサーバーが立ち上がる、「完成状態を焼き込んで複製する」やり方を体験します。
はじめる →EC2 にアタッチされたディスク(EBS ボリューム)の空き容量が足りなくなった状態をあえて作り、コンソールでサイズを拡張したうえで、サーバーの中でパーティションとファイルシステムを広げて使える容量を増やします。
はじめる →起動済みの EC2 インスタンスを「停止 → インスタンスタイプを変更 → 起動」の手順でスペックアップします。コンソールの表示だけでなく、サーバーの中のコマンドでも CPU・メモリの変化を確かめます。
はじめる →EC2 の購入オプションから「スポットインスタンス」を選んで起動し、オンデマンドとの価格差を確認します。AWS の余剰キャパシティを安く借りられる仕組みと、短い通知で中断される可能性がある特徴の両方を体験します。
はじめる →同じ内容の Web サーバーを 2 台用意し、その前に Application Load Balancer を置いてアクセスを自動で振り分けます。1 つのアドレスへのアクセスを複数台で分担し、1 台が止まっても表示が続く仕組みを組み立てます。
はじめる →マネージドサービスのロードバランサーを使わず、EC2 に nginx を入れて「振り分ける仕組み」を自分の手で組み立てます。複数サーバーへの振り分けと、調子の悪いサーバーを自動的に避ける挙動を設定ファイルで体感します。
はじめる →2 台の Windows Server EC2 インスタンスを用意し、片方に追加したディスクを共有フォルダにして、もう片方からネットワーク越しにアクセスします。セキュリティグループ同士の参照で、共有先を限定する考え方も体験します。
はじめる →サーバーの設計図(起動テンプレート)をもとに、Auto Scaling で台数を自動管理します。常に決めた台数を保ち、1 台が壊れれば自動で立て直し、混雑すれば増やす。ロードバランサーと組み合わせ、人手なしで回る構成の完成形を作ります。
はじめる →オブジェクトストレージ「S3」に、ファイルを入れる箱「バケット」を作ります。自分のパソコンからファイルをアップロード・ダウンロードして、クラウド上に自分のファイル置き場がある状態を体感する、S3 の最初の一歩です。
はじめる →S3 バケットに HTML を置き、静的ウェブサイトホスティングを有効にして公開します。サーバーを 1 台も立てずにファイルを置くだけで Web サイトが見られるようになる手軽さと、公開設定(ブロック解除・バケットポリシー)の考え方を学びます。
はじめる →バージョニングを有効にすると、同じ名前で上書きしても古い内容が世代として残り、削除しても元に戻せます。うっかり上書き・うっかり削除からファイルを守る仕組みを、上書きと復元を繰り返して体感します。
はじめる →ライフサイクルルールで、時間がたったファイルを安いストレージクラスへ自動で移したり、決めた日数で自動削除したりする設定を組みます。手作業に頼らず保管コストを抑える、運用の入口を体験します。
はじめる →S3 バケットの「デフォルトの暗号化」を確認・変更し、何も指定せずアップロードしたオブジェクトが自動的に暗号化されることを確かめます。設定を変えても既存のファイルには影響しない、という性質も体感します。
はじめる →複数の EC2 から同時にマウントできる共有ストレージ「Amazon EFS」を作成し、2 台のサーバーから同じファイルシステムを読み書きします。1 台にしか付けられない EBS との違いを実際に確かめます。
はじめる →非公開のままの S3 バケットをオリジンに CloudFront を立て、オリジンアクセスコントロールで CloudFront だけが中を読めるようにします。バケットは閉じたまま、HTTPS で世界中へ高速配信する安全な公開のかたちを組み立てます。
はじめる →S3静的サイトをオリジンにしたCloudFront配信で、ファイルを更新しても古い内容が表示され続ける状態をまず確認します。キャッシュ無効化を実行して最新の内容に切り替わる様子から、キャッシュの仕組みを体感します。
はじめる →CloudFrontの地理的制限を使い、自分がいる国を一時的にブロックリストに追加します。403エラーで拒否される様子と、解除すると再びアクセスできる様子を、実際に確認します。
はじめる →EC2 インスタンスが起動した瞬間から自動的に記録している CPU 使用率などの数値を、CloudWatch の画面で「探して、見る」だけのハンズオンです。何も作らず、すでにある記録を読み取るモニタリングの最初の一歩を体験します。
はじめる →EC2 の CPU 使用率を CloudWatch で見張り、決めた条件を超えたら SNS 経由で自動的にメールが届くようにします。画面を見続けなくても、異常があれば向こうから知らせてくれる監視と通知の基本を、実際にメールを受け取って確かめます。
はじめる →EC2 の CPU 使用率やネットワークなどの数値を CloudWatch ダッシュボードにグラフとして並べ、サーバーの調子を一枚の画面で見渡せるようにします。見たい指標をまとめて「自分専用の計器盤」を作る体験です。
はじめる →簡単な Lambda 関数を動かし、その実行記録が自動的に集まる CloudWatch Logs を読みます。ロググループ・ログストリームの構造と、フィルタでの検索方法を体感します。
はじめる →IAM ユーザーに 1 人ずつ権限を付けるのではなく、「グループ」を作って権限をまとめ、ユーザーをそのグループに入れることで権限を渡す管理方法を体験します。
はじめる →何でもできてしまう「ルートユーザー」はしまっておき、必要な権限だけを持つ「IAM ユーザー」を作って普段使いにします。さらに二段階認証(MFA)でログインを守る、AWS を安全に使い始めるための土台づくりです。
はじめる →EC2 に「IAM ロール」を持たせると、アクセスキー(鍵)をどこにも書かずに S3 などを操作できます。鍵を埋め込む危うさを避けつつ、必要な権限だけを安全に渡す、実務で必ず使うロールの考え方を体験します。
はじめる →IAM Access Analyzer を使い、わざと全世界に公開したS3バケットを自動的に検出します。バケットポリシーを見ただけでは分かりにくい「外部アクセスの可能性」を、検出結果(Finding)として確認します。
はじめる →コンソールで行った操作が自動的に記録される CloudTrail の「イベント履歴」を使い、いつ・誰が・どこから操作したかを確認します。セットアップ不要で、最初から使える機能だけを使います。
はじめる →脅威検出サービス GuardDuty を有効化し、検出結果を EventBridge と SNS で自動的にメール通知する仕組みを作ります。サンプル検出結果を使って、パイプライン全体の動作を安全に確かめます。
はじめる →Systems Manager の「パラメータストア」に、ふつうの文字列パラメータと、暗号化されたパラメータを作成します。コードの中に値を直接書き込まずに、外側で設定値を管理する考え方を体感します。
はじめる →Secrets Manager にシークレットを保存し、コンソールと AWS CLI の両方から値を取得します。値を更新したときにバージョン(AWSCURRENT・AWSPREVIOUS)がどのように管理されるかも確認します。
はじめる →AWS Config を有効化し、特定のリソース(セキュリティグループ)だけを記録対象にします。設定を1つ変更し、「構成タイムライン」でその変化を遡って確認する体験をします。
はじめる →VPC に「フローログ」を有効化し、CloudWatch Logs へ通信の記録を送ります。実際に EC2 への通信を発生させ、許可された通信と拒否された通信がどう記録されるかを確かめます。
はじめる →Systems Manager の Session Manager を使い、SSH の鍵ファイルもポート開放も使わずに EC2 の中に入ります。プライベートサブネットのサーバーを、外からの接続を一切受け付けないまま管理する仕組みを体験します。
はじめる →サブネット単位で通信を制御する「ネットワークACL」を作成し、セキュリティグループでは許可されているSSH通信が、ネットワークACLの拒否ルール1つでブロックされる様子を体験します。ステートフルとステートレスの違いも確かめます。
はじめる →ダミーの個人情報を含むテストファイルをS3に置き、Amazon Macie の機密データ発見ジョブを実行します。氏名やメールアドレスなど、どんな種類の機密データがどこにあるかを検出結果から確認します。
はじめる →カスタマー管理のKMSキーを作成し、S3のデフォルト暗号化をSSE-KMSに変更します。S3の読み取り権限があっても、キーポリシーでKMSへのアクセスを許可しなければファイルを復号できないことを確認します。
はじめる →AWS Budgets で予算のしきい値を設定し、使用額がそこに近づいたらメールで知らせてくれる仕組みを作ります。何もリソースを立てず、コンソールの設定だけで「使いすぎに気づける」安心材料を用意します。
はじめる →AWS Cost Explorer で、これまでに使った金額をサービスごとの内訳グラフで確認します。新しいリソースは何も作らず、すでにある利用データを「見る」だけのハンズオンです。
はじめる →リソースに付けたタグを「コスト配分タグ」として有効化します。タグを付けてから実際にコストの内訳に反映されるまでにタイムラグがある、という運用上の特徴も体験します。
はじめる →サーバーの用意も管理もせずにプログラムを動かせる「Lambda」を使います。コンソールの中で Python のかんたんな関数を作り、ボタンひとつで実行して結果が返るまでを体験。コードは 1 行ずつ言葉で説明するので、プログラミングがはじめてでも進められます。
はじめる →Lambda 関数に「関数 URL」という Web 用の住所を付け、ブラウザでその URL を開くと関数が動き、その場で作ったページが表示されるようにします。サーバーを立てずに、URL ひとつで動く小さな Web ページを公開する体験です。
はじめる →S3 にファイルがアップロードされた瞬間に Lambda が自動で動く仕組みを作ります。ボタンを押さなくても、出来事をきっかけにプログラムが走る「イベント駆動」という自動化の基本を体験します。コードは 1 行ずつ説明します。
はじめる →EventBridge スケジューラーで、Lambda 関数を「決まった間隔で」自動実行します。ボタンも外からのアクセスも要らず、時間が来たら勝手に動く「定期実行」を、ログで動いた証拠を見ながら体験します。コードは 1 行ずつ説明します。
はじめる →API Gateway を Lambda の前に置き、URL にアクセスするとデータ(JSON)が返ってくる API を作ります。アプリどうしがやり取りするときの定番のかたちを、サーバーを立てずに用意する体験です。コードは 1 行ずつ説明します。
はじめる →Lambda 関数から、サーバーレスのデータベース「DynamoDB」にデータを書き込みます。受け取った内容を貯めて、あとから見返せる「保存」のいちばん基本を、サーバーを立てずに体験します。コードは 1 行ずつ説明します。
はじめる →SNS でトピックを作り、メールアドレスを宛先として登録します。コンソールからメッセージを発行すると、登録した宛先へ自動的に配信される——通知の基本のかたちを体験します。
はじめる →SQS でキューを1つ作り、メッセージを送信したあと、別の操作として受信・削除します。送信と受信のタイミングがずれても成立する「非同期処理」の基本を体感します。
はじめる →機械翻訳サービス「Amazon Translate」のコンソールに文章を入力するだけで、別の言語に翻訳された結果がその場で表示される様子を体験します。設定もサーバーも不要です。
はじめる →画像認識サービス「Amazon Rekognition」に画像をアップロードするだけで、写っている物体やシーンを自動的に検出し、ラベルと確信度で表示します。モデルの学習は不要です。
はじめる →フルマネージドのデータベース「DynamoDB」にテーブルを1つ作り、コンソールから項目を追加・取得・更新・削除します。「キーで直接探す」というDynamoDBの基本のかたちを体感します。
はじめる →DynamoDB テーブルにパーティションキーとソートキーの複合キーを設定し、1人のユーザーの複数の注文履歴を保存します。Query 操作で効率よく絞り込んで取得する体験をします。
はじめる →DynamoDB の TTL(有効期限)機能を使い、一時的なデータに有効期限を設定します。期限が過ぎた項目が、削除の操作をしなくても自動的に消えていく様子を確認します。
はじめる →DynamoDB の Streams を有効化し、テーブルへの変更をリアルタイムに検知して Lambda を自動起動します。データの変化そのものをきっかけに動く、イベント駆動の仕組みを体験します。
はじめる →RDS で MySQL のインスタンスを作り、表(テーブル)に行を追加・検索・更新・削除する基本の SQL 操作をひととおり体験します。主キーや列の型など、リレーショナルデータベースの考え方の土台を身につけます。
はじめる →RDS で MySQL のインスタンスをプライベートサブネットに作り、同じ VPC 内の EC2 から接続して SQL を実行します。データベースをインターネットに直接さらさずに使う、実務でも基本となる構成を体験します。
はじめる →RDS の Multi-AZ 配置で、別のアベイラビリティーゾーンに待機系のデータベースを持たせます。手動でフェイルオーバーを起こし、接続先が裏側で切り替わる間に何が起きるかを実際に確かめます。
はじめる →RDS の「リードレプリカ」を作成し、書き込みは元のデータベース、読み取りはレプリカという分担を体験します。書き込んだ内容が少し時間をおいてレプリカ側にも反映される様子を確認します。
はじめる →RDS のスナップショットを手動で取得し、そこから新しい DB インスタンスを復元します。「今の状態を保存し、必要になったらその時点に戻す」というバックアップ運用の基本を体験します。
はじめる →Amazon Athena を使うと、S3に置いたファイルをデータベースに読み込まずに、そのままSQLで問い合わせられます。CSVファイルに対してテーブルを手動で定義し、SELECT文で検索する基本を体験します。
はじめる →Amazon Athena の「ワークグループ」を使うと、クエリ結果の保存先や、1回のクエリでスキャンできるデータ量の上限などを、用途ごとに分けて管理できます。新しいワークグループを作り、自分専用の出力先と上限を設定して、その効果を確認します。
はじめる →AWS Glue の「データカタログ」は、実際のデータとは別に、「どこに何のデータがあるか」というメタデータを管理する仕組みです。クローラーを使わず、データベースとテーブルを手動で1つずつ作成し、データカタログの構造を理解します。
はじめる →AWS Glue の「クローラー」は、S3のデータを自動的にスキャンし、列構成を推測したうえでデータカタログにテーブルを作成してくれます。クローラーを実行し、スキーマ推測の結果を確認します。
はじめる →AWS GlueとAthenaは、同じ「データカタログ」を共有しています。Glueクローラーが自動生成したテーブルを、特別な追加設定なしにAthenaからそのまま問い合わせられることを確認します。
はじめる →年・月ごとのフォルダにデータを分けて配置すると、クローラーはその構造を「パーティション」として認識します。Athenaから日付を指定して問い合わせ、検索範囲が絞られる様子を確認します。
はじめる →AWS CodeBuild は、決められたビルド手順を自動的に実行してくれるサービスです。ソースコードをS3に置き、buildspec.ymlに書いた手順どおりにビルドを実行し、成果物がS3に自動的に出力されることを確認します。
はじめる →AWS CodePipeline は、ビルドステージを挟まない「ソース→デプロイ」だけの最小構成でも作れます。S3に置いたファイルを更新するだけで、自動的に配信先のS3バケットへコピーされる仕組みを体験します。
はじめる →ビルドは失敗することがあります。あえて失敗するビルドを用意し、フェーズ詳細とCloudWatch Logsのログから原因を特定し、修正して再実行するまでの一連の流れを体験します。
はじめる →AWS CodeCommit にGitでpushしたコードを、CodePipelineが自動的に検知してS3へ配信します。HTTPS Git認証情報でのリポジトリ接続から、push後の自動デプロイまでの一連の流れを体験します。
はじめる →