EKS Pod Identity の使用
Amazon EKS Auto Mode では、EKS Pod Identity Agent がすでに含まれており、AWS によってコントロールプレーンで管理されています。既存の Pod Identity アソシエーションを確認することで、Pod Identity が利用可能であることを確認できます。
~$aws eks list-pod-identity-associations --cluster-name $EKS_CLUSTER_AUTO_NAME --namespace carts
{"associations": []
}
carts サービスが DynamoDB テーブルに読み書きするために必要な権限を提供する IAM role が、Auto Mode クラスターのセットアップ時に作成されています。以下のようにポリシーを表示できます。
~$aws iam get-policy-version \
--version-id v1 --policy-arn \
--query 'PolicyVersion.Document' \
arn:aws:iam::${AWS_ACCOUNT_ID}:policy/${EKS_CLUSTER_AUTO_NAME}-carts-dynamo | jq .
{"Statement": [
{"Action": "dynamodb:*",
"Effect": "Allow",
"Resource": [
"arn:aws:dynamodb:us-west-2:267912352941:table/eks-workshop-auto-carts",
"arn:aws:dynamodb:us-west-2:267912352941:table/eks-workshop-auto-carts/index/*"
],
"Sid": "AllAPIActionsOnCart"
}
],
"Version": "2012-10-17"
}
この role には、EKS サービスプリンシパルが Pod Identity のためにこの role を引き受けることを許可する、適切な信頼関係も設定されています。以下のコマンドで表示できます。
~$aws iam get-role \
--query 'Role.AssumeRolePolicyDocument' \
--role-name ${EKS_CLUSTER_AUTO_NAME}-carts-dynamo | jq .
{"Version": "2012-10-17",
"Statement": [
{"Effect": "Allow",
"Principal": {"Service": "pods.eks.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:TagSession"
]
}
]
}
次に、Amazon EKS Pod Identity 機能を使用して、デプロイメントで使用される Kubernetes Service Account に AWS IAM role を関連付けます。アソシエーションを作成するには、以下のコマンドを実行します。
~$aws eks create-pod-identity-association --cluster-name ${EKS_CLUSTER_AUTO_NAME} \
--role-arn arn:aws:iam::${AWS_ACCOUNT_ID}:role/${EKS_CLUSTER_AUTO_NAME}-carts-dynamo \
--namespace carts --service-account carts | jq .
{ "association": {"clusterName": "eks-workshop-auto",
"namespace": "carts",
"serviceAccount": "carts",
"roleArn": "arn:aws:iam::267912352941:role/eks-workshop-auto-carts-dynamo",
"associationArn": "arn:aws:eks:us-west-2:267912352941:podidentityassociation/eks-workshop-auto/a-yg5uoymvtfgdg5tcj",
"associationId": "a-yg5uoymvtfgdg5tcj",
"tags": {},"createdAt": "2025-10-11T01:13:27.763000+00:00",
"modifiedAt": "2025-10-11T01:13:27.763000+00:00",
"disableSessionTags": false
}
}
残りの作業は、carts Deployment が carts Service Account を使用していることを確認することです。
~$kubectl -n carts describe deployment carts | grep 'Service Account'
Service Account: carts
Service Account が確認できたので、carts Pod をリサイクルしましょう。
~$kubectl -n carts rollout restart deployment/carts
deployment.apps/carts restarted
~$kubectl -n carts rollout status deployment/carts --timeout=300s
Waiting for deployment "carts" rollout to finish: 1 old replicas are pending termination...
deployment "carts" successfully rolled out
それでは、次のセクションで、carts アプリケーションで発生していた DynamoDB の権限の問題が解決されたかどうかを確認しましょう。