"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > AWS लैम्ब्डा में एप्लिकेशन लोड बैलेंसर (ALB) का उपयोग करते समय वास्तविक क्लाइंट आईपी प्राप्त करना

AWS लैम्ब्डा में एप्लिकेशन लोड बैलेंसर (ALB) का उपयोग करते समय वास्तविक क्लाइंट आईपी प्राप्त करना

2024-08-06 को प्रकाशित
ब्राउज़ करें:601

Getting the Actual Client IP When Using Application Load Balancer (ALB) in AWS Lambda

जब मैं AWS में नया था, तो मुझे एक दस्तावेज़ पर डिजिटल हस्ताक्षर करने के कार्य पर काम करते समय एक दिलचस्प चुनौती का सामना करना पड़ा, जिसके लिए ई-हस्ताक्षर के हिस्से के रूप में ग्राहक के आईपी की आवश्यकता थी। प्रारंभ में, जब कार्यान्वयन पहली बार पूरी तरह से काम करने लगा तो मैं रोमांचित हो गया। हालाँकि, मेरा उत्साह अल्पकालिक था। परीक्षण के दौरान, मैंने देखा कि एक ही आईपी पता वापस आ रहा था, तब भी जब मैंने विभिन्न मशीनों से एप्लिकेशन एक्सेस किया था। तब मुझे एहसास हुआ कि जो आईपी एड्रेस मुझे प्राप्त हो रहा था वह वास्तविक क्लाइंट आईपी नहीं था बल्कि लोड बैलेंसर का आईपी था।

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

चुनौती को समझना

जब कोई ग्राहक एएलबी के माध्यम से आपके आवेदन के लिए अनुरोध करता है, तो लोड बैलेंसर एक मध्यस्थ के रूप में कार्य करता है। नतीजतन, आपका एप्लिकेशन जो आईपी पता देखता है वह एएलबी का है, क्लाइंट का नहीं। इसे संबोधित करने के लिए, ALB क्लाइंट के IP को X-Forwarded-For HTTP हेडर में शामिल करता है। यदि अनुरोध कई प्रॉक्सी से होकर गुजरा है तो इस हेडर में कई आईपी पते हो सकते हैं।

यहां बताया गया है कि हमें क्या संभालना है:

  • क्लाइंट आईपी निकालें: एक्स-फॉरवर्डेड-फॉर हेडर को पुनः प्राप्त करें और पार्स करें।

  • एकाधिक आईपी संभालें: सुनिश्चित करें कि कई प्रॉक्सी शामिल होने पर भी हमें सही क्लाइंट आईपी मिले।

सुरक्षा संबंधी विचार

संभावित सुरक्षा जोखिमों के कारण एक्स-फॉरवर्डेड-फॉर हेडर का उपयोग सावधानी से किया जाना चाहिए। प्रविष्टियों को केवल तभी भरोसेमंद माना जा सकता है जब उन्हें ऐसे सिस्टम द्वारा जोड़ा जाए जो नेटवर्क के भीतर उचित रूप से सुरक्षित हो। यह सुनिश्चित करता है कि क्लाइंट आईपी के साथ छेड़छाड़ नहीं की गई है और वे विश्वसनीय हैं।

सही उपकरण चुनना

एडब्ल्यूएस लैम्ब्डा और पायथन

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

ज़रूरी भाग

  1. AWS लैम्ब्डा फ़ंक्शन: मुख्य फ़ंक्शन जो आने वाले अनुरोधों को संसाधित करता है।

  2. एप्लिकेशन लोड बैलेंसर (एएलबी): लोड बैलेंसर जो लैम्ब्डा फ़ंक्शन के लिए अनुरोध अग्रेषित करता है।

कार्यान्वयन विवरण

ALB के साथ AWS लैम्ब्डा की स्थापना

सबसे पहले, सुनिश्चित करें कि आपका लैम्ब्डा फ़ंक्शन एक एएलबी के साथ स्थापित और एकीकृत है। यदि आवश्यक हो तो AWS की आधिकारिक मार्गदर्शिका का पालन करें: एप्लिकेशन लोड बैलेंसर के लिए लक्ष्य के रूप में लैम्ब्डा फ़ंक्शंस का उपयोग करना।

लैम्ब्डा फ़ंक्शन कोड

आइए लैम्ब्डा फ़ंक्शन के लिए पायथन कोड में गोता लगाएँ। यह फ़ंक्शन X-Forwarded-For हेडर से क्लाइंट का IP पता निकालेगा।

import json

def lambda_handler(event, context):
    # Extract the 'X-Forwarded-For' header
    x_forwarded_for = event['headers'].get('x-forwarded-for')

    if x_forwarded_for:
        # The first IP in the list is the client's IP
        client_ip = x_forwarded_for.split(',')[0]
    else:
        # Fallback if header is not present
        client_ip = event['requestContext']['identity']['sourceIp']

    # Log the client IP
    print(f"Client IP: {client_ip}")

    # Respond with the client IP
    return {
        'statusCode': 200,
        'body': json.dumps({'client_ip': client_ip})
    }

स्पष्टीकरण

  • हेडर निकालें: आने वाले अनुरोध से एक्स-फॉरवर्डेड-फॉर हेडर पुनर्प्राप्त करें।

  • हेडर को पार्स करें: पहला आईपी लें, जो क्लाइंट के मूल आईपी का प्रतिनिधित्व करता है।

  • फ़ॉलबैक तंत्र: यदि हेडर मौजूद नहीं है तो अनुरोध संदर्भ से स्रोत आईपी का उपयोग करें।

  • लॉगिंग और प्रतिक्रिया: लॉग इन करें और सत्यापन के लिए ग्राहक का आईपी लौटाएं।

उदाहरण अनुरोध और प्रतिक्रिया

अनुरोध:

{
    "headers": {
        "x-forwarded-for": "203.0.113.195, 70.41.3.18, 150.172.238.178"
    },
    "requestContext": {
        "identity": {
            "sourceIp": "70.41.3.18"
        }
    }
}

प्रतिक्रिया:

{
    "client_ip": "203.0.113.195"
}

निष्कर्ष

एएलबी के पीछे एडब्ल्यूएस लैम्ब्डा फ़ंक्शन में वास्तविक क्लाइंट आईपी की पहचान करने के लिए एक्स-फॉरवर्डेड-फॉर हेडर को सावधानीपूर्वक संभालने की आवश्यकता होती है। यह दृष्टिकोण सटीक आईपी लॉगिंग सुनिश्चित करता है और उपयोगकर्ता इंटरैक्शन को वैयक्तिकृत और सुरक्षित करने के लिए एप्लिकेशन की क्षमता को बढ़ाता है।

सन्दर्भ

  • एडब्ल्यूएस एएलबी दस्तावेज़ीकरण:

  • एडब्ल्यूएस लैम्ब्डा में पायथन:

  • HTTP हेडर की व्याख्या

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/rkj180220/getting-the-actual-client-ip-when-using-application-load-balancer-alb-in-aws-lambda-4fcn?1यदि कोई है उल्लंघन, हटाने के लिए कृपया [email protected] से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3