2017-11-14 31 views
6

के पीछे साइट से कनेक्ट नहीं हो सकता है मेरे पास एक एडब्ल्यूएस लैम्ब्डा फ़ंक्शन है जिसे प्रॉक्सी के पीछे एक आंतरिक वेबसाइट से कनेक्ट करने की आवश्यकता है। मेरी कोड में मैं निम्नलिखित कर रहा हूँ:एडब्ल्यूएस लैम्ब्डा में पायथन अनुरोध प्रॉक्सी

from botocore.vendored import requests 

https_proxy = "https://myproxy:myport" 
proxyDict = { 
      "https" : https_proxy 
    } 
request.get("https://myurl.json", proxies=proxyDict) 

इस रनिंग मुझे देता है निम्न त्रुटि संदेश:

HTTPSConnectionPool (मेजबान = 'myproxyhost', बंदरगाह = 443): अधिकतम यूआरएल के साथ पार कर पुनः: myurl। जेसन (प्रॉक्सी इरर ('प्रॉक्सी से कनेक्ट नहीं हो सकता है।', गैयरर (-2, 'नाम या सेवा ज्ञात नहीं है)))

मैंने Google.com के साथ प्रॉक्सी किए गए यूआरएल को बदलने की कोशिश की है ताकि मैं पुष्टि कर सकूं कि मैं कनेक्ट कर सकता हूं अन्य साइटों (प्रॉक्सी के बिना)।

ऐसा लगता है कि लैम्ब्डा चलाने वाले पते की जगह प्रॉक्सी द्वारा अवरुद्ध हो जाती है।

क्या यह काम करने के लिए अनुरोधों और लैम्ब्डा के साथ सेट करने की आवश्यकता है?

+2

आप अपने लैम्ब्डा कार्य करने के लिए एक वातावरण चर के रूप में https_proxy जोड़ सकते हैं मदद करता है। यह आपके लिए काम करना चाहिए। –

+0

आपकी आंतरिक वेबसाइट वीपीसी के भीतर चल रही है। यदि ऐसा है, तो आप एक ही वीपीसी के भीतर चलाने के लिए लैम्ब्डा को कॉन्फ़िगर कर सकते हैं, और आंतरिक नामों को हल कर सकते हैं .. – toske

+0

प्रॉक्सी वेबसाइट जो मैं कनेक्ट करने का प्रयास कर रहा हूं वह वीपीसी –

उत्तर

1

हम लैम्ब्डा पर्यावरण चर का उपयोग कर सकते हैं और https_proxy को पर्यावरण चर के रूप में lambda फ़ंक्शन में जोड़ सकते हैं। जिसके द्वारा आपका लैम्ब्डा फ़ंक्शन प्रॉक्सी के माध्यम से वेबसाइट तक पहुंच सकता है।

+0

का हिस्सा नहीं है, क्या यह सिर्फ एक कुंजी-मूल्य जोड़ी सेट नहीं हो सकता है कोड में पहचाना गया? क्या इसका कोई अन्य लाभ है? –

+0

यह निर्यात http_proxy निर्यात के बराबर है, और कोड के साथ या बिना इस्तेमाल किया जा सकता है। आपको इसे अपने कोड में स्पष्ट रूप से पढ़ने और सेट करने की आवश्यकता नहीं है। –

1

उनमें से दो बच्चे security groups, और subnets हैं। सुरक्षा समूह प्रदान करके आपको अपने लैम्ब्डा को प्रॉक्सी के सबनेट तक पहुंचने की अनुमति है। Here कदम ट्यूटोरियल द्वारा कदम ...

+0

ऐसा लगता है कि ट्यूटोरियल तब होता है जब लैम्ब्डा फ़ंक्शन को वीपीसी में किसी चीज़ से कनेक्ट करने की आवश्यकता होती है, हालांकि जिस साइट को मुझे कनेक्ट करने की आवश्यकता है वह वीपीसी में नहीं है, लेकिन उसे प्रॉक्सी की आवश्यकता है। जब मेरे पास लैम्ब्डा के समान भूमिका के साथ एक ईसी 2 है, तो ईसी 2 एक कर्ल कमांड और उस साइट के लिंक का उपयोग करके लैम्ब्डा तक पहुंच सकता है, जिसे मैं कनेक्ट करना चाहता हूं। –

+0

बिंदु खोने के लिए खेद है - 'aws lambda आउटबाउंड कनेक्शन'। उदाहरण के लिए इस ट्यूटोरियल https://medium.com/@philippholly/aws-lambda-enable-outgoing-internet-access-within-vpc-8dd250e11e12 –

1

संपादित है: प्रश्न पढ़ने के बाद फिर से मुझे एहसास हुआ कि त्रुटि नाम संकल्प (-2, 'Name or service not known') के कारण है। यदि आप अपने वीपीसी के लिए आंतरिक रूट 53 का उपयोग कर रहे हैं, तो नीचे दिए गए समाधान को अभी भी काम करना चाहिए क्योंकि लैम्ब्डा फ़ंक्शन वीपीसी के DNS सर्वर का उपयोग करेगा।

ऐसा लगता है कि लैम्ब्डा फ़ंक्शन आपके प्रॉक्सी इंस्टेंस के उसी सबनेट पर नहीं चल रहा है या सुरक्षा समूह कनेक्शन को अवरुद्ध कर रहा है। इसे ठीक करने के लिए:

  • एक सुरक्षा समूह बनाएं कि सुरक्षा समूह और अपने सबनेट के अंदर निष्पादित करने के लिए उपयोग करने के लिए अपने लैम्ब्डा समारोह अद्यतन लैम्ब्डा समारोह अपने प्रॉक्सी होस्ट
  • पर पोर्ट 443 से कनेक्ट करने की अनुमति के लिए:

यह स्क्रिप्ट यह करना चाहिए:

#!/bin/bash 
# Fill the variables bellow with your vpc and subnet id 
VPC_ID="" 
SUBNET_IDS="" 
FUNCTION_NAME="" 

SEC_GROUP=$(aws ec2 create-security-group --group-name 'lambda-proxy' --vpc-id $VPC_ID --description 'Lambda/proxy communication' --output text) 
aws ec2 authorize-security-group-ingress --group-id ${SEC_GROUP} --protocol tcp --port 443 
aws lambda update-function-configuration --function-name $FUNCTION_NAME --vpc-config SubnetIds=$SUBNET_IDS,SecurityGroupIds=$SEC_GROUP 

फिर अपने इन्स के लिए बनाया सुरक्षा समूह आवंटित हैैं।

आशा है कि यह

+0

जानकारी के लिए धन्यवाद ... अब इसके साथ प्रयोग कर रहा है। –

+1

आपको उत्तर के लिए क्रेडिट दे रहा है क्योंकि यह मुझे सही दिशा में इंगित कर रहा है। एक अलग वीपीसी से प्रॉक्सी किए गए यूआरएल से कनेक्शन प्राप्त करने में सक्षम था, जिससे मुझे विश्वास था कि वीपीसी में से एक सुरक्षा समूह गलत कॉन्फ़िगरेशन है। –

संबंधित मुद्दे