بوابة S3 أم نقطة نهاية واجهة لعميل داخل الشبكة المحلية؟
تعيش نقاط نهاية البوابة في جداول التوجيه وتخدم حركة VPC. أما نقاط نهاية الواجهة فتمنح مسار الشبكة المحلية عنوانًا خاصًا، إضافة إلى DNS والسياسة.
الوصول إلى S3 من شبكة مكتب عبر VPN موقع ليس مشكلة توجيه يحلها مسار ثابت بمفرده. تُربط نقطة نهاية البوابة بجداول التوجيه وتخدم الطلبات التي تنشأ داخل VPC. أما نقطة نهاية الواجهة فتضع واجهات شبكة مرنة بعناوين خاصة في الشبكات الفرعية لديك، ويمكن الوصول إلى تلك العناوين من المقر عبر VPN أو Direct Connect. مكان بدء الطلب يحدد أي النوعين تحتاجه فعلًا، ويأتي بعده عمل DNS ومجموعة الأمان والسياسة.
افصل أنواع نقاط النهاية حسب مكان بدء الطلب
تظهر نقطة نهاية البوابة كقيد في جدول التوجيه يشير إلى قائمة بادئات مُدارة. ليس لها واجهة شبكة ولا مجموعة أمان ولا عنوان خاص بها، وهذا بالضبط سبب عجز مضيف في المقر عن التوجيه إليها: لا يوجد شيء على الجانب الآخر يُوجَّه إليه. تصل الحركة من داخل VPC إلى S3 لأن جدول توجيه الشبكة الفرعية يرسل تلك البادئة إلى نقطة النهاية. أما الحركة من أي مكان آخر فليس لديها قيد كهذا تتبعه.
نقطة نهاية الواجهة هي مجموعة واجهات شبكة في شبكات فرعية تختارها، لكل منها عنوان خاص من تلك الشبكة الفرعية ومجموعة أمان مرتبطة بها. هذا هو الشكل الذي يستطيع عميل هجين استخدامه، لأنه وجهة عادية يستطيع النفق حمل الحزم إليها. ويعني أيضًا أن نقطة النهاية تستهلك عناوين في الشبكة الفرعية وقد تنفد منها.
aws ec2 describe-vpc-endpoints --query "VpcEndpoints[].{Id:VpcEndpointId,Type:VpcEndpointType,Service:ServiceName,State:State}" --output table
اقرأ عمود Type بدلًا من الاسم. غالبًا ما تحوي VPC واحدة النوعين للخدمة نفسها، والقيد الذي يحتاجه تطبيقك في المقر هو قيد الواجهة.
ابنِ المسار إلى عنوان الواجهة قبل اختبار S3
ثلاثة أمور يجب أن تكون صحيحة في الوقت نفسه: أن يكون لموجّه المقر مسار إلى الشبكة الفرعية لنقطة النهاية، وأن يصل مسار العودة من تلك الشبكة الفرعية إلى شبكة العميل، وأن تسمح مجموعة أمان نقطة النهاية بنطاق مصدر العميل. وقد تُسقط قائمة التحكم في الوصول الشبكية الخاصة بالشبكة الفرعية الحزمة بعد نجاح الثلاثة، فافحصها كبند رابع لا كفكرة لاحقة.
المسار العامل إلى أي مثيل EC2 في VPC لا يثبت أيًا من ذلك. إنه يبيّن أن النفق قائم، وهي الجزء الوحيد من المسار الذي تعرفه سلفًا. أثبت عنوان نقطة النهاية بشكل منفصل، ثم أثبت أن الاسم يُحل إليه.
ip route get 10.60.4.37 nc -vz 10.60.4.37 443 openssl s_client -connect 10.60.4.37:443 -servername bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com </dev/null
الأمر الأول يبيّن الواجهة التي سيستخدمها العميل. والثاني يثبت مصافحة TCP. والثالث يثبت أن TLS يكتمل بشهادة صالحة لاسم نقطة النهاية، وهو الفحص الذي يلتقط العنوان الخاطئ قبل أن تلوم الأذونات.
حدّد أي إجابة DNS يتلقاها التطبيق
وجود نقطة نهاية واجهة في VPC لا يعيد توجيه SDK في المقر من تلقاء نفسه. إما أن يستخدم العميل الاسم الخاص بنقطة النهاية الذي تنشره AWS لتلك النقطة، أو منطقة مستضافة خاصة جعلتها قابلة للحل من المكتب عمدًا.
لحل الأسماء الهجين، يحتاج المُحلِّل في المقر إلى مسار مدعوم إلى عرض DNS الخاص بـ VPC، عادةً عبر نقطة نهاية واردة من Resolver. إن تفعيل DNS الخاص دون فهم مصادر الاستعلام التي يؤثر فيها هو ما يجعل البحث يبدأ بإرجاع عنوان لا يستطيع المكتب الوصول إليه. الإعداد يغيّر الإجابات للاستعلامات التي تصل عبر مُحلِّل VPC، لا لكل عميل في كل مكان.
dig +short bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com aws s3api head-bucket --bucket example-artifacts --endpoint-url https://bucket.vpce-0123456789abcdef0-abc123.s3.us-east-1.vpce.amazonaws.com
شغّل الأمرين على مضيف التطبيق، لا على صندوق قفز داخل VPC. المُحلِّل الذي يجيب هناك هو الذي تستخدمه حملك، والإجابة المختلفة من مضيف مختلف هي أكثر مصادر الالتباس شيوعًا في هذا التصميم.
إمكانية الوصول ليست تفويضًا
الطلب الذي يصل إلى نقطة النهاية ما زال يحتاج إلى هوية أصلية مُخوَّلة وإلى إذن دلو منطبق. يمكن لسياسة نقطة النهاية أن تضيّق ما تسمح به النقطة، ويمكن لسياسة الدلو أن تضيّقه مرة أخرى. الوصول إلى الواجهة لا يقول شيئًا عن الكائنات التي يجوز للمتصل قراءتها.
اختبر الاتجاهين: استدعاء مصرَّح به غير ضار تجاه الدلو المقصود، واستدعاء يُتوقع رفضه لهوية أو مورد خارج السياسة. احفظ اسم نقطة النهاية والعنوان المُحل والسياق السياسي مع النتيجة ليتمكن الشخص التالي من إعادة إنتاجها. الرفض الذي يسمّي نوع السياسة يوفر ساعة من التخمين.
أخيرًا، قدّر سعر الخيارين قبل التهيئة. نقطة نهاية الواجهة تُحاسَب لكل ساعة واجهة ولكل غيغابايت، أما نقطة نهاية البوابة فلا، وهذا الفرق يحسم المسألة لكثير من أحمال العمل منخفضة الحجم التي تحتاج فقط إلى وصول من جانب VPC.