- [AWS]VPC Endpoint란?(feat.bastion(바스티온) 접속) 목차
| VPC Endpoint를 알아보겠습니다.
VPC 밖(인터넷을 통해)에서 들어오는 트래픽에는 과금이 되기 때문에 비용을 줄이기 위해
AWS 네트워크 안에서 통신할 수 있도록 하는 것이 좋습니다.
VPC Endpoint는 EC2 인스턴스를 VPC 외부 서비스(AWS서비스 중 S3 등)와 private한 연결을 하기 위해 사용됩니다.
즉, AWS 서비스를 전용 연결할 수 있도록 해주죠.
따라서 어떤 트래픽도 AWS 네트워크에서 벗어나지 않기 때문에 비용을 절약할 수 있습니다.
이 경우 퍼블릭으로 해당 서비스를 노출하지 않더라도 연동할 수 있습니다.
IGW, VPN, NAT, proxy 등 사용할 일이 전혀 없죠.
위 그림과 같이 private subnet이 존재할 때, 이 서브넷과 S3를 연결하고 싶다면,
바로 Endpoint를 통해 연결할 수 있습니다.
하지만 VPC 밖에서 들어오는 트래픽에는 과금이 되기 때문에 비용을 줄이기 위해 AWS 네트워크 안에서 통신할 수 있도록 하는 것이 좋다.
특징
- 인터넷을 통해 연결할 필요가 없습니다.
- 동일한 region에 있어야 합니다.
- VPC내에서 Gateway처럼 Route Tables에 등록하는 형식으로 간편하게 사용가능합니다.
- 가용성이 높고 중복적이며 수평적입니다.
먼저 S3에 접근하기 위해서는 IAM에 들어가서 권한을 부여해야 합니다.
IAM -> 액세스 관리 tab -> 역할 -> 역할 만들기 -> AWS, EC2 선택
S3 검색 후 추가
EC2 tab으로 돌아와서 새로운 ec2를 만들어줍니다.
보안그룹에서 private 보안 그룹을 선택해보면 소스에서 public-sg로 선택되어 있는 것을 볼 수 있습니다.
여기서 저는 보안그룹을 private가 public 보안 그룹에서 들어오는 것(inbound)만 허용했기 때문에 다음과 같이 나타나는 것입니다.
설정하지 않으신 분들은 VPC를 만들어 public과 private 보안그룹을 만들어주셔야 합니다.
그 후 인스턴스를 만들면
S3에 접근하려면 bastion을 만들어줘야 합니다.
왜냐하면 private instance에 접근하려면 당연히 public instance가 필요하기 때문이죠.
즉, public instance를 통해 private를 접속할 것 이기 때문입니다.
public instance 생성
보안그룹에서는 아래 사진과 같이 public sg를 선택하셔야 합니다.
이유는 public sg 안에 private sg가 포함되어 있기 때문입니다.
그 후 console창에서 public instance로 접근해 보겠습니다.
S3가 있다는 가정하에, 여기에서 S3에 접근하기 위해서는 어떻게 해야 할까요?
aws 계정에 있는 s3 bucket 목록 출력
aws s3 ls --region ap-notheast-2
하지만 입력을 해도 출력이 되지 않습니다.
이유는 private subnet에 endpoint를 설정해주지 않았기 때문인데요.
VPC tab에서 private subnet에 대한 앤드포인트를 만들어줍시다.
그럼 다음과 같이 endpoint의 라우팅 테이블에서 프라이빗 서브넷이 설정된 것을 볼 수 있는데요.
이 엔드포인트의 역할은 S3에 관련된 작업만 해줍니다.
왜냐하면 엔드포인트를 만들 때 설정에서 s3관련된 작업만 추가하였기 때문에
s3 트래픽에 관련된 모든 것들은 해당 엔드포인트를 타고 나머지는 타지 않기 때문이죠.
private subnet에 연결이 잘 되어있나 확인
라이팅에서 pl-로 시작하는 부분이 있습니다.
보통 2~3분 뒤 생기니 착오 없으시길 바랍니다.
그러면 해당 라이팅에 추가된 pl로 시작하는 부분은 뭘까요?
대상에 vpce를 클릭해보면, 엔드포인트로 연결됩니다.
그럼 이 엔드포인트가 바로 저희가 방금 설정한 s3관련 엔드포인트가 되는 것 입니다.
따라서 이제는 private subnet이 해당 endpoint를 갖고 s3에 접근할 수 있게 되는것이죠.
그럼 이제 public ec2로 접근해여 private ec2를 다시 접근하겠습니다.
1.public ec2 bastion 접근
2. bastion(바스티온) 내부에서 private ec2 접근
주의!!
간혹 Mac에서 서버(Linux)로 파일이나 디렉토리 전체를 업로드해야 할 때가 있습니다.
여기에서는 bastion publick-ec2 내부에서 접근해야 하기 때문에 해당 리눅스에서 pem key가 존재하야한다.
따라서 local에서 pem 파일을 ec2 내부로 업로드 해주자.
이 부분에서 진짜 삽질을 많이 했다 ㅜㅜ .
scp -i "pem key" 업로드 하는 pem 키 파일 위치 ec2-user@업로드당하는 곳의 ip:"업로드 당하는 곳의 경로"
요약
-i : identity file : 인증서 파일 과 함께 간다.
결과
bastion 내 private key 확인
3. private ec2에서 aws s3 list 접근
이제 private key가 bastion ec2에 업로드 했으니, bastion ec2에서는 private ec2로 접속할 수 있다.
접속해보자.
음
반응이 없다... 왜 이럴까?
뭔가 라우팅 테이블을 잘 못 설정해준 거 같아서 다시 삽질을 해보자!
'AWS' 카테고리의 다른 글
[Terraform]테라폼(terraform)state 관리(local,terraform cloud,s3) (0) | 2022.03.02 |
---|---|
[AWS]로드밸런서(load balancer)란? (0) | 2022.03.02 |
[AWS]AWS 네트워크 구조(feat.VPC,Subnet,NACL,Security Group,Router) (2) | 2022.02.25 |
[AWS]CLI 보안자격 증명 설정하는 방법 CLI 사용법 (0) | 2022.02.24 |
[Terraform]테라폼(terraform) workspace란? (Feat.프로바이더 사용용해보기) (0) | 2022.02.23 |