Terraform으로 EKS 클러스터 생성 시 UnauthorizedException 오류가 발생하는데 IAM 역할을 사용할 때 이 오류를 어떻게 해결할 수 있나요?

현재 Terraform을 사용해서 AWS EKS 클러스터를 생성하려고 하고 있습니다. 하지만 다음과 같은 오류가 발생합니다:

ruby

Copy

Error: creating EKS Cluster (my-cluster): UnauthorizedException: 
User: arn:aws:sts::123456789012:assumed-role/TerraformRole/i-0abcdef1234567890 
is not authorized to perform: eks:CreateCluster on resource: arn:aws:eks:us-west-2:123456789012:cluster/my-cluster

제 Terraform 스크립트에서는 assume_role을 사용하고 있고, 해당 역할(TerraformRole)에는 EKS 전체 액세스가 부여된 정책이 연결되어 있습니다. 아래는 provider 설정입니다:

hcl

Copy

provider "aws" {
  region  = "us-west-2"
  assume_role {
    role_arn = "arn:aws:iam::123456789012:role/TerraformRole"
  }
}

Terraform 버전은 1.6.2이고, AWS provider는 5.20.0을 사용 중입니다. IAM 역할에는 AmazonEKSClusterPolicy가 명시적으로 연결되어 있습니다. 무엇이 문제일 수 있을까요?

이 문제는 주로 두 가지 원인으로 발생할 수 있습니다:

  1. IAM 정책 또는 역할 신뢰 정책의 구성 문제
    TerraformRole에 eks:CreateCluster 권한이 있더라도, 해당 역할을 가정하는 주체(sts:AssumeRole)가 정확하게 설정되어 있어야 합니다. TerraformRole의 신뢰 정책(Trust Relationship)을 확인해서, Terraform이 실행되는 주체(예: EC2 인스턴스, 사용자 등)가 이 역할을 가정할 수 있는 권한이 있는지 확인하세요.
  2. STS AssumeRole이 아닌 다른 방식으로 인증이 진행되고 있을 가능성
    Terraform에서 assume_role을 사용하고 있어도, AWS CLI나 환경 변수 등에 설정된 자격 증명이 override하고 있을 수 있습니다. 환경 변수에 AWS_PROFILE, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 등이 설정되어 있다면 Terraform의 provider 설정을 무시하고 실행될 수 있습니다.