web-dev-qa-db-ja.com

AWSはトークンを取得できませんでした:AccessDenied:ユーザー:ARNは実行を許可されていません:リソースのsts:AssumeRole:Role:ARN

手順ガイドに従ってAWSにkubernetes環境をセットアップしています。

https://docs.aws.Amazon.com/eks/latest/userguide/getting-started.html#role-create

すでにいくつかの問題がありましたが、それらは部分的に回答されています。

  1. https://stackoverflow.com/questions/51135795/error-the-server-doesnt-have-resource-type-svc
  2. https://stackoverflow.com/questions/50791303/kubectl-error-you-must-be-logged-in-to-the-server-unauthorized-when-accessing

何らかの理由で、人々はこれらの回答で利用可能なこれらのガイドラインを使用して解決することができましたが、それでも私はそれを破ることができませんでした。

could not get token: AccessDenied: User: arn:aws:iam::sssssss:user/testprofileUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::sssssssss:role/eksServiceRole

私がやった事:

  1. 管理者権限を持つIAMユーザーを作成しました(servicesDev)。
  2. EKSサービス(amazonEKSServiceRole)のIAMロールを作成しました

amazonEKSServiceRoleには、以下のような信頼関係があります。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

これは私のkubeconfigファイルです。

apiVersion: v1
clusters:
- cluster:
    server: https://7F30ANNSDSDMDCE1.ylq.us-east-1.eks.amazonaws.com
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURB...
  name: clouddev
contexts:
- context:
    cluster: clouddev
    user: aws
  name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
        - "token"
        - "-i"
        - "clouddev"
        - "-r"
        - "arn:aws:iam::xxxxx:role/amazonEKSServiceRole"
      env:
        - name: AWS_PROFILE
          value: "testprofile"

明確にするために、~/.aws/credentialstestprofileを正しく設定しています

誰かがいくつかの光を当てることができれば非常に感謝しています。

4
diyoda_

また、AWSServiceRoleForAmazonEKSロールの「信頼関係」をセットアップする必要があります。これにより、EKSがそれを引き受けることができます。

このリンクの下部近くに、何をすべきかの詳細があります:

Amazon EKSサービスIAMロール

4
John Hanley

これを機能させる唯一の方法は、CLIを使用してクラスターを作成することです。

aws eks create-cluster --name <cluster name> 
   --role-arn <EKS Service Role> 
   --resources-vpc-config subnetIds=<subnet ids>,securityGroupIds=<security group id>

これは、複数のAWSリソースおよびガイドで推奨されています。これを実行する正確なコマンドは、これからですSO回答: https://stackoverflow.com/a/53002925/8749874

1
Kris Randall

私の状況は、ルートユーザーを使用してVPCを作成し、インフラストラクチャの残りを作成した(eksコントロールプレーンとワーカーノードを別のユーザーを使用して)です。同じユーザー(ただし、rootユーザーではない)を使用してすべてを再作成すると、状況はスムーズになり、awsのドキュメントを使用してクラスターを作成できました。

0
diyoda_