0

개인 VPC에서 실행되는 EC2 인스턴스를 설정하려고합니다. 사설 VPC에서 인터넷에 연결할 수 있지만 외부에서는 액세스 할 수 없습니다. EC2가 외부 리소스 (S3, Dynamo, Internet)와의 일부 상호 작용을 시작하도록 유도하는 람다 함수가 있습니다.AWS lambda가 개인 Hostzone DNS가있는 내부 ELB에 연결

I는 다음과 같이 VPC를 설정 :

    동일 내부로 구성된 전용 VPC 서브넷
  1. ALB (애플리케이션로드 밸런서) 및 개인 서브넷에
  2. EC2 인스턴스 실행 고정 표시기 (
  3. 람다 기능을 작동하고 EC2 서브넷)
  4. NAT를 게이트웨이 ABC HTTPS에서 GET 및 인터넷에 POST 및 ALB
  5. Route53 개인 Hostzone는 기록이 그 경로를 설정 한 "할 것이다 d.internal/api "를 ALB에 보냅니다.

여기에 문제가 있습니다. 람다 함수는 HTTPs를 사용하여 인터넷에 연결할 수 있지만 HTTPs가 개인 Hostzone 레코드 ("abcd.internal")를 사용하여 ALB에 연결하지 못하는 경우.

ALB, EC2, 람다, NAT 게이트웨이 및 Route53은 동일한 VPC에서 구성되므로 사설 DNS 이름으로 서로 이야기 할 수 있어야합니다. 나는 그것이 왜 실패하는지 모른다.

참고 : 내부 ALB를 설정하기 전에 공용 서브넷에서 인터넷 연결 ALB를 설정 한 다음 공용 ALTER에 "abcd.public"세트를 구성하십시오. EC2 인스턴스와 통신 할 수 있으며 EC2 인스턴스는 NAT 게이트웨이를 통해 인터넷과 상호 작용할 수 있습니다. 따라서 "EC2 to Internet"부분이 효과적입니다.

업데이트 :

오류 : 호스트 이름/IP는 인증서의 altnames 일치하지 않습니다 "호스트 :. abcd.internal는 인증서의 altnames에없는 다음과 같이 가 드디어 람다 로그에 일부 오류 메시지를 파고 DNS : .public "] 이유 : '호스트 : abcd.internal. DNS : .public ', 호스트 :'abcd.internal. ',

재미 있습니다. 나는 개인 호스트 존과 공존하는 공용 호스트 존을 가지고 있지만 공용 호스트 존은 다른 목적을 위해 존재한다. 개인 서브넷 내부에서 구성 되었기 때문에 람다 함수가 개인 DNS가 아닌 공용 DNS를 사용하는 이유는 모르겠습니다.

+0

람다 기능은 NAT 게이트웨이에 대한 경로와 함께 VPC의 개인 서브넷에서 실행되도록 구성되어 있습니까? –

+0

'abcd.internal/api'에 대한 레코드 세트를 구성 할 수 없으며 아무 것도 할 수 없습니다. DNS는 그런 식으로 작동하지 않습니다. 경로는 DNS 수준에서 처리되지 않습니다. –

+0

@ MarkB 예, 인터넷에 연결할 수 있음을 확인했습니다. – flyblade

답변

-1

개인 서브넷에로드 밸런서를 배치하면 더 이상 VPC 내에서만 인터넷에서 액세스 할 수 없습니다. 이것이 당신의 의도라면, OK. 그런 다음 람다 함수가 내부로드 밸런서에 액세스 할 수있게하려면 동일한 VPC에 람다 함수를 넣어야합니다.

[편집 주석 후] 당신이 VPC 개인 서브넷에서 부하 분산 및 람다 모두가 있고 개인 DNS 이름을 사용하려면

, 당신은 DHCP 옵션에 자신의 DNS 서버를 사용하도록 설정 구성해야 Route53을 사용하면 람다 함수가 개인 DNS 이름을 확인할 수 있습니다. 의견을 게시하고 제안을 준 모든 사람들에게

DHCP Options Sets

+0

그랬습니다. 람다와로드 밸런스는 동일한 사설 서브넷에 있습니다. – flyblade

0

감사합니다.

이 문제를 해결하기 위해 온라인에서 가능한 모든 솔루션을 거의 찾아 냈습니다. 모든 것을 올바른 위치에 두었습니다. 람다 함수, ELB 및 EC2는 동일한 VPC 사설 서브넷에 있습니다. Route53, NAT 및 IGW가 올바르게 설정되었습니다. 나는 DHCP 옵션 세트를 가지고 놀려고했으나 작동하지 않았다. 어쩌면이 DHCP를 완전히 이해하지 못하고 예를 찾을 수 없습니다.

HTTPS 프로토콜이 작동하지 않습니다. 개인용 VPC로 이동하기 전에 공용 VPC에서 동일한 설정을하고 리소스에서 HTTPS를 사용하여 통신합니다. 예를 들어, 람다 함수는 EC2 인스턴스 또는 ELB에 GET/POST합니다. 개인 VPC로 물건을 옮긴 후 HTTPS 명령은 내부 DNS 이름을 사용할 수 없습니다.

그러나 HTTP 프로토콜을 사용하면 리소스가 결국 내부 DNS 이름으로 서로 찾을 수 있습니다.

HTTPS를 개인용 VPC에서 사용할 수없는 이유는 아직도 모르지만이 솔루션을 사용할 수 있습니다.

관련 문제