Elastic Beanstalk은 AWS에서 제공하는 관리형 서비스로, 웹 애플리케이션과 서비스를 쉽게 배포하고 관리할 수 있게 해줍니다. 개발자는 인프라 관리에 신경 쓰지 않고 코드를 업로드하기만 하면, Elastic Beanstalk이 자동으로 인프라를 프로비저닝하고 애플리케이션을 배포해줍니다.
IAM 역할과 정책의 중요성
Elastic Beanstalk은 다양한 AWS 서비스와 상호작용하기 때문에, 필요한 권한을 관리하기 위해 IAM(Identity and Access Management) 역할과 정책이 중요합니다. 올바른 IAM 역할과 정책을 설정하면 애플리케이션이 안전하게 운영되며, 불필요한 권한으로 인한 보안 리스크를 줄일 수 있습니다.
1. Elastic Beanstalk을 위한 IAM 역할 및 정책 이해
IAM 역할(Role)과 정책(Policy) 개요
IAM 역할(Role)은 특정 AWS 리소스에 접근할 수 있는 권한을 가진 엔터티입니다. 사용자는 역할을 통해 AWS 서비스와 상호작용할 수 있으며, 역할에는 정책(Policy)이 연결되어 있어, 허용된 액션과 리소스를 정의합니다.
Elastic Beanstalk에서의 IAM 역할 사용 사례
Elastic Beanstalk에서 IAM 역할은 애플리케이션이 다른 AWS 서비스 (예: S3, DynamoDB, RDS)와 상호작용할 수 있도록 하는 중요한 구성 요소입니다. 예를 들어, 애플리케이션이 S3에서 파일을 읽거나 쓰기 위해서는 적절한 권한이 있는 IAM 역할이 필요합니다.
2. Elastic Beanstalk을 위한 IAM 역할 생성
필요한 권한 식별
Elastic Beanstalk에는 기본적으로 EC2 인스턴스, Auto Scaling, Load Balancer 등의 서비스에 대한 권한이 필요합니다. 하지만, 애플리케이션에 따라 추가적으로 S3, CloudWatch, RDS 등 다른 AWS 서비스에 접근해야 할 수도 있습니다.
IAM 역할 생성 단계별 가이드
서비스 정책 생성 : 아래 JSON을 복사하여 " AWSElasticBeanstalkService" 이름으로 IAM 정책을 생성합니다.
설명: 이 섹션은 Elastic Beanstalk 환경에서 애플리케이션을 운영하는 데 필요한 다양한 AWS 서비스에 대한 권한을 광범위하게 허용합니다.
주요 권한: Auto Scaling, EC2, ECS, Elastic Beanstalk, ELB, IAM, CloudWatch, RDS, S3, SNS, SQS, CodeBuild 등 여러 서비스에 대한 권한.
적용 대상 리소스: 모든 리소스(*).
이 정책은 Elastic Beanstalk 환경에서의 인프라와 애플리케이션 관리를 위한 매우 광범위한 권한을 포함하고 있으며, Elastic Beanstalk에 필요한 거의 모든 작업을 수행할 수 있도록 설계되었습니다. 각 권한은 특정 리소스에 제한을 두거나 특정 조건 하에서만 허용되도록 구성되어 있어, 보안성을 유지하면서도 필요한 작업을 수행할 수 있게 합니다.
서비스 역할 생성:"aws-elasticbeanstalk-service-role" 이름으로 elastic beanstalk 역할 생성
AWSElasticBeanstalkService 정책에aws-elasticbeanstalk-service-role역할 연결
docker tag my-express-app:latest <YOUR_ACCOUNT_ID>.dkr.ecr.ap-northeast-2.amazonaws.com/my-express-app:latest
docker push <YOUR_ACCOUNT_ID>.dkr.ecr.ap-northeast-2.amazonaws.com/my-express-app:latest
# <YOUR_ACCOUNT_ID> 입력
AWS ECS(Elastic Container Service) 설정
ECS 클러스터 등록
이름만 지정하여 클러스터를 생성합니다.
IAM 역할 생성
IAM 역할은 ECS 인스턴스가 ECS와 통신할 수 있도록 필요한 권한을 제공합니다.
AWS Management Console에서 IAM으로 이동합니다.
역할을 선택하고, 역할 생성을 클릭합니다.
EC2를 선택하여 EC2 인스턴스에 사용할 역할을 생성합니다.
정책을 추가하여 ECS 관련 권한을 설정합니다. 필요한 권한은 AmazonEC2ContainerServiceforEC2Role 정책을 포함합니다.
역할을 생성한 후, 역할의 IAM 역할 ARN을 기록해 둡니다.
인스턴스에 ECS 에이전트 설치:
ECS-optimized AMI를 사용하는 경우, ECS 에이전트가 이미 설치되어 있습니다. ECS-optimized AMI는 Amazon Linux 2 또는 Windows Server AMI로 제공됩니다.
EC2 인스턴스를 시작할 때, ECS-optimized Amazon Linux 2 AMI를 선택하여 인스턴스를 생성합니다.