إذا كنت تدير تطبيق SSR على استضافة Amplify باستخدام ملف تكوين مخصص (deployment-spec) من الإصدار الأول، فستواجه بعض التحديات فيما يخص الحصول على الاعتمادات (Credentials) من خدمة AWS. إليك خطوات واضحة لحل المشكلة وفهم الطريقة الصحيحة للحصول على الاعتمادات أثناء تشغيل تطبيق SSR.
أولاً، لقد قمت بتحميل التطبيق باستخدام ملف الجسم المخصص بدلًا من إطار العمل الافتراضي. قمت بإرفاق دور IAM مخصص لحوسبة SSR، مع سياسة ثقة تسمح لـ amplify.amazonaws.com باعتبارها جهة موثوقة. عند بدء تشغيل الخادم، يستخدم نظام SDK الخاص بـ AWS للقيام بمحاولة قراءة قيم الأمان من SSM Parameter Store، ولكن تظهر مشكلة أن الاعتمادات غير متوفرة بشكل صحيح داخل وظيفة SSR قيد التشغيل.
جربت العديد من الطرق، مثل إرفاق الدور على مستوى الفرع، أو تحديده كم اساسي للتطبيق، مع تغييرات في إصدار Node.js، ومع ذلك، عند تشغيل التطبيق، يظهر أن CloudTrail يظهر أن Amplify يحاول استخدام الدور، لكن داخل وظيفة SSR، تظهر أخطاء تتعلق بعدم وجود الاعتمادات (CredentialsProviderError)، رغم أن المتغيرات البيئية مثل AWS_ACCESS_KEY_ID وغيرها غير مضبوطة.
توضح المستندات أن دور الحوسبة الخاص بـ SSR يُفترض أن يكون الاعتمادات متاحة مباشرة في بيئة العمل، ولكن في هذه الحالة، المثال غالبًا يكون مبنيًا على Next.js، وقد لا تكون الطريقة مألًا للتطبيقات المخصصة أو غير المبنية على Next.js.
ثمّة أسئلة مهمة يجب الإجابة عليها:
– هل يمكن لدور الحوسبة أن يوفر الاعتمادات لتطبيقات Deployment-spec (الإصدار الأول) أو يقتصر الأمر على التطبيقات المبنية على أطر عمل معينة مثل Next.js؟
– إذا كانت الإجابة نعم، فما هي الطريقة التي يجب أن يستخدمها كود الخادم للحصول على الاعتمادات؟ هل يوجد مزود أو نقطة نهاية مختلفة عن الاعتمادات الافتراضية الخاصة بـ SDK؟
– وإذا كانت الإجابة لا، فما هي الطريقة المدعومة ليحصل تطبيق SSR على صلاحيات AWS أثناء التشغيل، من دون الحاجة إلى مفتاح دائم مخزن داخل ملف التوزيع؟
لحل هذه المشكلة، من الأفضل أن تتأكد من أن إعدادات الدور وبيئة التشغيل تتوافق مع المستندات الرسمية، وتبحث عن مزود الاعتمادات المناسب داخل البيئة. غالبًا، تغييرات في إعدادات الدور، أو تكوين بيئة التشغيل، أو استخدام مزود الاعتمادات الخاص بـ AWS داخل الكود يمكن أن يساعد. كما يُنصح بمراجعة طريقة إعداد الدور لضمان أن الاعتمادات متاحة بشكل صحيح أثناء تشغيل تطبيق SSR بدون الحاجة إلى مفاتيح ثابتة، وأن تكون متوافقة مع بيئة تشغيلك ونوع التطبيق الذي تُشغله.
