Terraform으로 EC2, IAM Role 생성시 발생하는 No roles attached to instance profile 에러 해결

Terraform으로 EC2, IAM Role 생성시 발생하는 No roles attached to instance profile 에러를 해결하는 방법 대해서 정리해 봤습니다.
2022.06.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Terraform으로 EC2, IAM Role 생성시 발생하는 No roles attached to instance profile 에러를 해결하는 방법 대해서 정리해 봤습니다.

에러 발생

Terrafrom으로 EC2와 ssm 접속을 위한 IAM을 생성하고, EC2에 IAM을 연결했지만 다음과 같은 에러가 발생 했습니다.

No roles attached to instance profile error resolution

인스턴스 프로파일에 연결된 역할 없음

IAM은 정상적으로 연결되어 있지만, 위와 같은 메시지가 뜨면서 SSM 연결이 되지 않는 상태입니다.

이러한 에러는 instance profile에 아무런 role이 연결 되지 않았기 때문에 에러가 발생합니다.

ssm으로 접속을 시도해봐도 접속할 수 없는 상태입니다.

문제 해결


data "aws_iam_policy" "systems_manager" {
  arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
}

data "aws_iam_policy" "cloudwatch_agent" {
  arn = "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
}

resource "aws_iam_role_policy_attachment" "bastion_ssm" {
  role       = aws_iam_role.bastion.name
  policy_arn = data.aws_iam_policy.systems_manager.arn
}

resource "aws_iam_role_policy_attachment" "bastion_cw" {
  role       = aws_iam_role.bastion.name
  policy_arn = data.aws_iam_policy.cloudwatch_agent.arn
}

resource "aws_iam_instance_profile" "bastion" {
  name = "bastion_instance_profile"
  role = aws_iam_role.bastion.name
}

IAM Role을 생성하는 코드에서

aws_iam_role_policy_attachment와 aws_iam_instance_profile이 제대로 설정되어 있는지 확인할 필요가 있습니다.

코드를 수정하고서 다시 접속해 보면 정상적으로 IAM Role이 연결됨과 동시에 문제없이 ssm을 사용할 수 있는 것을 확인할 수 있습니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !