

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# ACK 機能に関する問題をトラブルシューティングする
<a name="ack-troubleshooting"></a>

このトピックでは、機能のヘルスチェック、リソースステータスの確認、IAM アクセス許可の問題など、EKS Capability for ACK をトラブルシューティングする際のガイダンスを示します。

**注記**  
EKS の機能は完全に管理され、クラスターの外部で実行されます。コントローラーのログや名前空間にアクセスすることはできません。トラブルシューティングでは、機能のヘルス、リソースのステータス、IAM の設定に焦点を当てています。

## 機能がアクティブなのにリソースが作成されない
<a name="_capability_is_active_but_resources_arent_being_created"></a>

ACK 機能のステータスが `ACTIVE` なのに AWS にリソースが作成されない場合は、機能のヘルス、リソースのステータス、IAM アクセス許可を確認してください。

 **機能のヘルスを確認する**:

機能のヘルスとステータスの問題は、EKS コンソールまたは AWS CLI を使用して表示できます。

 **コンソール:**

1. https://console.aws.amazon.com/eks/home\$1/clusters で Amazon EKS コンソールを開きます。

1. クラスター名を選択します。

1. **[オブザーバビリティ]** タブを選択します。

1. **[クラスターを監視する]** を選択します。

1. **[機能]** タブを選択すると、すべての機能のヘルスとステータスが表示されます。

 **AWS CLI**:

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack

# Look for issues in the health section
```

 **一般的な原因:**
+  **IAM アクセス許可がない**: 機能ロールに AWS サービスのアクセス許可が付与されていません。
+  **名前空間が間違っている: **IAMRoleSelector が適切でない名前空間にリソースが作成されました。
+  **リソース仕様が無効である**: リソースのステータス条件に検証エラーがないか確認してください。
+  **API スロットリング**: AWS API レートリミットに達しています。
+  **アドミッションウェブフック**: アドミッションウェブフックのために、コントローラーがリソースステータスにパッチを適用できません。

 **リソースのステータスを確認する**:

```
# Describe the resource to see conditions and events
kubectl describe bucket my-bucket -n default

# Look for status conditions
kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}'

# View resource events
kubectl get events --field-selector involvedObject.name=my-bucket -n default
```

 **IAM アクセス許可を確認する**:

```
# View the Capability Role's policies
aws iam list-attached-role-policies --role-name my-ack-capability-role
aws iam list-role-policies --role-name my-ack-capability-role

# Get specific policy details
aws iam get-role-policy --role-name my-ack-capability-role --policy-name policy-name
```

## AWS にリソースが作成されているのに Kubernetes に表示されない
<a name="resources_created_in_shared_aws_but_not_showing_in_kubernetes"></a>

ACK で追跡できるリソースは、Kubernetes マニフェストを介して作成されたものだけです。ACK で既存の AWS リソースを管理するには、採用機能を使用します。

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

リソースの採用の詳細については、「[ACK の概念](ack-concepts.md)」を参照してください。

## クロスアカウントリソースが作成されない
<a name="_cross_account_resources_not_being_created"></a>

IAM ロールセレクターの使用時にターゲット AWS アカウントにリソースが作成されない場合は、信頼関係と IAMRoleSelector 設定を確認します。

 **信頼関係を確認する**:

```
# Check the trust policy in the target account role
aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'
```

信頼ポリシーは、ソースアカウントの機能ロールに引き受けられるようになっている必要があります。

 **IAMRoleSelector 設定を確認する**:

```
# List IAMRoleSelectors (cluster-scoped)
kubectl get iamroleselector

# Describe specific selector
kubectl describe iamroleselector my-selector
```

 **名前空間の配置を確認する**:

IAMRoleSelectors は、クラスター範囲のリソースですが、特定の名前空間をターゲットとします。ACK リソースが IAMRoleSelector の名前空間セレクターに一致する名前空間にあることを確認してください。

```
# Check resource namespace
kubectl get bucket my-cross-account-bucket -n production

# List all IAMRoleSelectors (cluster-scoped)
kubectl get iamroleselector

# Check which namespace the selector targets
kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'
```

 **IAMRoleSelected 条件を確認する**:

`ACK.IAMRoleSelected` 条件を調べて、IAMRoleSelector がリソースに正常に一致したものであることを確認します。

```
# Check if IAMRoleSelector was matched
kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'
```

条件が `False` であるか指定されていない場合は、IAMRoleSelector の名前空間セレクターがリソースの名前空間と一致しません。セレクターの `namespaceSelector` がリソースの名前空間ラベルと一致していることを確認します。

 **機能ロールのアクセス許可を確認する**:

機能ロールには、ターゲットアカウントロールの `sts:AssumeRole` および `sts:TagSession` のアクセス許可が必要です。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::[.replaceable]`444455556666`:role/[.replaceable]`cross-account-ack-role`"
    }
  ]
}
```

クロスアカウント設定の詳細については、「[ACK アクセス許可を設定する](ack-permissions.md)」を参照してください。

## 次のステップ
<a name="_next_steps"></a>
+  [EKS を利用する場合の ACK の考慮事項](ack-considerations.md) - ACK の考慮事項とベストプラクティス
+  [ACK アクセス許可を設定する](ack-permissions.md) - IAM アクセス許可およびマルチアカウントパターンを設定する
+  [ACK の概念](ack-concepts.md) - ACK の概念およびリソースライフサイクルを理解する
+  [EKS 機能をトラブルシューティングする](capabilities-troubleshooting.md) - 一般的な機能をトラブルシューティングする際のガイダンス