인프라 구축기
인프라 구축기 (4)에서 구성된 인프라에서 Bastion Host 터널링을 통한 RDS, Redshift Serverless, Airflow (EC2) 접근을 확인할 수 있었다. 이번엔 Private Subnet에 구성돼 있는 Airflow EC2에서 Private Subnet에 위치한 RDS, Redshift와 S3 Endpoint를 통해 S3에 접근이 가능한지 확인해 볼 것이다. 또한 NAT Gateway를 통한 외부 통신이 가능한지도 확인할 것이다.
- 참고
- 접근 확인 부분은 모두 Private Subnet에 위치한 EC2에서 작업한 것
- Private Subnet에 있는 EC2 접근 방법은 인프라 구축기 (4)에서 확인 가능
- Private Subnet EC2와 Airflow EC2는 동일한 인스턴스
- 아래의 인프라 아키텍처에서 노란색 선으로 표시된 부분을 확인할 예정
- DB (RDS, Redshift Serverless) : Pricate Subnet 내에서 MySQL, PostgeSQL 명령어로 확
- S3 : Private Subnet EC2 내에서 AWS CLI를 활용한 s3 접근 테스트
- NAT Gateway : Private Subnet EC2 내에서 ping 명령어를 통한 통신 테스트
Airflow (EC2) 변경 사항
IAM Role 생성
- 인프라 구축기 (3)에서 IAM Role을 미리 AWS 웹에서 생성한 뒤 Terraform에서 가져와서 사용
- 비슷한 방법으로 EC2에서 S3 접근을 위한 IAM Role 연결
변경된 ec2.tf 코드
- iam_instance_profile을 활용해 IAM Role과 연결
...
# airflow
resource "aws_instance" "airflow" {
ami = "ami-040c33c6a51fd5d96"
instance_type = "t3.large"
subnet_id = var.private_subnet_2c_3_id
key_name = "popboard-airflow-keypair"
iam_instance_profile = data.aws_iam_role.popboard-ec2-role.name # 추가 코드
vpc_security_group_ids = [
var.airflow_ssh_access_sg_id,
var.airflow_web_access_sg_id,
var.all_outbound_traffic_sg_id
]
root_block_device {
volume_type = "gp3"
volume_size = 15
delete_on_termination = true
}
tags = {
Name = "popboard-airflow"
}
}
변경된 variables.tf 코드
- 추가로 ec2/variables.tf에도 data로 iam role을 가져오는 코드를 추가로 작성해야 함
# airflow ec2 role
data "aws_iam_role" "popboard-ec2-role" {
name = "popboard-ec2-role" # 콘솔에서 생성한 역할 이름
}
...
테스트를 위한 패키지 설치
postgresql-client
- Redshift Serverless, RDS 접근을 위한 패키지 설치
sudo apt update
sudo apt install postgresql-client -y
aws cli
- S3 접근을 위한 aws cli 설치
# 압축 해제를 위한 패키지 설치
sudo apt install curl unzip -y
# aws cli 설치
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# aws cli 설치 확인
aws --version
Private Subnet EC2 -> Redshift Serverless (Postgres)
Redshift Serverless 접속을 위한 정보 입력
- Redshift Serverless 앤드 포인트와 사용하는 port, 사용자 이름과 DB 이름을 입력
psql -h your-rds-endpoint -p 5439 -U your-username -d your-database
접속 확인
- 정상적으로 DB에 접근된 것을 확인
Private Subnet EC2 -> RDS (Postgres)
RDS 접속을 위한 정보 입력
- RDS 앤드 포인트와 사용하는 port, 사용자 이름과 DB 이름을 입력
psql -h your-rds-endpoint -p 5432 -U your-username -d your-database
접속 확인
- 정상적으로 DB에 접근된 것을 확인
Private Subnet EC2 -> S3 : AWS CLI
접근 가능한 S3 확인
- aws 명령어를 통해 현재 접근 가능한 S3 확인
aws s3 ls
접속 확인
- 생성된 popboard-s3-bucket에 접근 권한이 있는 것을 확인
Private Subnet EC2 -> NAT Gateway : ping
현재 나의 IP 확인
- 아래 사이트에 접속해 나의 IP 확인
- ping 명령어를 사용해 Private Subnet에서 나의 IP로 테스트
외부 인터넷과 통신 테스트
- 외부 인터넷에 정상적으로 접근하는 것을 확인
ping <my_ip>
'Infra > [인프라 구축기] Terraform 활용 AWS 인프라 구축' 카테고리의 다른 글
인프라 구축기 (7) - Airflow 및 Redshift 사용자 생성, 권한 설정 (1) | 2024.10.18 |
---|---|
인프라 구축기 (6) - 로컬에서 Private EC2 Airflow Web Server 접속 (0) | 2024.10.17 |
인프라 구축기 (4) - Bastion Host에서 Private Subnet 접근 확인 (5) | 2024.10.09 |
인프라 구축기 (3) - Terraform을 활용한 Instance, Storage 구성 (0) | 2024.10.06 |
인프라 구축기 (2) - Terraform을 활용한 VPC 구성 (0) | 2024.10.06 |