AWS 기타 기능

Siyun·2025년 3월 19일

AWS

목록 보기
34/37

CloudFormation

  • AWS의 코드형 인프라(Infrastructure as Code, IaC) 서비스
  • JSON 또는 YAML 형식의 템플릿을 사용하여 인프라를 자동으로 배포
  • 수동으로 리소스를 생성할 필요 없이, 템플릿을 기반으로 자동화된 배포 가능

2. CloudFormation의 주요 기능

  • 리소스 자동 생성:
    • 예를 들어, 보안 그룹, EC2 인스턴스 2개, S3 버킷, 로드 밸런서를 포함하는 인프라를 한 번에 배포 가능
  • 템플릿 기반 인프라 관리:
    • 사용자가 정의한 템플릿에 따라 리소스 생성 및 변경이 이루어짐
  • AWS 리소스 대부분 지원:
    • 지원되지 않는 리소스는 사용자 지정 리소스(Custom Resources) 기능으로 처리 가능
  • 자동 배포 및 삭제 가능

3. CloudFormation의 장점

  1. 인프라를 코드로 관리 (Infrastructure as Code, IaC)

    • 코드로 인프라를 정의하므로 버전 관리 가능
    • 코드 리뷰 및 협업을 통한 체계적인 인프라 관리 가능
  2. 운영 효율성 증가

    • 매번 리소스를 수동으로 생성할 필요 없음
    • 템플릿을 사용하여 반복적이고 일관된 배포 가능
    • 다른 환경, 지역, AWS 계정에서도 동일한 아키텍처 배포 가능
  3. 비용 절감

    • CloudFormation을 활용하면 불필요한 리소스를 자동으로 삭제할 수 있음
    • 예: 업무 시간 이후(오후 5시)에 리소스를 삭제하고, 업무 시간(오전 8시)에 다시 생성하여 비용 절감
  4. 가시성 및 아키텍처 시각화

    • 애플리케이션 컴포저(Application Composer)를 사용하면 CloudFormation 템플릿을 시각적으로 표현 가능
    • 리소스 간의 관계를 한눈에 파악할 수 있어 아키텍처 다이어그램 작성이 쉬움

4. CloudFormation을 사용해야 하는 경우

  • 반복적으로 같은 인프라를 배포할 때
  • 다양한 환경(개발, 스테이징, 운영 등)에 동일한 구조를 적용해야 할 때
  • 다른 AWS 계정 또는 리전(Region)에서도 동일한 설정이 필요할 때
  • 리소스 변경 사항을 코드 기반으로 관리하고 추적해야 할 때

CloudFormation 실습

  1. 스택 생성

    • 스택 생성 버튼을 클릭하여 새 스택을 생성한다.
    • 지역 선택: 템플릿에서 사용되는 AMI ID가 us-east-1(미국 동부, 북부 버지니아)에만 유효하므로, 해당 지역을 선택해야 한다.
  2. 템플릿 준비

    • 기존 템플릿을 선택하여 템플릿 파일을 업로드한다.
    • 예시로, 0-just-ec2.yaml 템플릿을 업로드하여 EC2 인스턴스를 생성한다.
    • 템플릿에는 MyInstance라는 EC2 인스턴스가 포함되어 있으며, 인스턴스 유형은 T2 마이크로, 가용 영역은 us-east-1이다.
AWSTemplateFormatVersion: '2010-09-09'
Description: A simple CloudFormation template to create an EC2 instance.

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0c55b159cbfafe1f0  # 사용하고자 하는 AWS 리전에 맞는 AMI ID를 사용
      KeyName: your-key-name         # SSH 키 이름
      AvailabilityZone: us-east-1a   # 가용 영역 설정
      Tags:
        - Key: Name
          Value: MyFirstEC2Instance
  1. 템플릿 확인 및 수정

    • 업로드한 템플릿을 애플리케이션 컴포저에서 시각적으로 확인할 수 있다.
    • EC2 인스턴스와 그 속성들을 쉽게 파악할 수 있으며, YAML과 JSON 간의 변환도 가능하다.
  2. 스택 이름과 매개변수 설정

    • 스택 이름을 "DemoCloudFormation"으로 설정한다.
    • 템플릿에 매개변수가 정의되지 않았으므로, 기본값으로 진행한다.
  3. 태그 설정

    • 클라우드 포메이션에서 태그를 설정하여 리소스를 구분한다. 예를 들어, CFDemo라는 태그를 설정한다.
    • 태그는 EC2 인스턴스와 같은 리소스에 자동으로 적용된다.
  4. 스택 생성 완료

    • 스택 생성 후, EC2 인스턴스가 생성된 것을 EC2 콘솔에서 확인할 수 있다.
    • MyInstance 인스턴스가 정상적으로 실행 중인 것을 확인하며, 인스턴스의 유형과 AMI ID도 확인할 수 있다.
  5. 템플릿 업데이트 및 보안 그룹 추가

AWSTemplateFormatVersion: '2010-09-09'
Description: CloudFormation template to create EC2 instance with Elastic IP and Security Group.

Resources:
  # EC2 인스턴스
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0c55b159cbfafe1f0  # 해당 AMI ID는 지역에 맞는 것으로 변경 필요
      KeyName: your-key-name         # SSH 키 이름
      AvailabilityZone: us-east-1a   # 가용 영역 설정
      SecurityGroups:
        - !Ref MySecurityGroup       # 보안 그룹 연결
      Tags:
        - Key: Name
          Value: MyEC2WithEIP

  # 보안 그룹
  MySecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: "Allow SSH and HTTP access"
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: '22'
          ToPort: '22'
          CidrIp: 0.0.0.0/0   # SSH 접근을 허용하는 규칙 (전 세계에서 접근 가능)
        - IpProtocol: tcp
          FromPort: '80'
          ToPort: '80'
          CidrIp: 0.0.0.0/0   # HTTP 접근을 허용하는 규칙 (전 세계에서 접근 가능)

  # 탄력적 IP
  MyElasticIP:
    Type: AWS::EC2::EIP
    Properties:
      InstanceId: !Ref MyInstance   # 생성된 EC2 인스턴스에 탄력적 IP 할당

Outputs:
  InstancePublicIP:
    Description: "Public IP address of the EC2 instance"
    Value: !GetAtt MyElasticIP.PublicIp
  • 업데이트 스택을 선택해 템플릿을 수정하여 보안 그룹탄력적 IP를 추가하는 업데이트를 진행한다.
  • 수정된 템플릿을 업로드하고, 변경된 사항을 클라우드 포메이션에서 확인한다.
  1. 변경 세트 적용

    • 클라우드 포메이션은 변경 세트를 통해 어떤 리소스가 변경될 것인지 미리 보여준다.
    • 예를 들어, 기존 EC2 인스턴스는 삭제되고 새로운 인스턴스가 생성된다.
  2. EC2 인스턴스 업데이트

    • 변경된 템플릿을 통해 새로운 EC2 인스턴스가 생성된다.
    • 탄력적 IP와 보안 그룹이 자동으로 적용된다.
  3. 리소스 삭제

    • 클라우드 포메이션을 통해 리소스를 자동으로 삭제할 수 있다. 템플릿을 수정하거나 스택 삭제를 진행하면, 클라우드 포메이션이 모든 스택 리소스를 올바른 순서대로 삭제한다.

CloudFormation과 보안

1. 서비스 역할 사용

CloudFormation에서 서비스 역할을 사용하면, 사용자가 직접 리소스에 대한 권한을 가지지 않고도 리소스를 관리할 수 있게 된다. 이 역할은 사용자가 IAM 역할을 생성하여 CloudFormation에 할당하고, CloudFormation이 해당 역할을 통해 리소스를 관리할 수 있게 한다.

예를 들어, CloudFormation을 통해 S3 버킷을 만들고, 업데이트하고, 삭제하려면, 사용자에게 직접적으로 S3 리소스를 관리할 권한을 부여하는 대신, 해당 작업을 수행할 수 있는 서비스 역할을 생성한다. 이를 통해 최소 권한 원칙을 유지할 수 있다.

2. IAM PassRole 권한

사용자가 서비스 역할을 CloudFormation에 전달할 수 있도록 하기 위해서는 IAM PassRole 권한이 필요하다. 이 권한을 사용하면 사용자가 CloudFormation에 특정 서비스 역할을 할당하고, CloudFormation이 그 역할을 사용하여 리소스를 생성, 수정, 삭제할 수 있게 된다.

3. IAM 역할 생성 예시

  1. IAM 역할 생성: CloudFormation을 위한 서비스 역할을 생성하려면 IAM에서 새 역할을 만들어야 한다. 예를 들어, Amazon S3에 대한 권한을 CloudFormation에 부여하고 싶다면, s3:* 권한을 가진 Role을 만든다.

  2. 역할 할당: CloudFormation 스택을 생성할 때, 기존 템플릿을 사용하고 IAM 역할을 지정할 수 있다. 역할을 지정하지 않으면, 사용자의 개인 권한을 기반으로 작업이 수행된다. 하지만 역할을 지정하면, 해당 역할의 권한에 따라서 CloudFormation이 작업을 처리한다.

4. CloudFormation에서의 권한 처리

CloudFormation에서 작업을 수행할 때, 역할을 지정하면 사용자의 개인 권한이 아닌 지정된 역할의 권한으로 작업이 실행된다. 예를 들어, 방금 생성한 Role을 지정하면 CloudFormation이 S3에서 리소스를 관리할 수 있다. 그러나 EC2 인스턴스를 생성하는 권한이 없으면 스택이 실패할 수 있다.

5. 보안 관점에서의 장점

  • 최소 권한 원칙: 사용자에게 전체 권한을 부여하지 않고, 특정 서비스에 필요한 권한만을 부여할 수 있어 보안 수준을 높일 수 있다.
  • 권한 분리: CloudFormation이 사용자의 권한 대신 특정 역할의 권한으로 작업을 수행하게 함으로써, 관리자가 더 세밀하게 권한을 설정할 수 있다.

Amazon SES (Simple Email Service)

완전 관리형 이메일 전송 서비스이다. 대규모로 안전하게 이메일을 전송하고 관리할 수 있는 기능을 제공한다. 주요 특징은 다음과 같다.

1. 대규모 이메일 전송

  • 애플리케이션이 SES API 또는 SMTP 서버를 사용하면, Amazon SES가 대량으로 이메일을 전송한다.

2. 인바운드 이메일 처리

  • 아웃바운드 이메일뿐만 아니라 인바운드 이메일도 지원하여 답장을 주고 받을 수 있다.

3. 이메일 성과 분석

  • 평판 대시보드, 성과 인사이트 및 스팸 방지 피드백을 통해 이메일의 열람 여부와 스팸 평가 결과를 확인할 수 있다.
  • 이메일 배달 상태, 반송 및 열림 여부 등의 이메일 통계를 제공한다.

4. 보안 기준 지원

  • DKIM(도메인키 식별된 메일)과 SPF(발신자 정책 프레임워크) 기능을 지원하여 이메일 전송 보안을 강화한다.

5. 유연한 배포 옵션

  • 공유 IP, 전용 IP, 또는 고객 소유 IP를 사용하여 이메일을 전송할 수 있다.

6. API 및 SMTP 프로토콜

  • AWS 콘솔 또는 특정 API, SMTP 프로토콜을 통해 SES에 액세스할 수 있다.

7. 사용 사례

  • 이메일 트랜잭션, 마케팅 이메일, 대량 이메일 커뮤니케이션 등 다양한 이메일 전송 및 관리 용도로 사용된다.

Amazon Pinpoint

확장 가능한 양방향 마케팅 커뮤니케이션 서비스이다. 이메일, SMS, 푸시 알림, 음성, 인앱 메시지를 통해 고객과 소통할 수 있다. 주요 특징과 사용 사례는 다음과 같다.

1. 다양한 커뮤니케이션 채널 지원

  • 이메일, SMS, 푸시 알림, 음성, 인앱 메시지 등을 보내는 기능을 제공한다.

2. SMS 기능

  • Amazon Pinpoint를 사용하면 고객에게 SMS를 보내고, 메시지를 세분화하여 개인화할 수 있다.
  • 그룹이나 세그먼트를 만들어 고객 맞춤형 메시지를 전송할 수 있으며, 답장을 받을 수도 있다.

3. 대규모 메시지 전송

  • 하루에 수십억 개의 메시지를 전송할 수 있는 확장성을 제공한다.

4. 마케팅 캠페인 및 트랜잭션 메시지

  • 마케팅 이메일을 대량으로 보내거나, 트랜잭션 SMS 메시지를 전송하여 캠페인을 실행하는 데 적합하다.

5. 이벤트 및 자동화

  • 메시지 성공 여부나 응답 등의 이벤트(TEXT_SUCCESS, TEXT_DELIVERED, REPLIED)가 Amazon SNS, Kinesis Data Firehose, CloudWatch Logs로 전달되어, 자동화를 쉽게 구축할 수 있다.

6. Pinpoint와 SNS/SES의 차이점

  • SNSSES에서는 메시지의 대상, 내용, 일정 등을 직접 관리해야 하며, 많은 작업과 확장성에 제한이 있을 수 있다.
  • Pinpoint는 메시지 템플릿, 전달 일정, 대상 세그먼트, 캠페인 등을 쉽게 관리할 수 있도록 지원하여, 마케팅 커뮤니케이션을 완전하게 처리할 수 있다.

따라서, Amazon Pinpoint는 SNS와 SES의 차세대 제품으로, 마케팅 커뮤니케이션을 보다 효율적으로 관리하고, 자동화를 통해 대규모 메시지 전송 및 응답 처리가 필요한 경우에 적합하다.


SSM 세션 관리자 기능을 활용한 EC2 인스턴스 액세스 방법

SSM Session Manager는 SSH 액세스 없이 EC2 인스턴스와 온프레미스 서버에 보안 셸을 연결할 수 있게 해준다. 이 방법은 EC2 인스턴스의 보안성을 높이고, SSH 키나 배스천 호스트가 필요 없다는 장점이 있다.

SSM 세션 관리자의 장점:

  1. SSH 키 불필요: EC2 인스턴스의 포트 22는 닫히고, SSM 에이전트가 인스턴스에 설치되어 세션 관리자가 이를 통해 보안 셸을 실행한다. SSH 액세스나 배스천 호스트가 필요 없다.
  2. 보안 향상: SSH를 사용하지 않기 때문에 보안이 강화된다. SSM을 통해 EC2 인스턴스를 관리할 수 있다.
  3. 운영 체제 지원: Linux, MacOS, Windows 등 다양한 운영 체제를 지원하며, 로그 데이터를 Amazon S3 또는 CloudWatch Logs에 저장할 수 있다. 보안과 모니터링이 강화된다.

SSM 세션 관리자 사용 과정:

  1. EC2 인스턴스 생성:

    • Amazon Linux 2 AMI를 선택하고 t2.micro 인스턴스를 시작한다.
    • SSH 트래픽을 비활성화하고, SSM 세션 관리자에 액세스할 수 있는 보안 그룹을 설정한다.
  2. IAM 역할 생성:

    • AmazonEC2를 위한 IAM 역할을 생성하여 EC2 인스턴스가 SSM 서비스와 통신할 수 있게 한다. 이 역할은 AmazonSSMManagedInstanceCore 정책을 포함해야 한다.
  3. 인스턴스 시작 후 SSM 확인:

    • EC2 인스턴스가 부팅되면 System Manager 콘솔의 Fleet Manager에서 해당 인스턴스가 관리 노드로 나타난다.
    • 해당 인스턴스가 SSM 에이전트와 연결된 상태에서 보안 셸을 실행할 준비가 된다.
    • System Manager 콘솔의 Session Manager에서 원하는 인스턴스를 선택하고 Start Session을 클릭하면 접속 가능하다.

세 가지 EC2 액세스 방법:

  1. SSH 액세스: 포트 22를 열고 SSH 키와 터미널을 사용해 액세스한다.
  2. EC2 Instance Connect: SSH 키 없이 EC2 인스턴스에 연결할 수 있지만, 포트 22는 여전히 열어야 한다.
  3. SSM 세션 관리자: SSH 액세스 없이 EC2 인스턴스에 액세스할 수 있다. IAM 역할을 통해 EC2 인스턴스와 SSM 서비스를 연결하고, 이를 통해 보안 셸을 실행할 수 있다.

System Manager(시스템 관리자) 서비스의 주요 기능

이 서비스는 EC2 인스턴스와 온프레미스 서버에 대해 다양한 관리 기능을 제공한다. 주요 기능으로는 명령 실행, 패치 관리자, 자동화 등이 있다.

명령 실행

명령 실행 기능은 스크립트나 명령을 여러 인스턴스에서 실행할 때 사용된다. 이 기능은 SSM 에이전트를 통해 동작하며, SSH 없이도 명령을 실행할 수 있다. 명령 실행 후 결과는 S3CloudWatch Logs에 기록되고, 실패나 진행 상태는 SNS로 알림을 받을 수 있다. 이 기능은 IAM과 통합되어 있어 보안이 강화되며, CloudTrail을 통해 명령 실행 로그를 추적할 수 있다. 또한, EventBridge와 연동하여 자동화된 방식으로 명령을 실행할 수 있다.

패치 관리자

패치 관리자는 운영 체제 및 애플리케이션 업데이트, 보안 패치 등을 자동으로 적용하는 도구이다. EC2 인스턴스와 온프레미스 서버를 지원하며, Linux, Mac, Windows 운영 체제에서도 사용 가능하다. 패치는 즉시 적용하거나, 유지 관리 기간을 설정하여 일정에 맞춰 실행할 수 있다. 패치 관리자는 규정 준수 보고서를 생성하여, 모든 인스턴스가 패치되었는지, 누락된 인스턴스는 없는지 확인할 수 있다.

유지 관리 기간

유지 관리 기간은 특정 작업을 실행할 일정을 정의하는 기능이다. 예를 들어, OS 패치, 드라이버 업데이트, 소프트웨어 설치 등 다양한 작업을 예약할 수 있다. 유지 관리 기간을 정의할 때, 실행 주기, 기간, 대상 인스턴스 등을 설정할 수 있다. 이 기능은 주기적으로 작업을 자동화할 수 있어 편리하다.

자동화

자동화는 EC2 인스턴스나 다른 AWS 리소스에서 명령 및 배포 작업을 간소화하는 데 사용된다. 예를 들어, 인스턴스들을 한번에 재시작하거나, AMI를 생성하거나, EBS 스냅샷을 만들 수 있다. 자동화 런북은 미리 정의된 작업을 자동으로 실행하는 문서로, EC2 인스턴스에서 작업을 수행하거나, RDS 데이터베이스의 스냅샷 생성 등의 작업을 자동화할 수 있다. 자동화는 콘솔, SDK, CLI, EventBridge, 유지 관리 기간, AWS Config와 통합하여 실행될 수 있다. 이를 통해 비준수 리소스를 자동으로 수정하는 등의 작업을 할 수 있다.


비용 탐색기(Cost Explorer)

AWS의 청구 서비스로, 비용사용량을 시각화하고 분석하는 도구이다. 이 서비스를 사용하면 사용자 정의 보고서를 생성하여 비용과 사용량을 세부적으로 분석할 수 있다.

주요 기능:

  1. 비용 및 사용량 분석: 전체 계정 간의 비용 및 사용량을 확인할 수 있으며, 매월, 매시간, 리소스 수준으로 세부적인 분석이 가능하다.
  2. 대시보드 및 도면 제공: 비용과 사용량에 대한 시각적인 정보를 제공하여 쉽게 이해하고 관리할 수 있다.
  3. 비용 절감: 최적의 절감형 플랜을 선택하여 청구서 요금을 낮출 수 있다. 예를 들어, 예약 인스턴스의 대안인 절감형 플랜을 추천해준다.
  4. 사용량 예측: 과거 사용량을 바탕으로 향후 12개월간의 사용량을 예측할 수 있어 비용 계획에 도움이 된다.
  5. 시간별 리소스 분석: EC2 인스턴스와 같은 리소스의 시간별 비용을 확인할 수 있어, 리소스의 적절한 사용 여부와 비용 최적화를 지원한다.

절감형 플랜 추천:

비용 탐색기는 사용량에 맞는 절감형 플랜을 추천해주며, 과거 사용량을 기반으로 예상 월별 지출도 제공하여 향후 청구서 비용을 예측할 수 있어, 보다 정확한 예산 계획을 세울 수 있다.


AWS 비용 이상 탐지(Cost Anomaly Detection) 서비스

AWS 비용 이상 탐지 서비스는 비용 및 사용량 데이터를 지속적으로 모니터링하고, 기계 학습을 활용하여 비정상적인 변화를 감지하는 서비스이다.

주요 기능

  • 기계 학습 기반 감지

    • 사용자의 과거 패턴을 학습하여 일회성 비용 급증 또는 지속적인 비용 증가를 자동으로 감지한다.
    • 임계값을 수동으로 정의할 필요 없이, 이상 패턴을 스스로 인식한다.
  • 광범위한 모니터링

    • AWS 서비스, 회원 계정, 비용 할당 태그 및 비용 범주를 대상으로 이상 탐지를 수행한다.
  • 이상 탐지 보고서 제공

    • 감지된 이상 비용에 대한 근본 원인 분석을 포함한 보고서를 제공한다.
  • 유연한 알림 설정

    • 개별 알림 또는 SNS(Simple Notification Service)를 활용한 일간·주간 요약 형태의 알림을 받을 수 있다.

AWS Outposts

AWS Outposts는 기업이 온프레미스 데이터 센터에서 AWS 클라우드 환경을 그대로 활용할 수 있도록 지원하는 하이브리드 클라우드 솔루션이다.

Hybrid Cloud란?

하이브리드 클라우드란 온프레미스 인프라를 유지하면서 클라우드 인프라도 함께 운영하는 환경을 의미한다. 일반적으로 기업은 두 가지 방식으로 IT 시스템을 운영하게 된다.
1. AWS 클라우드를 활용하는 방법

  • AWS Management Console, CLI, API를 사용하여 클라우드 자원을 관리한다.
  1. 온프레미스 인프라 전용 시스템을 활용하는 방법
    • 기존 온프레미스 환경에서 자체적으로 IT 인프라를 운영한다.

이 두 가지 방식은 서로 다른 API를 사용하므로 복잡성이 증가한다. 이를 해결하기 위해 AWS Outposts가 등장했다.

AWS Outposts란?

AWS Outposts는 AWS가 직접 제공하는 서버 랙으로, 온프레미스 환경에서도 AWS의 인프라, 서비스, API, 도구를 그대로 사용할 수 있도록 지원한다.

기업의 데이터센터 내에 AWS가 직접 Outposts 랙을 설치하고 관리하며, 사용자는 이를 온프레미스 환경에서 클라우드처럼 활용할 수 있다. Outposts에 포함된 서버는 AWS 서비스가 사전 설치된 상태로 제공되며, 온프레미스에서도 동일한 AWS 환경을 유지할 수 있다.

Outposts의 주요 특징

  • AWS가 직접 설치 및 관리

    • 기업의 데이터 센터 내에 AWS가 Outposts 랙을 직접 설치하고 운영한다.
    • 기존 온프레미스 환경과 원활하게 통합할 수 있다.
  • 확장성

    • 온프레미스 환경에서 AWS 서비스(EBS, S3, RDS 등)를 직접 실행할 수 있다.
    • 필요 시 Outposts에서 AWS 클라우드로 확장도 가능하다.
  • 보안 및 책임 분담

    • AWS 클라우드에서 실행되는 EC2 인스턴스와 달리, Outposts 랙의 물리적 보안은 기업이 직접 관리해야 한다.
    • 데이터가 기업의 데이터 센터 내에 위치하기 때문에 보안 및 데이터 거버넌스를 직접 책임져야 한다.
  • 저지연 액세스 및 데이터 거버넌스

    • 로컬 데이터 처리를 통해 온프레미스 환경에서 저지연 액세스를 제공한다.
    • 데이터가 클라우드로 이동하지 않으므로 Data Residency(데이터 주권) 문제를 해결할 수 있다.
  • 마이그레이션 및 유연한 운영

    • 기존 온프레미스 환경에서 AWS Outposts로 마이그레이션이 용이하다.
    • Outposts에서 AWS 클라우드로 확장하는 것도 간단하게 수행할 수 있다.

실행 가능한 AWS 서비스

현재 Outposts에서는 다음과 같은 AWS 서비스를 실행할 수 있다.

  • 컴퓨팅: Amazon EC2
  • 스토리지: Amazon EBS, Amazon S3
  • 컨테이너: Amazon EKS, Amazon ECS
  • 데이터베이스: Amazon RDS
  • 빅데이터 분석: Amazon EMR

AWS Batch

AWS Batch는 완전 관리형 배치 처리 서비스로, 어떤 규모의 배치 작업도 효율적으로 실행할 수 있도록 지원한다.

배치 작업이란?

배치 작업은 시작과 끝이 명확한 작업을 의미한다.

  • 예: 오전 1시에 시작하여 오전 3시에 종료되는 이미지 처리 작업.
  • 반대 개념: 항상 실행되는 스트리밍 작업.

배치 작업을 실행하기 위해 AWS Batch는 동적으로 EC2 인스턴스 또는 스팟 인스턴스를 시작하여 필요한 리소스를 프로비저닝한다.

AWS Batch의 동작 방식

  1. 사용자가 배치 작업을 정의하고 배치 대기열에 추가한다.
  2. Batch 서비스가 적절한 EC2 인스턴스 또는 스팟 인스턴스를 자동으로 프로비저닝하여 작업을 실행한다.
  3. 작업이 완료되면 리소스를 자동으로 조정 및 해제하여 비용을 최적화한다.

배치 작업 정의

배치 작업은 Docker 컨테이너 기반으로 실행된다.

  • ECS 서비스에서 실행될 수 있는 모든 작업은 Batch에서도 실행 가능하다.
  • 작업을 Docker 이미지로 패키징하면 AWS Batch가 이를 실행한다.

AWS Batch의 장점

  • 자동 확장 및 리소스 최적화
    • 작업량에 따라 EC2 인스턴스 수를 자동 조정하여 비용을 절감한다.
  • 완전 관리형 서비스
    • 인프라 설정 없이 배치 작업 실행 가능.
  • 긴 실행 시간 지원
    • Lambda와 달리 실행 시간 제한이 없으며, 장시간 실행되는 작업도 문제없이 수행할 수 있다.

AWS Batch와 AWS Lambda의 차이

항목AWS BatchAWS Lambda
실행 시간제한 없음15분 제한
실행 환경Docker 컨테이너특정 언어 지원 (Python, Node.js 등)
인프라EC2 인스턴스 기반완전 서버리스
스토리지EBS, 인스턴스 스토어임시 디스크 공간 제한

예제: S3 기반 배치 이미지 처리

  1. 사용자가 Amazon S3에 이미지 업로드
  2. Batch 서비스가 이를 감지하여 배치 작업 트리거
  3. Batch가 ECS 클러스터를 구성하고 적절한 EC2 인스턴스를 할당
  4. 인스턴스에서 Docker 컨테이너 실행
  5. 작업 완료 후 결과를 다른 S3 버킷으로 저장

Amazon AppFlow

Amazon AppFlow는 SaaS 애플리케이션과 AWS 간에 데이터를 전송할 수 있는 완전 관리형 통합 서비스이다.

특징

  • 복잡한 데이터 통합 작업을 손쉽게 자동화할 수 있다.
  • Salesforce, SAP, Zendesk, Slack, ServiceNow 등의 SaaS 애플리케이션과 AWS 서비스를 연결할 수 있다.
  • 데이터를 Amazon S3, Amazon Redshift, Snowflake, Salesforce 등으로 전송할 수 있다.
  • 데이터 전송 방식은 다음과 같다.
    • 일정 예약 (스케줄링)
    • 특정 이벤트 발생 시 트리거
    • 온디맨드 실행

주요 기능

  • 데이터 변환 기능 제공
    • 필터링, 유효성 검사 등의 사전 처리 가능.
  • 보안성 보장
    • 데이터는 암호화하여 전송되며,
    • AWS PrivateLink를 활용하면 공용 인터넷을 거치지 않고 안전하게 전송할 수 있다.
  • API 연동 가능
    • API를 활용하면 AppFlow를 직접 제어하여 데이터를 효과적으로 활용할 수 있다.

AppFlow 데이터 흐름

  1. 데이터 소스 선택
    • ✨Salesforce, SAP, Zendesk, Slack 등
  2. 전송 대상 선택
    • Amazon S3, Redshift, Snowflake 등
  3. 전송 방식 정의
    • 일정 기반, 이벤트 기반, 온디맨드 방식
  4. 데이터 변환 및 필터링 설정
  5. 보안 설정 후 데이터 전송

AWS Amplify

AWS Amplify는 웹 및 모바일 애플리케이션 개발을 위한 통합 도구이다.
이를 통해 다양한 AWS 서비스를 한 곳에서 활용하여 백엔드 구축, 프런트엔드 개발, 배포까지 간편하게 진행할 수 있다.

1. Amplify 백엔드 구축

Amplify CLI를 사용하여 백엔드를 설정하면 내부적으로 여러 AWS 서비스가 활용된다.

  • 스토리지: Amazon S3
  • 인증: Amazon Cognito
  • API: AWS AppSync (GraphQL) / API Gateway (REST API)
  • 데이터베이스: Amazon DynamoDB
  • 서버리스 함수: AWS Lambda
  • AI/ML 서비스: Amazon SageMaker
  • 텍스트 분석: Amazon Lex
  • 기타 기능: PubSub(이벤트 처리), Analytics(분석), CI/CD(배포 자동화)

2. 프런트엔드 연결

백엔드를 설정한 후 Amplify 프런트엔드 라이브러리를 추가하면 다양한 플랫폼과 연동할 수 있다.

  • React, Vue, Angular, Flutter, iOS, Android 등 다양한 프레임워크 지원
  • GitHub, GitLab, Bitbucket, AWS CodeCommit 등에서 코드 가져오기 가능

3. 배포 및 운영

애플리케이션이 완성되면 Amplify 콘솔을 통해 배포한다.

  • Amplify 자체 배포 또는 Amazon CloudFront 배포 가능
  • 지속적 배포(CI/CD) 지원

AWS Instance Scheduler

AWS Instance SchedulerCloudFormation을 통해 배포되는 솔루션으로,
EC2 및 RDS 인스턴스를 자동으로 시작/중지하여 비용을 절감할 수 있다.
최대 70% 비용 절감 효과를 얻을 수 있으며, 업무 시간 외 리소스 중지 같은 활용이 가능하다.

1. Instance Scheduler의 주요 기능

  • 지원 서비스:
    • Amazon EC2 인스턴스
    • EC2 Auto Scaling Groups
    • Amazon RDS 인스턴스 및 클러스터
    • Amazon Neptune, Amazon DocumentDB
  • 스케줄링 방식:
    • DynamoDB 테이블에서 일정 관리
    • Lambda 함수가 DynamoDB에서 일정을 조회 →
      다른 Lambda를 트리거하여 인스턴스 자동 시작/중지
  • 비용 절감 효과:
    • 필요할 때만 리소스를 운영하여 비용 최적화 가능
  • 계정 간 및 지역 간 리소스 지원
  • 자동 태깅 기능(시작/중지된 인스턴스에 태그 추가)

2. Instance Scheduler 배포 방법

  1. CloudFormation을 통해 배포
    • AWS 콘솔에서 Instance Scheduler 솔루션 >.퀵스타트 > Step 1에서 Launch solution을 선택
    • 제공된 CloudFormation 템플릿을 사용하여 스택 생성
  2. 매개변수 설정
    • 스케줄 활성화 여부(예/아니오)
    • 시간대(TimeZone) 설정
    • EC2 및 RDS 스케줄링 활성화 여부
    • 태깅 및 스냅샷 옵션 설정
  3. CloudFormation이 리소스를 자동으로 생성
    • DynamoDB 테이블
    • 여러 Lambda 함수
    • IAM 역할 등

3. Instance Scheduler 아키텍처

  1. DynamoDB 테이블에서 일정 조회
  2. Lambda 함수 실행 → EC2/RDS 인스턴스 시작 또는 중지
  3. 인스턴스 상태 변경 시 태그 자동 추가
  4. CloudFormation을 통해 손쉽게 관리 및 모니터링 가능
profile
공부 기록

0개의 댓글