У меня есть требование использовать внутренний NLB для связи с другими ресурсами внутри VP C. Я могу создать NLB и AWS лямбда-функцию внутри VP C, но по некоторым причинам мои запросы от Lambda зависают и время ожидания. Я попытался поместить функции NLB и Lambda в отдельные подсети, в те же подсети, в отдельные SG, в те же SG, но ничего не работает. Я не уверен, как вы должны ударить внутренние NLB, чтобы проверить их. Вот что я запустил с CloudFormation:
NLB: # The Network Load Balancer
Type: "AWS::ElasticLoadBalancingV2::LoadBalancer"
Properties:
Scheme: "internal"
Subnets: !Ref NlbSubnetIds # I'm providing 3 subnets out of the 6 available
Type: "network"
LoadBalancerAttributes:
- Key: access_logs.s3.enabled
Value: true
- Key: access_logs.s3.bucket
Value: !Ref AccessLogBucketNlb
- Key: load_balancing.cross_zone.enabled
Value: true
NlbTargetGroup:
Type: "AWS::ElasticLoadBalancingV2::TargetGroup"
Properties:
HealthCheckIntervalSeconds: 30
HealthCheckProtocol: "TCP"
HealthyThresholdCount: 3
Matcher: !Ref "AWS::NoValue"
Port: 80
Protocol: "TCP"
TargetType: "ip"
UnhealthyThresholdCount: 3
VpcId: !Ref VpcId
NlbListener:
Type: "AWS::ElasticLoadBalancingV2::Listener"
Properties:
DefaultActions:
- Type: forward
TargetGroupArn: !Ref NlbTargetGroup
LoadBalancerArn: !Ref NLB
Port: '80'
Protocol: TCP
Из моей функции Lambda в том же VP C:
import json
import urllib3
def lambda_handler(event, context):
http = urllib3.PoolManager()
r = http.request('GET', 'http://<NLB DNS Name>.elb.us-east-1.amazonaws.com',
headers={'Content-Type': 'application/json'})
print(r.read())
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
Все входящие / исходящие правила в ACL разрешить общение, а также группы безопасности, так что я уверен, что это не так. Любая помощь будет оценена.