IT/AWS

[AWS] Elasticache의 로컬 테스트

Jflip 2023. 12. 28. 08:34
728x90

 

안녕하세요, 오늘은 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


 

세션 시작 - AWS Systems Manager

SSH를 사용해 세션을 시작할 때는 다음 명령 형식을 사용해 로컬 파일을 대상 관리형 노드에 복사할 수 있습니다. scp -i /path/my-key-pair.pem /path/ExampleFile.txt username@instance-id:~

docs.aws.amazon.com

 

감사합니다! 오늘도 좋은 하루 되세요!

728x90
반응형