ヤマムギ

growing hard days.

*

ハンズオン: グローバルインフラストラクチャ & API ~AWS認定デベロッパーアソシエイト(DCA-C02)~

   

このブログは2026年6月29日翔泳社さんより発売される「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集」で扱う内容を体験していただくためのハンズオンガイドです。

このハンズオンガイドは、AWSのグローバルインフラストラクチャ(リージョン、AZ)を意識しながら EC2 インスタンスを起動する操作を、マネジメントコンソール、AWS CLI、Python boto3、署名バージョン4のそれぞれの方法で体験する手順です。

準備:最小権限IAM ポリシーの作成とアタッチ

まず準備としてこのハンズオンで使用するIAMユーザー、またはIAMロールを作成してください。
個別に作成する必要のない方はこの準備はスキップして進めてください。

ハンズオンで使用するIAMユーザーまたはIAMロールに、以下の最小権限ポリシーをアタッチします。

必要な権限の概要

  • EC2 インスタンスの起動・確認・終了、AMIの参照
  • CloudShell の使用

IAM ポリシーの JSON

以下のポリシーをカスタム管理ポリシーとして作成してアタッチ、またはインラインポリシーとして作成します。

A. カスタム管理ポリシーとしてアタッチする場合

  1. マネジメントコンソールで[IAM]にアクセス。
  2. 左メニューの [ポリシー]-[ポリシーの作成]をクリック。
  3. [JSON]タブを選択し、上記のポリシーを貼り付ける。
  4. ポリシー名を任意の名前で保存する。
  5. [ユーザー]または[ロール]を開き、ハンズオンで使用する対象を選択して[アクセス許可を追加]→[ポリシーをアタッチ]から作成したポリシーをアタッチする。

B. インラインポリシーとして追加する場合

  1. マネジメントコンソールで[IAM]にアクセス。
  2. [ユーザー]または[ロール]を開き、ハンズオンで使用する対象を選択する。
  3. [アクセス許可]タブ-[インラインポリシーを追加]をクリック。
  4. [JSON]タブを選択し、上記のポリシーを貼り付ける。
  5. ポリシー名に任意の名前を付けて保存する。

動作確認

ポリシーをアタッチしたIAMユーザーまたはIAMロールでCloudShellにアクセスして、以下を実行して権限エラーが出ないことを確認してから各タスクに進む。

タスク 1:マネジメントコンソールにサインインしてリージョンを確認・切り替える

目的

リージョンを確認しましょう。

手順

  1. 画面右上のリージョン表示(例: 米国(バージニア北部))をクリックする。
  2. ドロップダウンにさまざまなリージョンがあることを確認する。
  3. 東京 ap-northeast-1を選択して東京リージョンに切り替える。

ポイント

  • AWSのリージョンサービスを使うとき、最初に選択するのがリージョンです。
  • サービスやデータの地域を限定できます。
  • CloudFront、Route 53などのエッジロケーションを使用しているグローバルサービスは、リージョン選択は不要です。

タスク 2:マネジメントコンソールから EC2 インスタンスを起動する

目的

リージョン、AZ(アベイラビリティゾーン)を意識しながら、マネジメントコンソールの操作でEC2インスタンスを起動します。

手順

  1. マネジメントコンソール上部の検索フィールドに EC2と入力し、EC2コンソールにアクセスします。
  2. 左メニューから [インスタンス]-[インスタンスを起動]をクリック。
  3. 以下の設定を行う:
項目 設定値(例)
名前 handson-console
AMI Amazon Linux 2023 AMI
インスタンスタイプ t3.micro
キーペア 「キーペアなしで続行」
ネットワーク設定-VPC デフォルト
ネットワーク設定-サブネット ap-northeast-1a を選択
パブリックIPの自動割り当て 無効化
既存のセキュリティグループを選択する default
  1. [インスタンスを起動] ボタンをクリック。
  2. インスタンス一覧に戻り、状態が 実行中(running) になることを確認する。
  3. インスタンスの[ネットワーキング]タブで アベイラビリティゾーンが ap-northeast-1aになっていることを確認する。

いくつかの表示エラーメッセージがありますが、これは権限がないだけですので問題ありません。
マネジメントコンソールからEC2インスタンスを起動するために、必要な権限をIAMポリシーで設定しています。

「You are not authorized to perform this operation. User: arn:aws:sts::123456789012:assumed-role/0handson/yamashita is not authorized to perform: ec2:DescribeVolumes because no identity-based policy allows the ec2:DescribeVolumes action」

例えば上記のメッセージは0handsonというIAMロールにはec2:DescribeVolumesというAPIアクションの権限が、アイデンティティベースのポリシーで許可されていないことを示しています。

ポイント

  • EC2インスタンスは起動時に1つのAZを選択して起動します。
  • 複数AZに冗長化する場合はそれぞれのAZに起動したり、オートスケーリングを使います。
  • マネジメントコンソールからの操作もAPIアクションが実行されています。

タスク 3:CloudShellを起動してAWS CLIでEC2インスタンスを起動する

目的

AWS CLIコマンドでEC2インスタンスを起動する。

手順

  1. マネジメントコンソール右上の CloudShell アイコン(>_)を右クリックして CloudShellを新しいタブなど別のタブで起動します。または上部検索フィールドに「CloudShell」と入力してアクセスします。

  2. CloudShellが起動したら、現在の認証情報を確認します。

認証情報が表示されるので確認します。

  1. 利用可能な AMI IDを確認します。(Amazon Linux 2023 の最新 AMI)

  1. 取得した AMI ID を使って EC2 インスタンスを起動します。

起動リクエストを受け付けて、EC2インスタンスの詳細などが表示されます。
[Q]キーで表示を中断できます。

  1. 起動したインスタンスの ID と AZ を確認する:

次のような結果が表示されます。
–output tableとしているので、表形式で表示されています。


| DescribeInstances |
+———————+——————-+————–+
| i-071c0d5870d2cb9ea| ap-northeast-1a | running |
+———————+——————-+————–+

ポイント

  • CloudShell はマネジメントコンソールにサインインしている IAM ユーザーの認証情報を自動的に使用するため、認証情報の設定が不要です。
  • CLIコマンドもマネジメントコンソールと同様にAWS APIアクションを呼び出しています。

タスク 4:CloudShellでPython boto3を使ってEC2インスタンスを起動する

目的

AWS SDK(Python boto3)を使って、プログラムからEC2インスタンスを起動します。

手順

  1. CloudShell で Python3 が使えることを確認する:

Pythonのバージョン、SDK(boto3)の情報が表示されます。

  1. インラインで Python スクリプトを作成・実行する:

以下のような情報が表示されれば成功です。

使用するAMI ID: ami-04d11c012a67b33a4
起動したインスタンス ID: i-081f9e2aa404e052c
AZ: ap-northeast-1c
状態: pending

  1. マネジメントコンソールの EC2 インスタンス一覧で handson-boto3 が起動していることを確認します。

ポイント

  • boto3は AWSのPython SDKです。CloudShellにはプリインストールされているためインストール不要です。
  • CloudShellのIAM 認証情報を自動的に使用するため、認証情報の設定が不要です。

タスク 5:CloudShell から署名バージョン4を使って EC2 インスタンスを起動する

目的

AWS APIの署名バージョン4(SigV4)を手動で構築し、HTTPリクエストを直接送信してEC2インスタンスを起動する仕組みを体験します。

概要

マネジメントコンソール・CLI・SDK はすべて、最終的に署名バージョン4で署名されたHTTPリクエストをAWS APIエンドポイントに送信しています。このタスクではPythonで署名を手動作成し、その仕組みを理解します。

署名バージョン4の4ステップ

  1. 正規リクエストを作成
  2. 正規リクエストと追加メタデータを使って署名の文字列を作成
  3. AWS シークレットアクセスキーから署名キーを取得し、署名を作成
  4. 作成した署名を Authorizationヘッダーまたはクエリパラメータに追加

手順

  1. CloudShell で Python スクリプトファイルを作成する:

  1. スクリプトを実行する:

  1. マネジメントコンソールの EC2 インスタンス一覧で handson-sigv4 が起動していることを確認します。

ポイント

  • Authorization ヘッダーには以下の4要素が含まれます:
    • AWS4-HMAC-SHA256(アルゴリズム)
    • Credential(アクセスキー ID / 日付 / リージョン / サービス)
    • SignedHeaders(署名対象ヘッダーの一覧)
    • Signature(HMAC-SHA256 で計算された署名)
  • CLI や SDK はこの署名処理を自動的に行っています。
  • 一時認証情報(CloudShell)の場合は x-amz-security-token ヘッダーも必要。

クリーンアップ

ハンズオンで作成したリソースをすべて削除します。

1. EC2 インスタンスの終了

マネジメントコンソールで起動したEC2インスタンスを選択して、[インスタンスの状態]-[インスタンスを終了(削除)]を選択して、確認画面で[終了(削除)]をクリックします。

2. ハンズオンユーザーの削除

ハンズオン用に作成したIAMポリシーやIAMユーザー、IAMロールがあれば必要に応じて削除します。

まとめ

タスク 方法 認証情報の設定
タスク 1〜2 マネジメントコンソール コンソールへのサインイン
タスク 3 AWS CLI CloudShellが自動提供
タスク 4 Python boto3 CloudShellが自動提供
タスク 5 署名バージョン4(手動) CloudShell の一時認証情報をboto3経由で取得

最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS

  関連記事

AWS Systems Managerパラメータストアで「Parameter name must be a fully qualified name.」

パラメータストアでパラメータ階層を作成しようとして、パラメータ名に例えば「wor …

JAWS-UG関西「AI で人を笑わせてみよう!ハンズオン」に参加しました

AI で人を笑わせてみよう!ハンズオン 灼熱の7月最終日にJAWS-UG関西のオ …

Amazon CloudWatch クロスリージョンクロスアカウントダッシュボードを作成

本ブログのCloudFrontとWAFのアカウントと、EC2、RDS、S3などオ …

Aurora Serverless Data APIを有効にしてLambdaからクエリを実行

Aurora Serverless作成 MySQLを作成しました。 作成時にDa …

EC2 Auto Recovery機能を設定しておいた

以前EC2インスタンスのリタイア対象になったこともあり、というより、やっておいて …

Cloud9初回アクセス時にCodeCommitのリポジトリを自動でクローンする

CloudFormationからCloud9環境を作成する際に、Reposito …

CloudFormationで起動テンプレートのバージョン更新をした際にAuto ScalingのEC2インスタンスを置き換える

やりたいこと タイトルのとおり、起動テンプレートのバージョン変更(AMIの置換) …

AWS Toolkit for Eclipseで「Error Message: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.」

AWS Toolkit for Eclipseをセットアップ(2021年版)の環 …

Amazon SNSサブスクリプションフィルターを設定してPython(boto3)からPublish

上記のような構成でRocketChatを使うとき使わないときがあります。 都度都 …

「CMC_Central 2024」に参加しました

個人サポーターとしてCMC_Central 2024に参加しました。 オープニン …