AWS Solution Architect Associate(SAA) - 인스턴스 유형, 정책 구조 알아보기

whdbtjd·2025년 3월 22일

이번 포스팅에서는 AWS Practitioner 시험에서 기초 개념만 다뤘던 정책(Policy)과 EC2 인스턴스 유형에 대해,
Solutions Architect - Associate(SAA) 수준으로 좀 더 깊이 있게 파헤쳐보려 한다.

지난 개념 복습

AWS 정책

AWS의 사용자가 특정 서비스나 리소스에 어떠한 행동을 할 수 있는지 JSON형식으로 정의한 문서다.
보통 IAM 서비스를 활용해 사용자나 그룹, 역할에 정책을 부여하고, 이를 통해 접근 권한을 제어할 수 있음


정책의 기본 구조

정책의 JSON문서를 보면 기본적인 구성요소들이 있는데, 아래와 같다.

  • Version
    • 정책의 문서 버전을 나타냄
    • 무조건 2012-10-17으로 명시(AWS에서 사용 중인 최신 정책 문법 버전)

  • Statement
    • 정책의 실질적인 내용을 담고 있음
    • [ { .... }, { .... } ]보통 이런 배열 구조로 표현

  • Effect
    • Allow혹은 Deny값으로 해당 작업을 허용할지 거부할지 명시
    • 항상 Deny가 Allow보다 우선 적용

  • Action
    • 사용자가 하려고 하는 작업을 나타냄
    • 예시: s3:GetObject, ec2:StartInstances 등

  • Resource
    • Action이 적용될 AWS의 리소스 ARN (Amazon Resource Name)을 지정
    • 예를들면
      • "Resource": "arn:aws:ec2:ap-northeast-2:123456789012:instance/i-0abc1234def567890"은 서울 리전에 있는 특정 EC2 인스턴스 하나에만 권한이 적용
      • "Resource": "arn:aws:s3:::my-bucket-name" 은 my-bucket-name이라는 S3 버킷 자체에 대한 권한이 적용

  • Condition
    • 정책이 적용될 조건을 설정
    • 예시: 특정 IP에서만 접근 허용, 특정 시간대에만 허용 등

위 구조를 토대로 AWS정책의 구조를 분석해보자🔍

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "ec2:*",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "elasticloadbalancing:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "cloudwatch:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "autoscaling:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": [
                        "autoscaling.amazonaws.com",
                        "ec2scheduled.amazonaws.com",
                        "elasticloadbalancing.amazonaws.com",
                        "spot.amazonaws.com",
                        "spotfleet.amazonaws.com",
                        "transitgateway.amazonaws.com"
                    ]
                }
            }
        }
    ]
}

이는 실제 AWS의 AmazonEC2FullAccess 정책을 가져온 것이다. 이를 Statement단위로 분석해보자

{
          "Action": "ec2:*",
          "Effect": "Allow",
          "Resource": "*"
}
  • Action: EC2 서비스에 대한 모든 작업
  • Effect: 허용
  • Resource: 모든 리소스( *로 표시)

 {
            "Effect": "Allow",
            "Action": "elasticloadbalancing:*",
            "Resource": "*"
 }
  • Action: ELB에 대한 모든 작업
  • Effect: 허용
  • Resource: 모든 리소스

 {
            "Effect": "Allow",
            "Action": "cloudwatch:*",
            "Resource": "*"
 }
  • Action: CloudWatch에 대한 모든 작업
  • Effect: 허용
  • Resource: 모든 리소스

 {
            "Effect": "Allow",
            "Action": "autoscaling:*",
            "Resource": "*"
 }
  • Action: AutoScaling에 대한 모든 작업
  • Effect: 허용
  • Resource: 모든 리소스

{
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": [
                        "autoscaling.amazonaws.com",
                        "ec2scheduled.amazonaws.com",
                        "elasticloadbalancing.amazonaws.com",
                        "spot.amazonaws.com",
                        "spotfleet.amazonaws.com",
                        "transitgateway.amazonaws.com"
                    ]
                }
            }
        }
}
  • Action: 필요시 역할을 자동으로 생성하는 작업
  • Effect: 허용
  • Resource: 모든 리소스
  • Condition: StringEquals조건에서만 위의 작업들을 허용
    • StringEquals: 정확히 일치하는 값, 위의 예시에는 AWS서비스 이름이 [...] 괄호안의 이름과 일치하는 경우에만 허용

👉 이처럼 AmazonEC2FullAccess정책은 EC2에 대한 모든 접근을 허용하는 정책인 만큼, EC2와 연동되는 다른 AWS 서비스들에 대한 접근도 함께 허용하고 있음을 알 수 있다.

인스턴스 유형 알아보기


EC2 인스턴스를 생성할 때 위와 같이 인스턴스 유형을 선택하는 과정이 있다. 이 단계는 쉽게 말해, 내가 생성할 가상 컴퓨터의 하드웨어 사양을 고르는 것이라 볼 수 있다.

이전 포스팅에서는 인스턴스 유형을 단순히 "가상 컴퓨터의 스펙 고르기" 관점에서 설명했지만, 이번에는 이 인스턴스 유형의 이름이 어떻게 구성되어 있는지,

네이밍 규칙에 대해 조금 더 자세히 살펴보겠다.

위 사진과 같이 인스턴스 유형엔 매우 다양한 종류가 있는데, 이것들은 일정한 구조와 규칙에 따라 이름이 정해진다.

인스턴스 이름의 기본 구조

인스턴스 유형 이름은 기본적으로 아래와 같이 구성된다.

<패밀리><세대>.<크기>

예를 들어, t3.micro, m5.large, c6g.xlarge 등이 있다.
각 구성 요소가 어떤 의미를 가지는지 하나씩 살펴보자.


1. 패밀리 👪

어떤 용도/성능 특화 인스턴스인지 나타낸다.

주요 패밀리를 표로 정리하면 아래와 같다.

패밀리용도 설명대표 예시
t가볍고 저렴한 범용 인스턴스. CPU 크레딧 기반, 테스트/개발 서버용t3.micro
m안정적인 일반 범용 인스턴스. CPU/메모리 균형형m5.large
c (Compute Optimized)고성능 CPU 중심의 컴퓨팅 최적화 워크로드용c6g.large
r (RAM Optimized)메모리 사용량이 많은 인메모리 DB, 캐시 워크로드용r5.xlarge
g (GPU)머신러닝, 그래픽 처리, 딥러닝 추론 등 GPU 활용 워크로드g4dn.xlarge

2. 세대 🔢

세대는 t2, t3, m4, m5 등 패밀리 뒤에 들어가는 숫자를 가리키고, 보통 세대가 올라갈 수록 다음과 같은 변화를 보인다.

  • 성능 향상
  • 비용 효율성 개선
  • 하드웨어 변화(예시: Intel -> AMD)

즉, 숫자가 높을 수록 성능이 개선된 최신 세대임을 의미한다.


3. 크기 📐

이름 그대로 인스턴스 유형에서 해당 인스턴스의 크기를 나타낸다.
-> 즉 CPU 개수, 메모리(RAM) 크기, 네트워크 성능 등 리소스 규모를 의미하는 요소

표로 정리하면 아래와 같다.

크기 명칭설명
micro매우 작고 저렴함. 테스트/개발에 적합
medium소규모 서비스나 간단한 애플리케이션용
large표준 기본 크기. 대부분의 일반 워크로드에 적합
xlargelarge보다 높은 사양. 성능이 더 필요한 작업에 적합
2xlarge~16xlarge숫자만큼 리소스가 배수로 증가함
metal가상화 없이 물리 서버를 그대로 제공
profile
취업ㄱㄱㄱ

0개의 댓글