AWS CLI를 사용하여 EC2 인스턴스 구성
AWS Command Line Interface(AWS CLI)를 사용하여 GitLab 설치용 EC2 인스턴스 구성
사전 조건
- AWS CLI 설치 및 보안 자격 증명 구성이 되어 있어야 한다.
Amazon EC2 키 페어
Amazon EC2 인스턴스를 생성할 때 Amazon EC2에 키 페어를 제공한 다음, 인스턴스에 연결할 때 해당 키 페어를 사용하여 인증해야 한다.
키 페어 생성
키 페어를 생성하려면 create-key-pair 명령과 함께 --query 옵션 및 --output text 옵션을 사용하여 프라이빗 키를 직접 파일에 파이프한다.
aws ec2 create-key-pair --key-name gitlab-poc --query 'KeyMaterial' --output text > gitlab-poc.pem
결과로 나온 gitlab-poc.pem 파일은 아래와 유사하 다.
-----BEGIN RSA PRIVATE KEY-----
EXAMPLEKEYKCAQEAy7WZhaDsrA1W3mRlQtvhwyORRX8gnxgDAfRt/gx42kWXsT4rXE/b5CpSgie/
...
oMo7yykABY7Ozd5wQewBQ4AdSlWSX4nGDtsiFxWiI5sKuAAeOCbTosy1s8w8fxoJ5Tz1sdoxNeGs
...
...
NWUH38v/nDCgEpIXD5Hn3qAEcju1IjmbwlvtW+nY2jVhv7UGd8MjwUTNGItdb6nsYqM2asrnF3qS
VRkAKKKYeGjkpUfVTrW0YFjXkfcrR/V+QFL5OndHAKJXjW7a4ejJLncTzmZSpYzwApc=
-----END RSA PRIVATE KEY-----
프라이빗 키는 AWS에 저장되지 않고 키가 생성될 때만 검색할 수 있다. 나중에 복구할 수 없으므로 잘 보관해야 한다. 프라이빗 키를 잃어버리면 새 키 페어를 생성해야 한다.
키 페어 표시
키 페어에서 "지문(Fingerprint)"이 생성되고 이 지문을 사용하여 로컬 시스템에 있는 프라이빗 키가 AWS에 저장된 퍼블릭 키와 일치하는지 확인할 수 있다. 지문은 프라이빗 키의 DER 인코딩된 사본에서 가져온 SHA1 해시이다. 이 값은 키 페어가 생성될 때 캡처되어 퍼블릭 키와 함께 AWS에 저장된다. 지문은 Amazon EC2 콘솔에서 보거나 AWS CLI 명령 aws ec2 describe-key-pairs를 실행하여 볼 수 있다.
명령을 실행하면 아래와 유사하다.
$ aws ec2 describe-key-pairs --key-name gitlab-poc
{
"KeyPairs": [
{
"KeyPairId": "key-example59cedd99xx",
"KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f",
"KeyName": "gitlab-poc",
"Tags": []
}
]
}
Amazon EC2 보안 그룹
기본적으로 방화벽 역할을 하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 대한 보안 그룹과 함께, 들어오고 나가는 네트워크 트래픽을 결정하는 규칙(Inbound/Outbound rules)을 생성할 수 있다.
보안 그룹 생성
AWS 계정의 기본값 VPC(가상 사설 클라우드)와 연결된 보안 그룹을 만든다.
$ aws ec2 create-security-group --group-name gitlab-poc-sg --description "GitLab PoC security group" --vpc-id [Default VPC ID]
{
"GroupId": "sg-903004f8"
}
보안 그룹에 대한 초기 정보를 보려면 describe-security-groups 명령을 실행한다.
$ aws ec2 describe-security-groups --group-ids [Security Group ID]
{
"SecurityGroups": [
{
"Description": "GitLab PoC security group",
"GroupName": "gitlab-poc-sg",
"IpPermissions": [],
"OwnerId": "123456789012",
"GroupId": "sg-903004f8",
"IpPermissionsEgress": [
{
"IpProtocol": "-1",
"IpRanges": [
{
"CidrIp": "0.0.0.0/0"
}
],
"Ipv6Ranges": [],
"PrefixListIds": [],
"UserIdGroupPairs": []
}
],
"VpcId": "vpc-1a2b3c4d"
}
]
}
보안 그룹에 규칙 추가
Amazon EC2 인스턴스를 실행할 때 이미지에 연결하는 방법에 맞는 수신 네트워크 트래픽을 허용하려면 보안 그룹의 규칙을 활성화해야 한다. Linux 인스턴스를 시작할 경우, SSH 연결을 지원하기 위해 일반적으로 TCP 포트 22에서 인바운드 트래픽을 허용하는 규칙을 추가한다. authorize-security-group-ingress 명령을 사용하여 보안 그룹에 규칙을 추가한다. 이 명령의 필수 파라미터가 컴퓨터 또는 컴퓨터가 연결된 네트워크(주소 범위의 형식)의 퍼블릭 IP 주소(CIDR 표기법 사용)이다.
Public IP 확인
아래 명령을 실행하여 퍼블릭 주소를 확인한다.
$ curl https://checkip.amazonaws.com
203.0.113.57