2018년 6월 25일 월요일

API Gateway Private 호출

API Gateway에서 VPCLink로 NLB를이용하여 VPC 안에있는 서버와 연결서비스를 한지 얼마안되어
6월에 드디어 VPC에 API Gateway호출을 위한 endpoint가 생겼다.

기존에는 S3, DynaoDB, EC2만 있었지만 Codebuild, EC2 Message, LoadBalancer, Api Gateway, KMS, Service Catalog, SNS, SSM이 생겼다.

간단하게 설정하는 방법은 아래와 같다.(API Gateway, VPC와 IAM에 대한 이해도가 있는사람 기준)

1. VPC에 Endpoint메뉴를 선택하여 Endpoint 생성버튼을 클릭.
2. AWS Service에 com.amazonaws.{region}.excute-api를 선택, 아래 VPC및 서브넷은 호출할 서버가 있는 서브넷으로 지정.
3. 보안그룹은 VPC IP range의 HTTPS inbound허용으로 새로 생성.
4. Endpoint가 생성완료되면 API의 Endpoint Type을 Private으로 변경.(Custom domain이 생성되어있으면 변경이 안됨. Custom domain제거후 변경)
5. 호출할 API Gateway를 선택하여 왼쪽메뉴의 Resource Policy를 선택하여 Policy를 생성.
(3가지 버튼으로 제공되며 Source VPC Whitelist를 선택하여 policy생성, Policy안 Condition에 {vpce}라고 되어있는부분에 생성한 Endpoint id로 대체하여야 함)
6. 저장하고 API를 Deploy진행
7. 경리된 server에서 API를 호출 테스트

참고 사이트는 아래와 같다.
https://aws.amazon.com/ko/blogs/compute/introducing-amazon-api-gateway-private-endpoints/

2018-9-12 추가 사항
1. PC Peering 으로 연결되었을때 VPC Endpoint를 이용하여 Private API를 호출하려면?
=> C5, i3.metal, R5, R5D, M5 및 Z1D 인스턴스 유형에만 호출된다.
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations

2. 혹시 DNS를 AWS에서 제공하는게 아닌 다른곳으로 설정되어있다면 API Gateway VPC endpoint에서 제공된 도메인으로 호출이 안된다. 이럴땐..
=> api 호출시 header 에 Host를 키로 하여 private api의 stg domain을 값으로 설정하여 호출해야 한다.(DX를 이용하는 경우에도 동일하게 해야함.)
https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/apigateway-private-apis.html

댓글 없음:

댓글 쓰기

AWS Redis와 Tomcat Session Clustering

근 두달만에 글을 쓰는것 같다 블로그에 글을 올리는게 쉽지 않다는 생각을 해본다. 오늘은 Redis를 이용하여 Tomcat Session Clustering하는 방법을 알아보고자한다. 앞에서 작성했던 AWS DynamoDB를 이용하여 Sessi...