অন-প্রিমাইজেস ক্লায়েন্টের জন্য S3 গেটওয়ে নাকি ইন্টারফেস এন্ডপয়েন্ট?
গেটওয়ে এন্ডপয়েন্ট রুট টেবিলে থাকে এবং VPC ট্রাফিক পরিবেশন করে। ইন্টারফেস এন্ডপয়েন্ট অন-প্রিমাইজেস পথকে একটি প্রাইভেট ঠিকানা দেয়, সাথে DNS ও পলিসি।
সাইট VPN-এর মাধ্যমে অফিস নেটওয়ার্ক থেকে S3-এ পৌঁছানো এমন কোনো রাউটিং সমস্যা নয় যা একটি স্ট্যাটিক রুট একা সমাধান করতে পারে। একটি গেটওয়ে এন্ডপয়েন্ট রুট টেবিলে সংযুক্ত থাকে এবং 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 পরীক্ষা করার আগে ইন্টারফেস ঠিকানার পথ তৈরি করুন
তিনটি বিষয় একসাথে সত্য হতে হবে: অন-প্রিমাইজেস রাউটারের এন্ডপয়েন্ট সাবনেটে একটি রুট আছে, সেই সাবনেট থেকে ফেরার পথ ক্লায়েন্ট নেটওয়ার্কে পৌঁছায়, এবং এন্ডপয়েন্টের সিকিউরিটি গ্রুপ ক্লায়েন্টের সোর্স রেঞ্জ গ্রহণ করে। তিনটি পাস হওয়ার পরেও সাবনেটের নেটওয়ার্ক ACL প্যাকেটটি ফেলে দিতে পারে, তাই এটিকে পরের ভাবনা নয় বরং চতুর্থ বিষয় হিসেবে যাচাই করুন।
VPC-তে কোনো EC2 ইনস্ট্যান্সে কাজ করা রুট এর কোনোটিই প্রমাণ করে না। এটি দেখায় টানেল চালু আছে, যা পথের সেই একমাত্র অংশ যা আপনি আগেই জানতেন। এন্ডপয়েন্ট ঠিকানাটি আলাদাভাবে প্রমাণ করুন, তারপর প্রমাণ করুন নামটি সেটিতে রিজলভ হয়।
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 যে এন্ডপয়েন্ট-নির্দিষ্ট নাম প্রকাশ করে তা ব্যবহার করে, নয়তো এমন একটি প্রাইভেট হোস্টেড জোন ব্যবহার করে যা আপনি ইচ্ছাকৃতভাবে অফিস থেকে রিজলভযোগ্য করেছেন।
হাইব্রিড রিজলিউশনের জন্য অন-প্রিমাইজেস রিজলভারের VPC-এর DNS ভিউতে একটি সমর্থিত পথ দরকার, সাধারণত 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-পাশের অ্যাক্সেস দরকার।