DevOps/AWS

[Build & Deploy 리소스] NestJS 애플리케이션 AWS에 배포하기 05

kyoulho 2023. 3. 16. 10:28

인프라 구성도

이번 시간에는 이미지 상에서 빨간 네모 속, 코드를 빌드하고 배포에 필요한 리소스들을 생성 및 설정하겠습니다.

 

IAM 사용자 생성하기

Github Action에서 S3에 접근하기 위해서 IAM 사용자를 생성해야 하니다. IAM 역할은 AWS 리소스나 사용자에 부여할 수 있기 때문에 IAM 사용자를 생성해 주어야 합니다.

AmazoneS3FullAccessAWSCodeDeployFullAccess 권한을 부여합니다.

 

사용자 상세 화면에서 액세스 키 만들기를 선택합니다. 액세스 키 모범 사례 및 대안은 아무거나 선택해 줍니다. 액세스 키는 웬만하면 csv 파일로 다운로드하는 걸 추천드립니다.

 

IAM 역할 생성하기

CodeDeploy에서 EC2에 접근하기 위한 역할

AWSCodeDeployRole 권한과 블루/그린 배포를 위한 권한이 필요합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "ec2:CreateTags",
                "ec2:RunInstances"
            ],
            "Resource": "*"
        }
    ]
}

해당 정책을 생성해서 권한을 함께 부여합니다. 저는 blue-green-policy라고 이름 붙였습니다.

 

 

 

EC2에서 S3에 접근해야 하기에 EC2용 역할

AmazonS3FullAccess 권한을 선택한 후 역할을 생성해 줍니다. 

 

S3 생성하기

Github Action으로 빌드된 파일을 올려놓을 S3을 생성합니다.

S3를 생성합니다. 저는 기본 세팅으로 하였습니다. 상황에 맞게 설정해 주세요.

 

CodeDeploy 설정하기

CodeDeploy 서비스에서 애플리케이션 탭을 선택하여 애플리케이션을 생성해 줍니다.

EC2에 배포할 예정이기에 컴퓨팅 플랫폼으로 EC2/온프레미스를 선택해 줍니다.

애플리케이션 생성 후 배포 그룹을 생성합니다.

 

여기까지 CI/CD를 위한 인프라 구성을 진행했습니다. 다음은 이어서 Github Actions 설정에 대해서 다뤄보겠습니다.