특정 EC2 인스턴스 타입 사용금지 설정

개요

AWS Organization의 서비스 제어 정책SCP 기능을 사용해서 구세대 EC2 인스턴스 타입과 구세대 EBS 인스턴스 타입을 강제로 제한하는 방법을 소개합니다.

 

준비사항

AWS Organization 구성

 

설정방법

특정 EBS와 EC2 타입을 거부

AWS Organizations 환경인 경우, 서비스 제어 정책SCP을 아래와 같이 작성합니다.
이 정책을 통해 구세대 EC2 인스턴스 타입과 구세대 EBS 볼륨 사용을 제한할 수 있습니다.

아래는 서비스 제어 정책의 내용입니다.

{
  "Statement": [
    {
      "Action": "ec2:*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "ec2:VolumeType": [
            "gp2",
            "io1"
          ]
        }
      },
      "Effect": "Deny",
      "Resource": "*",
      "Sid": "RestrictLegacyEBSVolumeType"
    },
    {
      "Action": "ec2:*",
      "Condition": {
        "ForAnyValue:StringLike": {
          "ec2:InstanceType": [
            "t2.*"
          ]
        }
      },
      "Effect": "Deny",
      "Resource": "*",
      "Sid": "RestrictLegacyInstanceType"
    }
  ],
  "Version": "2012-10-17"
}

 

특정 EC2 인스턴스 타입만 허용

t3.* 패밀리 외에 다른 EC2 인스턴스 타입은 모두 거부합니다.

아래는 서비스 제어 정책의 내용입니다.

{
  "Statement": [
    {
      "Sid": "RequireT3FamilyInstanceType",
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:*:*:instance/*"
      ],
      "Condition": {
        "ForAnyValue:StringNotLike": {
          "ec2:InstanceType": [
            "t3.*"
          ]
        }
      }
    }
  ],
  "Version": "2012-10-17"
}

 

SCP 설정 시 사이드 이펙트

ECS Cluster 생성 시 영향

최신 버전의 AWS 콘솔에서 ECS Cluster를 생성하게 될 경우, 기본적으로 gp2 타입의 볼륨을 사용하도록 생성합니다.
AWS Organizations의 서비스 제어 정책SCP를 통해 gp2 볼륨 사용을 금지한 상태인 경우, Auto Scaling Group을 새로 생성하는 과정에서 에러가 발생할 수 있습니다.

CloudFormation 에러 화면

 

아래는 CloudFormation에서 Auto Scaling Group을 생성하는 과정에서 발생하는 에러 메세지입니다.

There was an error creating cluster dev-apne2-pri-burgerpay-frontend-cluster.
API: autoscaling:CreateAutoScalingGroup You are not authorized to use launch template: lt-0xx0x9x1234567890

이 문제를 해결하기 위해서는 SCP를 수정해서 다시 gp2 볼륨 제한을 예외적으로 허용해주어야 합니다.

 

참고자료

AWS - Amazon Elastic Compute Cloud(Amazon EC2)에 대한 SCP 예제
Stack Overflow - AWS SCP for EC2 type