안녕하세요, 오늘은 Elasticache의 로컬 테스트를 위한 접근을 확인해 봅니다.
작업하다보면 회사나 작업하는 공간이 아니라 로컬 테스트 환경에서도 확인해야 할 경우가 더러 있는데요,
공식 문서를 통해서 다음의 내용을 확인할 수 있었습니다.
Elasticache는 VPC에서 내부적으로 사용하도록 설계된 서비스입니다.
인터넷 트래픽 지연 시간 및 보안 문제로 인해 외부 액세스가 금지됩니다.
그러나 테스트 또는 개발 목적으로 Elasticache에 대한 외부 액세스가 필요한 경우
VPN을 통해 액세스할 수 있습니다.
→ 따라서 저희는 VPN을 통해서 외부 접근을 만들어야 합니다!
공식문서에서도 VPN을 통해서 외부 접속할 수 있도록 가이드하고 있으니 링크 보내드립니다.
참조 링크 : https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws
다음의 방법은 SSH 터널과 배스천 호스트를 통해서 하는 가이드에 대한 내용을 찾아 링크로 보내드립니다.
참조 링크 : https://prismatic.io/blog/connect-to-aws-resources-with-ssh/
VPC 보안 그룹에 배스천을 등록해주시고, RDS와 ElastiCache 보안그룹의 인그레스룰을 생성하여,
배스천 보안그룹을 통해서 액세스할 수 있도록 설정합니다. 설정한 뒤, 배스천을 통해서 데이터베이스에 접근할 수 있습니다.
또한 배스천에는 AWS SSM agent를 설치해주셔야 합니다.
$ aws ssm start-session --target i-0b6c737cc21dc01a9
Starting session with SessionId: treece-0bf6ff366c16d651f
sh-4.2$ whoami
ssm-user
sh-4.2$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
다음으로 터널링을 진행합니다.
$ aws ec2-instance-connect \
send-ssh-public-key \
--availability-zone us-east-1a \
--instance-id i-0b6c737cc21dc01a9 \
--instance-os-user ssm-user \
--ssh-public-key file://$HOME/.ssh/id_rsa.pub
{ "RequestId": "f8f3db2a-3107-4c0a-ae3d-94e2d7fff620",
"Success": true }
입력 변수는 알맞게 설정해주시기 바랍니다.
다음으로 로컬 랩탑에서 $HOME/.ssh/config로 접근하여,
i-로 시작하는 서버가 이전에 사용한 assm start-session 명령을 통해 연결을 프록시 처리하도록 하겠습니다.
host i-*
ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
이제 ssh ssm-user@INSTANCE-ID를 통해 인스턴스에 접근이 가능합니다.
$ ssh ssm-user@i-0b6c737cc21dc01a9
Last login: Tue Dec 15 20:27:34 2020 from localhost
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
10 package(s) needed for security, out of 22 available
Run "sudo yum update" to apply all updates.
[ssm-user@ip-10-0-0-71 ~]$ ls
file.txt system.log
[ssm-user@ip-10-0-0-71 ~]$
이제 보안에 SSH 액세스할 수 있게 되었습니다 (비공개 네트워크에서 인터넷에 액세스할 수 없음에도).
다른 SSH 연결과 마찬가지로 SSH 터널을 스핀업할 수 있습니다. 예를 들어, RDS 인스턴스에 대한 터널을 생성하려면 다음을 실행하면 됩니다.
$ ssh ssm-user@i-0b6c737cc21dc01a9 -NL 5000:10.0.2.88:5432
그리고 나서, 별도의 셸에서 포트 5000의 "로컬"로 데이터베이스에 액세스할 수 있습니다.
$ psql -h localhost -p 5000 -U testuser postgres
Password for user testuser:
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=> \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | users | table | testuser
(1 row)
또한 다음의 내용 역시 참조하실 수 있을 것 같아 첨부드립니다.
참조 링크 : https://aws.amazon.com/ko/blogs/aws/new-port-forwarding-using-aws-system-manager-sessions-manager/
https://aws.amazon.com/ko/blogs/mt/amazon-ec2-instance-port-forwarding-with-aws-systems-manager/
https://aws.amazon.com/ko/premiumsupport/knowledge-center/systems-manager-ssh-vpc-resources/
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-start-port-forwarding
감사합니다! 오늘도 좋은 하루 되세요!
'IT > AWS' 카테고리의 다른 글
[AWS] Redis용 Amazon MemoryDB의 슬롯 / Keyspace 증설 가능 여부 (0) | 2023.12.31 |
---|---|
[AWS] EC2 NTP 시간 변경하는 법 (0) | 2023.12.29 |
[AEWS] Wk2-1. EKS Networking (0) | 2023.05.07 |
[AEWS] Wk1-2. EKS 클러스터 배포 (0) | 2023.04.30 |
[AEWS] Wk1-1. EKS에 대해서 (2) | 2023.04.30 |