mcpField
T
troubleshooting-efs

troubleshooting-efs

github.com/awsクラウド・DevOps3.3k6.0k 回インストール今日更新
リポジトリ

troubleshooting-efs について

Amazon EFS の問題を診断・解決するためのドメインスキルです。マウント障害を扱う担当者向けに、ネットワーク、権限、性能、暗号化、DNS を調べ、変更前の確認も重視します。

主な機能

  1. 01EFS 障害の分類
  2. 02NFS クライアント依存関係の確認
  3. 03ネットワークとセキュリティグループの調査
  4. 04IAM と POSIX 権限の診断
  5. 05スループットと性能の分析
  6. 06KMS 暗号化と VPC DNS の確認

活用シーン

  1. 01EFS のマウント失敗やタイムアウトの調査
  2. 02アクセス拒否や権限エラーの追跡
  3. 03スループット低下や高レイテンシの診断
  4. 04暗号化ファイルシステムや DNS 障害への対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aws/agent-toolkit-for-aws --skill troubleshooting-efs

インストール後、Claude Code で/troubleshooting-efsを入力して読み込まれたか確認します。

詳細

EFS のトラブルシューティング

概要

Amazon EFS の問題を診断して解決するためのドメイン知識です。マウントの失敗、NFS の接続性、IAM と POSIX のアクセス許可、スループットとパフォーマンス、暗号化の問題を扱います。

正式なガイダンスについては、EFS のトラブルシューティングを参照してください。

一般的なタスク

0. 依存関係を確認する
  • aws CLI が利用可能であることを必ず確認してください
  • インスタンスに amazon-efs-utils または nfs-utils がインストールされているか必ず確認してください
  • 確認時に確認するのはツールの有無とバージョンのみとし、破壊的なコマンドや変更を加えるコマンドは実行しないでください
  • 必須ツールが不足している場合は、必ずユーザーに伝えてください
  • ツールが利用できない場合に中止するというユーザーの判断を必ず尊重してください
  • 各手順を実行する前に、何を行うのか、なぜ行うのかを説明することを推奨します
  • 書き込みを行うコマンドを表示し、実行前にユーザーの確認を待つことを推奨します
1. 問題を分類する
症状カテゴリ
「wrong fs type」またはマウントコマンドが失敗するA:NFS クライアントの不足
接続がタイムアウトする(2 分以上停止する)B:ネットワーク/セキュリティグループ
「access denied by server」C:IAM/アクセス許可
スループットが遅い、またはレイテンシーが高いD:パフォーマンス
暗号化された FS で NFS サーバーエラーが発生するE:暗号化/KMS
DNS 名の解決に失敗するF:VPC DNS
2. カテゴリ A — NFS クライアントの不足
# Amazon Linux / RHEL / CentOS
sudo yum -y install amazon-efs-utils  # preferred (includes mount helper + TLS)
# OR
sudo yum -y install nfs-utils

# Ubuntu / Debian
sudo apt-get install nfs-common
3. カテゴリ B — ネットワーク/セキュリティグループ

接続タイムアウトは EFS のマウント失敗の第 1 位の原因であり、ほとんどの場合、セキュリティグループが原因です。

  1. インスタンスの AZ にマウントターゲットが存在することを確認します。
aws efs describe-mount-targets --file-system-id fs-ID --region REGION
  1. セキュリティグループを確認します。両方向を確認してください。

    • マウントターゲットの SG:aws ec2 describe-security-groups --group-ids sg-MT を実行します。コンピューティング SG からのインバウンド TCP 2049 が必ず設定されている必要があります
    • コンピューティング SG:マウントターゲット SG へのアウトバウンド TCP 2049 が必ず設定されている必要があります
    • 簡単な修正方法:aws ec2 authorize-security-group-ingress --group-id sg-MT --protocol tcp --port 2049 --source-group sg-COMPUTE
  2. 接続をテストします。

nc -zv fs-ID.efs.REGION.amazonaws.com 2049

注: これらのセキュリティグループのトラブルシューティング手順は S3 Files にも適用されます。唯一の違いは、S3 Files では aws efs describe-mount-targets の代わりに aws s3files list-mount-targets を使用することです。

4. カテゴリ C — IAM/アクセス許可

-o iam を指定したときに「access denied by server」が発生する場合:

  • ID ベースの IAM ポリシーに elasticfilesystem:ClientMount が設定されていることを確認します
  • ファイルシステムのリソースポリシーを確認します。
aws efs describe-file-system-policy --file-system-id fs-ID --region REGION

注: IAM 認証が適用されるのは、それを必須とするファイルシステムポリシーが存在する場合のみです。ファイルシステムポリシーがなければ、VPC 内でポート 2049 にアクセスできるクライアントは、-o iam を指定していてもマウントできます。IAM を強制するには、匿名アクセスを拒否するファイルシステムポリシーを必ず作成してください。

POSIX のアクセス許可が拒否される場合(IAM ではない場合):

  • ファイル/ディレクトリの所有権を確認します:ls -la /mnt/efs/
  • 一貫したアクセス許可を適用するには、アクセスポイントを使用して UID/GID を指定します
5. カテゴリ D — パフォーマンス

スループットモードを確認します。

aws efs describe-file-systems --file-system-id fs-ID --region REGION --query 'FileSystems[0].ThroughputMode'

バーストクレジットの枯渇(バーストモードのみ):

aws cloudwatch get-metric-statistics --namespace AWS/EFS --metric-name BurstCreditBalance --dimensions Name=FileSystemId,Value=fs-ID --period 3600 --statistics Average --start-time $(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%S) --end-time $(date -u +%Y-%m-%dT%H:%M:%S)

クレジットがほぼゼロの場合は、Elastic スループットに切り替えます。

aws efs update-file-system --file-system-id fs-ID --throughput-mode elastic --region REGION

汎用モードと最大 I/O モード:

  • PercentIOLimit メトリクスを確認します。常に 80% を超えている場合は、最大 I/O モードを検討してください
  • 注:パフォーマンスモードは変更できません。新しい FS を作成して移行する必要があります
6. カテゴリ E — 暗号化/KMS

暗号化された FS で NFS サーバーエラーが発生する場合は、KMS キーに問題があります。

  • KMS コンソールでキーが有効になっていることを確認します
  • EFS サービスリンクロールに KMS のアクセス許可があることを確認します
  • キーが削除されている場合は、猶予期間内であれば削除をキャンセルします
7. カテゴリ F — VPC DNS

DNS 解決の失敗は、VPC の DNS 設定が無効になっていることを示します。

aws ec2 describe-vpc-attribute --vpc-id vpc-ID --attribute enableDnsHostnames
aws ec2 describe-vpc-attribute --vpc-id vpc-ID --attribute enableDnsSupport

どちらも必ず true である必要があります。そうでない場合:

aws ec2 modify-vpc-attribute --vpc-id vpc-ID --enable-dns-hostnames Value=true
aws ec2 modify-vpc-attribute --vpc-id vpc-ID --enable-dns-support Value=true

トラブルシューティング

マウントが停止した後、タイムアウトする

最も一般的な原因はセキュリティグループです。コンピューティングとマウントターゲット間で TCP 2049 が開いていることを確認してください。

再起動後に自動マウントが失敗する

/etc/fstab エントリには、マウント前にネットワークが利用可能になるまで待機するための _netdev オプションが必ず必要です。

再接続後に「nfs not responding」と表示される

TCP ポートの再利用に関する古いカーネルのバグです。カーネルを更新するか、マウントオプションに noresvport を追加してください。

デバッグログを有効にする

/etc/amazon/efs/efs-utils.conf で logging_level = DEBUG を設定します。ログは /var/log/amazon/efs/mount.log にあります。

AWS サポート用にログを収集する
sudo tar -czf /tmp/efs-logs.tar.gz /var/log/amazon/efs/ /etc/amazon/efs/efs-utils.conf

セキュリティに関する考慮事項

  • IAM 認可が適用されるのは、ファイルシステムポリシーが存在する場合のみです。ポリシーがない場合、ポート 2049 にアクセスできる VPC クライアントは誰でもマウントできます
  • アクセス拒否のトラブルシューティングでは、アイデンティティベースとリソースベースの両方のポリシーを確認してください
  • 転送中の暗号化には -o tls を使用してください。暗号化されていない NFS トラフィックはネットワーク上で見える状態になります
  • /var/log/amazon/efs/ へのアクセスを制限してください。ログにはファイルシステム ID やマウントターゲットの IP アドレスが含まれる場合があります

追加リソース

コメント