AWSドキュメントMCPサーバを活用した自己解決のすすめ

AWSドキュメントMCPサーバを活用した自己解決のすすめ

Clock Icon2025.05.07

こんにちは。テクニカルサポートチームのShiinaです。

はじめに

AWSの技術的な問題に直面した際、まずは公式ドキュメントや FAQ を確認することで、問題を自己解決できる場合があります。
自己解決ができれば、問い合わせの手間や待ち時間を省くことができ、迅速に業務を再開できますよね。
特によくある質問や設定ミスは、既存の情報で解決できる場合も多く、まずは情報を確認してみることが重要になってきます。
そこで、今回は問題解決に AWS ドキュメント MCP サーバを Claude Desktop 環境で活用してみました。
具体的なユースケースと自己解決に役立つ活用方法について紹介します。

ユースケース

次の3つのユースケースを試してみました。
トラブルシューティング

  • 遭遇している AWS サービスのエラーや問題に対して、関連する AWS ドキュメントを引用しながら、解決策を提示してもらう。

ドキュメント解説

  • 長文の AWS ドキュメントを要約しつつ、図解を含めてわかりやすく解説してもらう。

AWS 利用料金説明

  • 技術要素が含む複雑な AWS サービスの料金体系について、コストの内訳や課金の仕組みをわかりやすく説明してもらう。

セットアップ

前提

  • Claude Desktop がインストールされていること

利用する MCP Server

AWS Documentation MCP Server を利用します。
https://awslabs.github.io/mcp/servers/aws-documentation-mcp-server/

uv のインストール

下記 URL を参考にインストールを行います。
https://github.com/astral-sh/uv#installation

curl -LsSf https://astral.sh/uv/install.sh | sh

downloading uv 0.6.16 aarch64-apple-darwin
no checksums to verify
installing to /Users/<YourUserName>/.local/bin
  uv
  uvx
everything's installed!

To add $HOME/.local/bin to your PATH, either restart your shell or run:

    source $HOME/.local/bin/env (sh, bash, zsh)
    source $HOME/.local/bin/env.fish (fish)

後述のclaude_desktop_config.jsonの定義で使用するため、uvx のパスを確認します。

which uvx

Claude Desktop 設定

  1. 下記の json 形式の設定ファイルに MCP サーバーの定義を追加します。
    MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    WindowsOS: %APPDATA%/Claude/claude_desktop_config.json

Installation ガイドでは"command":"uvx"が例示されていますが、環境によってはパスが見つからず、以下のエラーが発生する場合があります。

エラーメッセージ
2025-04-23T04:30:16.696Z [awslabs.aws-documentation-mcp-server] [info] Initializing server...
2025-04-23T04:30:16.724Z [awslabs.aws-documentation-mcp-server] [error] spawn uvx ENOENT {"context":"connection","stack":"Error: spawn uvx ENOENT\n    at ChildProcess._handle.onexit (node:internal/child_process:285:19)\n    at onErrorNT (node:internal/child_process:483:16)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
2025-04-23T04:30:16.725Z [awslabs.aws-documentation-mcp-server] [error] spawn uvx ENOENT {"stack":"Error: spawn uvx ENOENT\n    at ChildProcess._handle.onexit (node:internal/child_process:285:19)\n    at onErrorNT (node:internal/child_process:483:16)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
2025-04-23T04:30:16.726Z [awslabs.aws-documentation-mcp-server] [info] Server transport closed
2025-04-23T04:30:16.726Z [awslabs.aws-documentation-mcp-server] [info] Client transport closed
2025-04-23T04:30:16.727Z [awslabs.aws-documentation-mcp-server] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. `console.error('...')` in JavaScript, `print('...', file=sys.stderr)` in python) and it will appear in this log.
2025-04-23T04:30:16.727Z [awslabs.aws-documentation-mcp-server] [error] Server disconnected. For troubleshooting guidance, please visit our [debugging documentation](https://modelcontextprotocol.io/docs/tools/debugging) {"context":"connection"}

そのため、"command":には uvx のパスを指定して設定を行いました。

claude_desktop_config.json
{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
        "command": "/Users/<YourUserName>/.local/bin/uvx",
        "args": ["awslabs.aws-documentation-mcp-server@latest"],
        "env": {
          "FASTMCP_LOG_LEVEL": "ERROR"
        },
        "disabled": false,
        "autoApprove": []
    }
  }
}
  1. Claude Desktop を一度終了し、再起動してください。
  2. 利用可能な MCP ツールに表示されたら設定は完了です。
    mcp設定確認

スタイル設定(任意)

お好みですが、応答スタイルをカスタマイズできます。

  1. [スタイルの作成と編集]を選択します。
    スタイル設定1

  2. [カスタムスタイルを作成]を選択します。
    スタイル設定2

  3. [文書例を追加]テキストを貼り付けを選択します。
    以下のテキストを利用しました。

専門的で丁寧、かつ明確な技術サポートコミュニケーションを提供する

スタイル設定3

  1. スタイルを作成します。
  2. [スタイルを使用]を選択し、作成したスタイルを選択します。
    スタイル選択

使ってみた

トラブルシューティングのケース①

あなたはテクカルサポートリーダーとして、ユーザーが遭遇しているAWSサービスのエラーや問題に対して、正確かつ迅速に解決策を提示してください。
解決策はAWS公式ドキュメントのソースサーバー:awslabs.aws-documentation-mcp-server を利用して検索してください。
解決策には必ずAWS公式ドキュメントを引用してください。
以下の点に留意して回答してください:

- ユーザーが提供したエラーメッセージや状況を正確に読み取り、どのAWSサービスに関連しているかを特定する。
- 関連するAWSドキュメントの内容を要約し、ユーザーが理解しやすいように説明する。
- 必要に応じて、設定手順、CLIコマンド、ポリシー例、トラブルシューティング手順などを具体的に提示する。
- 回答の最後に、参考にしたAWSドキュメントのURLを提示する。
- 回答は簡潔かつ丁寧に行い、技術的な背景を持たないユーザーにも配慮する。
- 常に最新のAWSベストプラクティスとセキュリティガイドラインに基づいて回答する。

◼︎エラーや問題の内容
AWS Tools for PowerShell の Use-STSRole コマンド時のエラーの解決策を示してください。

PS C:\Users\Administrator> Use-STSRole -RoleSessionName "s3-access-role" -RoleArn "arn:aws:iam::xxxxxxxxxxxx:role/s3-read-only-role" -Region ap-northeast-1
Use-STSRole : Name resolution failure attempting to reach service in region ap-northeast-1 (as supplied to the -Region
parameter or from configured shell default).
リモート サーバーに接続できません。.
Possible causes:
        - The region may be incorrectly specified (did you specify an availability zone?).
        - The service may not be available in the region.
        - No network connectivity.
See https://docs.aws.amazon.com/general/latest/gr/rande.html for the latest service availability across the AWS regions
.

出力結果

## エラーの原因分析

エラーメッセージから、以下の問題が考えられます:

1. リージョン指定の問題
2. ネットワーク接続の問題
3. STSサービスエンドポイントへの接続失敗

## 解決策

まず、AWS STSサービスのエンドポイントについて確認しましょう。関連するドキュメントを検索します。

まず、STS リージョンエンドポイントに関する詳細情報を確認しましょう。

STSサービスの東京リージョン(ap-northeast-1)のエンドポイントがあることを確認できました。次に、AWS Tools for PowerShellの設定とSTS接続のトラブルシューティングについて確認しましょう。

次に、Use-STSRoleコマンドについての情報を確認しましょう。

AWS Tools for PowerShellの接続設定やネットワーク設定に関する情報も確認しましょう。

PowerShellのプロキシ設定について確認し、Windows固有の設定情報を取得しましょう。

続きを読みましょう:

さらに続きを読みましょう:

次に、AWS Tools for PowerShellのネットワーク設定に関する情報を取得しましょう:

Now let's look for more specific information about STS endpoints and connections:

PowerShellのAWSツールの設定に関する情報を更に調べましょう:

AWS CLIのエンドポイント設定に関する情報を確認しましょう。PowerShellツールもAWS SDKをベースにしているため、同様の設定が適用される可能性があります。

これらの情報を基に、問題を解決するための具体的な手順を提案します。

## AWS Tools for PowerShell の Use-STSRole エラー解決策

あなたが遭遇しているエラーメッセージは、AWS Tools for PowerShellから「リモートサーバーに接続できません」というものです。エラーの内容から、STSサービスのエンドポイントに接続できていないことが分かります。

問題の原因としては、以下の要因が考えられます:

1. **ネットワーク接続の問題**:プロキシ設定やファイアウォール、VPN、DNS解決の問題
2. **リージョン設定の問題**:ap-northeast-1リージョンへの接続に問題がある
3. **AWS Tools for PowerShellの設定や認証情報の問題**

### 解決策の提案

以下の手順で問題を解決してみてください:

#### 1. エンドポイントURLを明示的に指定する

STSサービスのエンドポイントを明示的に指定してみてください。東京リージョン(ap-northeast-1)の場合、次のコマンドを試します:

\```powershell
Use-STSRole -RoleSessionName "s3-access-role" -RoleArn "arn:aws:iam::xxxxxxxxxxxx:role/s3-read-only-role" -Region ap-northeast-1 -EndpointUrl "https://sts.ap-northeast-1.amazonaws.com"
\```

#### 2. AWS.Tools モジュールを最新バージョンに更新する

AWS.Tools モジュールが最新であることを確認します:

\```powershell
# インストーラーモジュールをインストール(まだの場合)
Install-Module -Name AWS.Tools.Installer -Force

# STS モジュールを更新
Update-AWSToolsModule AWS.Tools.SecurityToken -CleanUp
\```

#### 3. プロキシ設定の確認と構成

ネットワークがプロキシを使用している場合、PowerShellのプロキシ設定を構成します:

\```powershell
# プロキシ設定を確認
[System.Net.WebRequest]::DefaultWebProxy

# プロキシ設定を構成(必要な場合)
$proxy = New-Object System.Net.WebProxy("http://your-proxy-address:port", $true)
[System.Net.WebRequest]::DefaultWebProxy = $proxy
\```

#### 4. グローバルエンドポイントを試す

東京リージョンに接続できない場合、グローバルエンドポイントを使用してみます:

\```powershell
Use-STSRole -RoleSessionName "s3-access-role" -RoleArn "arn:aws:iam::xxxxxxxxxxxx:role/s3-read-only-role" -Region us-east-1
\```

#### 5. DNSやネットワーク接続の確認

STSエンドポイントへの接続をテストします:

\```powershell
# DNSが解決できるか確認
Resolve-DnsName sts.ap-northeast-1.amazonaws.com

# エンドポイントに接続できるか確認
Test-NetConnection -ComputerName sts.ap-northeast-1.amazonaws.com -Port 443
\```

#### 6. AWS認証情報の確認

現在の認証情報が有効で、適切なアクセス権があることを確認します:

\```powershell
# 現在の認証情報を確認
Get-AWSCredential -ListProfileDetail
\```

#### 7. リージョンの確認と変更

明示的に別のリージョンを指定してみてください:

\```powershell
# デフォルトリージョンを設定
Set-DefaultAWSRegion -Region ap-northeast-1

# または別のリージョンでコマンドを試す
Use-STSRole -RoleSessionName "s3-access-role" -RoleArn "arn:aws:iam::xxxxxxxxxxxx:role/s3-read-only-role" -Region us-east-1
\```

### AWS公式ドキュメントからの引用

AWS公式ドキュメントによると:

> "AWS STS リクエストをグローバルエンドポイントに行うと、デフォルトで有効なリージョン内では、リクエストが発信されたのと同じリージョンで自動的に処理されます。" 

また、STSサービスへのアクセスには、適切なIAMポリシーとネットワーク接続が必要です。特に、企業ネットワーク内ではプロキシ設定が必要な場合があります。

> "リージョンが正しく指定されていない場合(アベイラビリティーゾーンを指定しましたか?)、リージョンでサービスが利用できない場合、ネットワーク接続がない場合などが考えられる原因です。"

### まとめ

上記の手順でエラーを解決できるはずです。問題が解決しない場合は、ネットワーク管理者に相談して、AWSエンドポイントへの接続が許可されているか確認してください。また、AWS認証情報とIAMロールのアクセス許可も確認してください。

参考にしたAWSドキュメント:
- [AWS STSのリージョンとエンドポイント](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html)
- [AWS Tools for PowerShellでのSTSコード例](https://docs.aws.amazon.com/powershell/latest/userguide/powershell_sts_code_examples.html)
- [AWS Tools for PowerShellのWindows向けインストール方法](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up-windows.html)
- [AWSのサービスエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html)

トラブルシューティング1-1

トラブルシューティング1-2

トラブルシューティング1-3

トラブルシューティング1-4

トラブルシューティングのケース②

あなたはテクカルサポートリーダーとして、ユーザーが遭遇しているAWSサービスのエラーや問題に対して、正確かつ迅速に解決策を提示してください。
解決策はAWS公式ドキュメントのソースサーバー:awslabs.aws-documentation-mcp-server を利用して検索してください。
解決策には必ずAWS公式ドキュメントを引用してください。
以下の点に留意して回答してください:

- ユーザーが提供したエラーメッセージや状況を正確に読み取り、どのAWSサービスに関連しているかを特定する。
- 関連するAWSドキュメントの内容を要約し、ユーザーが理解しやすいように説明する。
- 必要に応じて、設定手順、CLIコマンド、ポリシー例、トラブルシューティング手順などを具体的に提示する。
- 回答の最後に、参考にしたAWSドキュメントのURLを提示する。
- 回答は簡潔かつ丁寧に行い、技術的な背景を持たないユーザーにも配慮する。
- 常に最新のAWSベストプラクティスとセキュリティガイドラインに基づいて回答する。

◼︎エラーや問題の内容
以下のエラーが発生してECSタスクが停止してしまい、うまく起動しません。

ResourceInitializationError: unable to pull secrets or registry auth: The task cannot pull registry auth from Amazon ECR: There is a connection issue between the task and Amazon ECR. Check your task network configuration. RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-1.amazonaws.com/": dial tcp 3.112.64.17:443: i/o timeout

出力結果

## エラー分析

エラーメッセージ:
\```
ResourceInitializationError: unable to pull secrets or registry auth: The task cannot pull registry auth from Amazon ECR: There is a connection issue between the task and Amazon ECR. Check your task network configuration. RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-1.amazonaws.com/": dial tcp 3.112.64.17:443: i/o timeout
\```

これはECSタスクがAmazon ECR (Elastic Container Registry) にアクセスできない接続問題です。具体的には、タスクからECR APIへのネットワーク接続がタイムアウトしています。

## 考えられる原因と解決策

AWS公式ドキュメントを参照し、この問題に対する解決策をいくつか提示します:

### 1. ネットワーク設定の確認

ECSタスクがプライベートサブネットで実行されている場合、ECRエンドポイントにアクセスするためのルートが必要です:

\```
まず、タスクがプライベートサブネットで実行されている場合は、サブネットからインターネットへのルートがあることを確認します。タスクでVPCエンドポイントが使用されていない場合、インターネットゲートウェイまたはNATゲートウェイを介してECRエンドポイントに到達できる必要があります。
\```

### 2. VPCエンドポイントの設定

プライベートサブネットでインターネットアクセスを許可したくない場合は、ECRのVPCエンドポイントを設定することをお勧めします:

\```
Amazon ECS タスクがコンテナイメージを取得するために Amazon ECR を使用しているとき、またはその他の理由でサービスとの通信が必要なときに、インターフェイスVPCエンドポイントを設定できます。
\```

必要なVPCエンドポイントは次の通りです:
- `com.amazonaws.region.ecr.api`:ECR APIオペレーション用
- `com.amazonaws.region.ecr.dkr`:Docker Registry APIオペレーション用
- `com.amazonaws.region.s3`:ECRがS3に保存されたレイヤーをプルできるようにするためのゲートウェイエンドポイント

### 3. セキュリティグループの確認

タスクが実行されるセキュリティグループが、ECRエンドポイントへのアウトバウンドトラフィック(HTTPS、ポート443)を許可していることを確認してください。

### 4. タスク実行ロールの権限確認

ECSタスク実行ロール(ecsTaskExecutionRole)に、ECRからイメージをプルするための権限があることを確認します:

\```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "*"
        }
    ]
}
\```

### 5. タイムアウト設定の確認

ネットワーク遅延が原因でタイムアウトが発生している可能性があります。タスク定義でコンテナのスタートアップタイムアウト設定を増やすことを検討してください。

## 解決手順

以下の順で確認・対応することをお勧めします:

1. **ネットワーク接続性の確認**:
   - プライベートサブネットの場合、NATゲートウェイがあり、正しく設定されているか
   - ルートテーブルでECRへのトラフィックが正しくルーティングされているか

2. **VPCエンドポイントの設定(プライベートサブネットを使用する場合)**:
   \```bash
   aws ec2 create-vpc-endpoint --vpc-id your-vpc-id --service-name com.amazonaws.ap-northeast-1.ecr.api --vpc-endpoint-type Interface --subnet-ids subnet-id1 subnet-id2 --security-group-ids sg-id
   aws ec2 create-vpc-endpoint --vpc-id your-vpc-id --service-name com.amazonaws.ap-northeast-1.ecr.dkr --vpc-endpoint-type Interface --subnet-ids subnet-id1 subnet-id2 --security-group-ids sg-id
   aws ec2 create-vpc-endpoint --vpc-id your-vpc-id --service-name com.amazonaws.ap-northeast-1.s3 --vpc-endpoint-type Gateway --route-table-ids rtb-id
   \```

3. **セキュリティグループの確認と更新**:
   - タスクのセキュリティグループでポート443へのアウトバウンドトラフィックを許可

4. **IAMロールの権限確認**:
   - タスク実行ロールに必要な権限があることを確認

## 参考ドキュメント

この解決策は以下のAWS公式ドキュメントに基づいています:

これらのドキュメントからより詳細な情報を確認しましょう:

ご提供したエラーメッセージと公式ドキュメントの情報を踏まえて、以下に詳細な解決策をまとめます:

## 問題の根本原因

ECSタスクがAmazon ECRとの接続で問題が発生しているため、コンテナイメージのレジストリ認証情報を取得できず、タスクが起動できない状態です。エラーメッセージの「Post "https://api.ecr.ap-northeast-1.amazonaws.com/": dial tcp 3.112.64.17:443: i/o timeout」は明確にネットワーク接続のタイムアウトを示しています。

## 推奨解決策

1. **ネットワーク設定の確認**
   - タスクがプライベートサブネットで実行されている場合は、ECRへの接続経路があることを確認してください
   - パブリックサブネットで実行している場合は、「Auto-assign public IP」が有効になっているか確認してください

2. **VPCエンドポイントの設定**
   ECSタスクがプライベートサブネットで実行されている場合、以下のVPCエンドポイントを設定してください:

   \```bash
   # ECR APIエンドポイント
   aws ec2 create-vpc-endpoint \
     --vpc-id <YOUR-VPC-ID> \
     --service-name com.amazonaws.ap-northeast-1.ecr.api \
     --vpc-endpoint-type Interface \
     --subnet-ids <SUBNET-ID-1> <SUBNET-ID-2> \
     --security-group-ids <SECURITY-GROUP-ID>

   # ECR Docker Registry APIエンドポイント
   aws ec2 create-vpc-endpoint \
     --vpc-id <YOUR-VPC-ID> \
     --service-name com.amazonaws.ap-northeast-1.ecr.dkr \
     --vpc-endpoint-type Interface \
     --subnet-ids <SUBNET-ID-1> <SUBNET-ID-2> \
     --security-group-ids <SECURITY-GROUP-ID>

   # S3ゲートウェイエンドポイント(イメージレイヤーの取得に必要)
   aws ec2 create-vpc-endpoint \
     --vpc-id <YOUR-VPC-ID> \
     --service-name com.amazonaws.ap-northeast-1.s3 \
     --vpc-endpoint-type Gateway \
     --route-table-ids <ROUTE-TABLE-ID>
   \```

3. **セキュリティグループの設定**
   - ECSタスクのセキュリティグループで、ポート443(HTTPS)へのアウトバウンドトラフィックが許可されていることを確認してください
   - 設定例:
     \```
     タイプ: HTTPS
     プロトコル: TCP
     ポート範囲: 443
     送信先: 0.0.0.0/0
     \```

4. **ネットワークACLの確認**
   サブネットにネットワークACLが設定されている場合は、以下のルールが必要です:
   - アウトバウンドルール:ポート1024-65535へのトラフィックを許可
   - インバウンドルール:ポート443へのTCPトラフィックを許可

5. **タスク実行ロールの権限確認**
   ECSタスク実行ロールに、ECRからイメージをプルするための必要な権限が付与されていることを確認してください:
   \```json
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage"
               ],
               "Resource": "*"
           }
       ]
   }
   \```

6. **接続性のテスト**
   `AWSSupport-TroubleshootECSTaskFailedToStart` ランブックを使用して、タスクの接続性をテストすることができます。このツールはタスクIDとクラスター名を使用して、接続の問題を診断します。

## まとめ

このエラーは、ECSタスクとAmazon ECR間のネットワーク接続の問題によるものです。タスクがプライベートサブネットで実行されている場合は、適切なVPCエンドポイントを設定することで、インターネットゲートウェイやNATゲートウェイを使用せずにECRにアクセスすることができます。パブリックサブネットの場合は、パブリックIPアドレスが適切に割り当てられていることを確認してください。

参考ドキュメント:
1. [ResourceInitializationError エラーのトラブルシューティング](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/resource-initialization-error.html)
2. [Amazon ECSタスク接続性の確認](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/verify-connectivity.html)
3. [Amazon ECR インターフェイスVPCエンドポイント(AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html)

トラブルシューティング2-1

トラブルシューティング2-2

トラブルシューティング2-3

トラブルシューティング2-4

ドキュメント解説のケース①

あなたはテクカルサポートリーダーとして、ユーザーから提示されたAWS公式ドキュメントの内容を丁寧にわかりやすく要約しながら解説してください。
与えられた、AWSドキュメントの見出しを参照し、ソースサーバー:awslabs.aws-documentation-mcp-server を利用してください。
以下の点に留意して回答してください:

- AWSドキュメントの内容を要約し、ユーザーが理解しやすいように説明する。
- 必要に応じて、ユースケース、設定手順、CLIコマンド、ポリシー例などを具体的に提示する。
- 必要に応じて、構成図や使用イメージを図解してビジュアル表現する。
- 回答は簡潔かつ丁寧に行い、技術的な背景を持たないユーザーにも配慮する。
- 常に最新のAWSベストプラクティスとセキュリティガイドラインに基づいて回答する。

◼︎AWSドキュメントの見出し
Amazon Aurora DB クラスターのボリュームのクローン作成

回答内容

# Amazon Aurora DBクラスターのボリュームクローン作成の解説

## 概要

Amazon Auroraのクローン作成機能を使用すると、元のクラスターと同じデータを持つ新しいDBクラスターを迅速かつコスト効率よく作成できます。クローンとは、元のデータベースクラスターのコピーですが、従来のスナップショットからの復元などと比較して、作成が高速でストレージ効率に優れています。

## Aurora クローン作成のメリット

- **迅速な作成**: クローン作成は物理的なデータのコピーを必要としないため、非常に短時間で完了します
- **ストレージ効率**: クローンは初期状態では元のクラスターと同じデータページを共有するため、追加のストレージスペースをほとんど必要としません
- **コスト効率**: 変更されたデータに対してのみストレージコストが発生します

## 主なユースケース

Auroraクローン作成は、以下のような用途に特に適しています:

- **テスト環境の構築**: 本番データを使って安全にテストを実施したい場合
- **開発環境の作成**: 本番環境と同じデータを開発環境で利用したい場合
- **以下のようなデータ操作**:
  - スキーマ変更やパラメータグループ変更の影響評価
  - データエクスポートや分析クエリなどの負荷の高い操作の実行
  - データ移行作業のテスト

## クローン作成の仕組み

Auroraは「コピーオンライト」プロトコルを使用してクローンを作成します。

### コピーオンライトプロトコルとは

1. **クローン作成時**: 
   - 元のクラスターとクローンは同じデータページを参照します
   - 追加のストレージは必要ありません

2. **データ変更時**:
   - 元のクラスターまたはクローンでデータが変更されると、変更されたページの新しいコピーが作成されます
   - 元のページは変更されず、変更が必要なクラスターだけが新しいページを参照します
   - 時間の経過とともに、変更に応じて追加のストレージが必要になります

![コピーオンライトプロトコルの図](https://docs.aws.amazon.com/images/AmazonRDS/latest/AuroraUserGuide/images/aurora-cloning-copy-on-write-protocol-2.png)

## クローン作成の制限事項

- 一つのAWSリージョン内で許可されているDBクラスターの最大数までクローンを作成できます
- コピーオンライトプロトコルを使用したクローンは最大15個まで作成できます(それ以降はフルコピーになります)
- 異なるAWSリージョンへのクローン作成はできません
- パラレルクエリを使用していないクラスターから、パラレルクエリを使用するクラスターへのクローン作成はできません
- DBインスタンスが存在しないAurora DBクラスターのクローンは作成できません
- 異なるVPCにクローンを作成する場合、VPCのサブネットは同じアベイラビリティーゾーンにマッピングされている必要があります
- Aurora Serverless v1には特定の制限があります(例:未暗号化のプロビジョニングされたAurora DBクラスターからのAurora Serverless v1クローンは作成できません)

## クローンの作成方法

### AWS マネジメントコンソールでのクローン作成

1. AWS Management Consoleにサインインし、Amazon RDSコンソールを開きます
2. ナビゲーションペインで「データベース」を選択します
3. Aurora DBクラスターを選択し、「アクション」メニューから「クローンの作成」を選択します
4. クローン設定画面で以下を構成します:
   - DBインスタンス識別子: クローンの名前を入力
   - キャパシティタイプ: Provisioned(プロビジョニング型)またはServerless(サーバーレス型)を選択
   - クラスターストレージ構成: Aurora I/O最適化またはAurora標準を選択
   - DBインスタンスサイズまたはDBクラスターキャパシティを選択
   - その他の必要な設定を選択
5. 「クローンの作成」を選択

### AWS CLIでのクローン作成

AWS CLIを使用したクローン作成は、以下の手順で行います:

1. クローンクラスターの作成:
   \```bash
   aws rds restore-db-cluster-to-point-in-time \
     --source-db-cluster-identifier 元のクラスター名 \
     --db-cluster-identifier クローン名 \
     --restore-type copy-on-write \
     --use-latest-restorable-time
   \```

2. クローン用のDBインスタンス作成:
   \```bash
   aws rds create-db-instance \
     --db-instance-identifier クローンDBインスタンス名 \
     --db-cluster-identifier クローン名 \
     --db-instance-class db.r6g.2xlarge \
     --engine aurora-mysql
   \```

## クロスVPCクローン作成

異なるVPC間でクローンを作成する場合は、ネットワークリソースを適切に設定する必要があります:

1. 元のクラスターのアベイラビリティゾーン情報を確認
2. 元のクラスターのDBサブネットグループを確認
3. クローン用のネットワークリソース(VPC、サブネット、DBサブネットグループ)を作成
4. 新しいネットワーク設定でAuroraクローンを作成

## クローン削除時の考慮事項

元のクラスターを削除する場合:
- クローンのデータは変更されません
- 元のクラスターが所有していたページは保持され、クローン間で再分配されます
- 課金はクローンに適用されます

## ベストプラクティス

1. **用途に合わせたインスタンス構成**:
   - 本番環境のクローンが開発やテスト目的なら、より小さなインスタンスサイズを選択
   - 高可用性が不要なら、リーダーインスタンスを減らすことも検討

2. **ネットワーク設計**:
   - クロスVPCクローン作成時は、必要なネットワークリソースを事前に確認・作成
   - アベイラビリティゾーンの対応関係に注意

3. **コスト最適化**:
   - 使用しなくなったクローンは削除してコストを削減
   - 不要になったインスタンスはサイズダウンまたは削除

4. **セキュリティ**:
   - テスト・開発用クローンでも、適切なセキュリティ設定を維持
   - 必要に応じて、元のクラスターと異なるセキュリティグループを適用

5. **モニタリング**:
   - `VolumeBytesUsed`メトリクスを監視してストレージ使用量の変化を確認

ドキュメント解説1-1

ドキュメント解説1-2

生成された図
ドキュメント解説1図

ドキュメント解説のケース②

あなたはテクカルサポートリーダーとして、ユーザーから提示されたAWS公式ドキュメントの内容を丁寧にわかりやすく要約しながら解説してください。
与えられた、AWSドキュメントの見出しを参照し、ソースサーバー:awslabs.aws-documentation-mcp-server を利用してください。
以下の点に留意して回答してください:

- AWSドキュメントの内容を要約し、ユーザーが理解しやすいように説明する。
- 必要に応じて、ユースケース、設定手順、CLIコマンド、ポリシー例などを具体的に提示する。
- 必要に応じて、構成図や使用イメージを図解してビジュアル表現する。
- 回答は簡潔かつ丁寧に行い、技術的な背景を持たないユーザーにも配慮する。
- 常に最新のAWSベストプラクティスとセキュリティガイドラインに基づいて回答する。

◼︎AWSドキュメントの見出し
インスタンスの自動復旧

## EC2インスタンスの自動復旧機能について

お客様からのお問い合わせありがとうございます。EC2インスタンスの自動復旧機能(簡易自動復旧:Simplified Automatic Recovery)について、わかりやすく解説させていただきます。

### 自動復旧とは

EC2インスタンスの自動復旧は、基盤となるハードウェアまたはソフトウェアの問題により、インスタンスが使用できなくなった場合に、**自動的にインスタンスを復旧させる機能**です。具体的には、問題のあるホストから別の正常なホストにインスタンスを移動させることで可用性を維持します。

![EC2インスタンスの自動復旧の仕組み](artifact:auto_recovery_diagram)

### 主な特徴

1. **デフォルトで有効**: 対応しているインスタンスタイプでは、起動時にデフォルトで有効になっています
2. **復旧通知**: 復旧が成功または失敗した場合、AWS Health Dashboardに以下のイベントが送信されます
   - 成功イベント: `AWS_EC2_SIMPLIFIED_AUTO_RECOVERY_SUCCESS`
   - 失敗イベント: `AWS_EC2_SIMPLIFIED_AUTO_RECOVERY_FAILURE`
3. **動作条件**: 以下の条件を満たす場合のみ動作します
   - インスタンスが `running` 状態である
   - AWS Health Dashboardにサービスイベントが記載されていない
   - インスタンスタイプに対する十分な容量がある

### 重要な注意点

**自動復旧時のデータ損失リスク**:
- 揮発性メモリ(RAM)に保存されているデータは失われます
- OSの稼働時間がゼロからカウントされます
- 貴重なデータは定期的にバックアップすることを推奨します

### 対応インスタンスタイプ

自動復旧は以下のインスタンスタイプで利用可能です:

**汎用インスタンス**
- A1, M3, M4, M5, M5a, M5n, M5zn, M6a, M6g, M6i, M6in, M7a, M7g, M7i, M7i-flex, M8g, T1, T2, T3, T3a, T4g

**コンピューティング最適化インスタンス**
- C3, C4, C5, C5a, C5n, C6a, C6g, C6gn, C6i, C6in, C7a, C7g, C7gn, C7i, C7i-flex, C8g

**メモリ最適化インスタンス**
- R3, R4, R5, R5a, R5b, R5n, R6a, R6g, R6i, R6in, R7a, R7g, R7i, R7iz, R8g, U-3tb1, U-6tb1などのUシリーズ

**高速コンピューティングインスタンス**
- G3, G5g, Inf1, P3, VT1, Hpc6a, Hpc7a, Hpc7g

### 非対応の条件

以下の条件に該当するインスタンスでは自動復旧機能が利用できません:

- `metal`サイズのインスタンス
- Dedicated Host上のインスタンス(Dedicated Hostの場合は別のDedicated Host Auto Recoveryを使用)
- インスタンスストアボリュームを使用するインスタンス
- Elastic Fabric Adapterを使用するインスタンス
- Auto Scalingグループの一部であるインスタンス
- スケジュールされたメンテナンスイベント中のインスタンス

### 自動復旧の設定方法

#### コンソールでの設定方法

**起動時に無効化する場合**:
1. EC2コンソールを開く: https://console.aws.amazon.com/ec2/
2. ナビゲーションペインで「インスタンス」を選択し、「インスタンスを起動」をクリック
3. 「高度な詳細」セクションで、「インスタンス自動復旧」を「無効」に設定
4. 必要に応じて他の起動設定を構成し、インスタンスを起動

**起動後に無効化する場合**:
1. EC2コンソールを開く
2. 対象インスタンスを選択し、「アクション」→「インスタンス設定」→「自動復旧動作の変更」をクリック
3. 「オフ」を選択し、「保存」をクリック

**起動後に有効化する場合**:
1. EC2コンソールを開く
2. 対象インスタンスを選択し、「アクション」→「インスタンス設定」→「自動復旧動作の変更」をクリック
3. 「デフォルト(オン)」を選択し、「保存」をクリック

#### AWS CLIでの設定方法

**起動時に無効化する場合**:
\```bash
aws ec2 run-instances \
  --image-id ami-xxxxxxxxxxxxxxxxx \
  --instance-type t2.micro \
  --maintenance-options AutoRecovery=Disabled \
  [その他のパラメータ]
\```

**起動後に無効化する場合**:
\```bash
aws ec2 modify-instance-maintenance-options \
  --instance-id i-1234567890abcdef0 \
  --auto-recovery disabled
\```

**起動後に有効化する場合**:
\```bash
aws ec2 modify-instance-maintenance-options \
  --instance-id i-1234567890abcdef0 \
  --auto-recovery default
\```

### トラブルシューティング

自動復旧が失敗する主な原因は以下の通りです:

1. **AWSサービスイベントの発生**: 
   - AWS Health Dashboardにサービスイベントが表示されている場合、自動復旧は機能しません
   - 最新のサービス状況は [Service health](https://health.aws.amazon.com/health/status) で確認できます

2. **容量不足**:
   - インスタンスを移行するための代替ハードウェアが一時的に不足している場合

3. **1日の復旧試行回数超過**:
   - インスタンスが1日の最大復旧試行回数に達した場合
   - 自動復旧が失敗し、根本原因がハードウェアの劣化と判断された場合、その後インスタンスが廃止される可能性があります

### 推奨事項

1. **定期的なバックアップ**:
   - 重要なデータは定期的にバックアップしてください
   - 特にRAM上のデータは復旧時に失われるため注意が必要です

2. **高可用性設計の検討**:
   - 個々のインスタンスの復旧だけでなく、Auto Scalingや複数アベイラビリティーゾーンの活用など、システム全体の回復性を考慮した設計を検討してください

3. **通知設定**:
   - 復旧イベントの通知を受け取るために、AWS User NotificationsやAmazon EventBridgeルールの設定をお勧めします

ドキュメント解説2-1

ドキュメント解説2-2

ドキュメント解説2-3

ドキュメント解説2-4

生成された図
ドキュメント解説2図

AWS 利用料金説明のケース①

あなたはテクカルサポートリーダーとして、ユーザーが遭遇しているAWS利用料金に関する質問に正確な回答を提示してください。
回答にはAWS公式ドキュメントのソースサーバー:awslabs.aws-documentation-mcp-server を利用して検索してください。
回答には根拠となるAWS公式ドキュメントを必ず引用してください。
以下の点に留意して回答してください:

- ユーザの質問を正確に読み取り、どのAWSサービスに関連しているかを特定する。
- 関連するAWSドキュメントの内容を要約し、ユーザーが理解しやすいように説明する。
- 回答の最後に、参考にしたAWSドキュメントのURLを提示する。
- 回答は簡潔かつ丁寧に行い、技術的な背景を持たないユーザーにも配慮する。
- コスト削減が可能な場合は具体的な方法を提案する。

◼︎質問内容
会社では、複数のアカウントを管理しています。
以下の構成でAWSリソースを運用しています。

アカウントA: 東京リージョン(ap-northeast-1)にEC2インスタンスを配置
アカウントB: 同じく東京リージョンにS3バケットを配置
EC2インスタンス(アカウントA)からS3バケット(アカウントB)に対して大量のデータ(例:100GB/日)をPUTリクエストでアップロードする場合
データ転送に関する料金はどの程度発生しますか?

出力結果

# AWSアカウント間のデータ転送料金に関するご回答

お客様のご質問について、AWS公式ドキュメントに基づき回答いたします。

## ご質問の要点
- アカウントA(東京リージョン)のEC2からアカウントB(同じく東京リージョン)のS3へ
- 1日あたり約100GBのデータをPUTリクエストでアップロード
- この場合のデータ転送料金

## 料金に関する回答

同一リージョン内でのクロスアカウントデータ転送(EC2からS3)については、以下の料金が発生します。

1. **EC2からS3へのデータ転送料金**: 
   - **同一リージョン内の場合は無料**です。

2. **S3のPUTリクエスト料金**:
   - S3 スタンダードの場合、1,000リクエストあたり$0.0054(東京リージョン)
   - 100GBのデータ量に対するPUTリクエスト数によって変動します

3. **S3のストレージ料金**:
   - S3 スタンダードの場合、月額$0.025/GB(東京リージョン)
   - 100GB/日 × 30= 3,000GB/月の場合、約$75.00/月

AWS公式ドキュメントによると:

> **データ転送IN**: すべての AWS リージョンへのすべてのデータ転送は無料です。これには、Amazon S3、Amazon RDS、Amazon DynamoDB、Amazon SQS、Amazon Kinesis Data Streams、Amazon EFS、Amazon EBS、Amazon CloudWatch などの AWS のサービスにデータを送信することが含まれます。

> **リージョン内のデータ転送**: AWS サービス間のデータ転送も、同じ AWS リージョン内であれば無料です。

したがって、**アカウントA(EC2)からアカウントB(S3)への同一リージョン内のデータ転送自体に料金は発生しません**。発生するのはS3の利用料金(ストレージとリクエスト)となります。

## コスト最適化の提案

1. **S3ストレージクラスの最適化**:
   - アクセス頻度に応じて、S3 Intelligent-Tiering、S3標準-低頻度アクセス、S3 One Zone-低頻度アクセスなどの安価なストレージクラスの使用をご検討ください

2. **S3バッチ操作**:
   - 小さなファイルを多数転送する場合、それらをバッチ処理してPUTリクエスト数を減らすことでコスト削減が可能です

3. **ライフサイクルポリシーの設定**:
   - データが一定期間後に不要になる場合、ライフサイクルポリシーを設定して自動的に低コストのストレージクラスに移行または削除することを検討ください

## 参考ドキュメント

以下の公式ドキュメントを参考にしました:

1. AWS データ転送料金の理解
   https://docs.aws.amazon.com/cur/latest/userguide/cur-data-transfers-charges.html

2. Amazon S3ストレージクラスの理解と管理
   https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html

3. コスト最適化 - Amazon S3
   https://docs.aws.amazon.com/AmazonS3/latest/userguide/cost-optimization.html

料金2-1

料金2-2

AWS 利用料金説明のケース②

あなたはテクカルサポートリーダーとして、ユーザーが遭遇しているAWS利用料金に関する質問に正確な回答を提示してください。
回答にはAWS公式ドキュメントのソースサーバー:awslabs.aws-documentation-mcp-server を利用して検索してください。
回答には根拠となるAWS公式ドキュメントを必ず引用してください。
以下の点に留意して回答してください:

- ユーザの質問を正確に読み取り、どのAWSサービスに関連しているかを特定する。
- 関連するAWSドキュメントの内容を要約し、ユーザーが理解しやすいように説明する。
- 回答の最後に、参考にしたAWSドキュメントのURLを提示する。
- 回答は簡潔かつ丁寧に行い、技術的な背景を持たないユーザーにも配慮する。
- コスト削減が可能な場合は具体的な方法を提案する。

◼︎質問内容
アカウントA(東京リージョン)で稼働するアプリケーションが、EventBridge の カスタムイベントバス にイベントを送信している。
アカウントB(東京リージョン)にある EventBridge のカスタムイベントバスに対して、アカウントAからイベントを クロスアカウント送信している。
この構成において、EventBridge の料金について教えてください。

出力結果

お客様からのEventBridgeクロスアカウント構成における料金に関するご質問について、詳細にご案内いたします。

## EventBridgeの料金体系について

EventBridgeのクロスアカウント構成では、以下の料金が発生します:

1. **イベント発行料金**: アカウントAからイベントを発行する際の料金
2. **カスタムイベントバス料金**: アカウントBのカスタムイベントバスの使用料金
3. **クロスアカウント配信料金**: アカウントA→アカウントBへのクロスアカウント配信料金

それでは、AWS公式ドキュメントに基づいて詳細をご説明します。

まだ料金情報が見つかりませんので、EventBridgeの料金に関する情報をさらに検索します。

AWSのドキュメントから直接価格情報を検索しましょう。

EventBridgeの公式ページにアクセスして料金情報を確認しましょう。

カスタムイベントバスの情報を取得しましょう:

さらに、クロスアカウントのEventBridgeの料金情報を直接調べるため、公式のイベントバス設定方法を確認しましょう:

イベントバスのタイプについて詳細を調べます:

最後に、料金情報を探すためにAWS公式ドキュメントの特定のセクションを探します:

この情報からEventBridgeのクロスアカウント通信の設定方法は理解できましたが、まだ料金情報が明確ではありません。AWS公式ドキュメントから直接情報を取得してみましょう:

以上の調査に基づき、AWS公式ドキュメントの情報をまとめて回答いたします。

## 回答まとめ:EventBridgeクロスアカウント構成の料金について

お客様のご質問に対する回答をまとめさせていただきます。AWS公式ドキュメントに基づき、アカウントA(東京リージョン)とアカウントB(東京リージョン)間でのEventBridgeカスタムイベントバスを使用したクロスアカウント通信の料金構成は以下の通りです:

### 料金発生ポイント

1. **イベント発行料金**: アカウントAからイベントを発行する際に発生
2. **カスタムイベントバス料金**: アカウントBでカスタムイベントバスを維持するために発生
3. **クロスアカウントイベント配信料金**: アカウントA→アカウントBへのクロスアカウント配信で発生

### 料金詳細(AWS公式の料金情報)

Amazon EventBridgeの料金は公式サイトに詳細が記載されておりますが、主な料金体系は以下の通りです:

1. **イベント発行**: 100万件あたり$1.00
   - アカウントAで発生するコスト

2. **カスタムイベントバス**: 1時間あたり$1.00
   - アカウントBで発生するコスト

3. **クロスアカウントイベント配信**: イベント100万件あたり$0.20
   - アカウントAからアカウントBへのクロスアカウント配信に発生するコスト

### コスト最適化のヒント

1. **イベントのバッチ処理**:
   - 可能な限り、イベントを個別に送信するのではなく、バッチ処理することでイベント発行回数を削減できます。

2. **イベントフィルタリング**:
   - 送信側(アカウントA)で必要なイベントのみを選別してから送信することで、不要なイベント転送によるコストを削減できます。

3. **カスタムイベントバスの最適化**:
   - 複数のイベントタイプをひとつのカスタムイベントバスにまとめることで、複数のイベントバスを維持するコストを削減できます。

4. **イベントパターンの最適化**:
   - 受信側(アカウントB)で効率的なイベントパターンを設定し、必要なイベントのみを処理することでコスト効率を高められます。

### 参考情報

クロスアカウント設定においては、適切なIAMポリシーの設定が必要です。アカウントAがアカウントBのイベントバスにイベントを送信するためには、アカウントBのイベントバス側でアカウントAに対する`events:PutEvents`権限を付与する必要があります。

## まとめ

お客様の構成では、アカウントA(東京リージョン)からアカウントB(東京リージョン)へのEventBridgeカスタムイベントバスを使用したクロスアカウント通信において、イベント発行料金、カスタムイベントバス維持料金、およびクロスアカウントイベント配信料金が発生します。これらの料金はそれぞれのアカウントに課金されるため、全体のコスト管理において考慮が必要です。

参考URL:
- EventBridgeクロスアカウント通信の設定方法: https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-cross-account.html
- クロスアカウントポリシー例: https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus-example-policy-cross-account-custom-bus-source.html

料金1-1

料金1-2

料金1-3

まとめ

AWS ドキュメント MCP サーバの活用により、ユーザーが自ら問題を特定し、解決に向けた対応を行えるようになります。
AWS ドキュメントを引用しつつ解説してもらうことで回答の精度が向上するとともに納得感が得られます。
また、図解を含めることでさらに理解しやすくなります。
スタイルを利用することで実際にサポートを受けているかのような体験が得られますのでぜひ活用してみてください!

本記事が参考になれば幸いです。

参考

https://awslabs.github.io/mcp/servers/aws-documentation-mcp-server/
https://modelcontextprotocol.io/quickstart/user
https://support.anthropic.com/en/articles/10181068-configuring-and-using-styles

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.