ذروة نظام أسماء النطاقات-route53 هي أداة من شأنها أن تسمح لنا بتنفيذ هذه الميزة. يمكنه العمل مع شهادات SSL من Let's Encrypt، وحفظها في Amazon Certified Manager، واستخدام Route53 API لتنفيذ تحدي DNS-01، وأخيرًا، دفع الإشعارات إلى SNS. في ذروة نظام أسماء النطاقات-route53 هناك أيضًا وظيفة مدمجة للاستخدام داخل AWS Lambda، وهذا ما نحتاج إليه.
تنقسم هذه المقالة إلى 4 أقسام:
إنشاء ملف مضغوط.
إنشاء دور IAM؛
إنشاء وظيفة لامدا التي تعمل ذروة نظام أسماء النطاقات-route53;
إنشاء مؤقت CloudWatch الذي يقوم بتشغيل وظيفة مرتين في اليوم؛
acme-dns-route53 مكتوب بلغة GoLang ويدعم الإصدار الذي لا يقل عن 1.9.
نحن بحاجة إلى إنشاء ملف مضغوط مع ملف ثنائي acme-dns-route53 داخل. للقيام بذلك تحتاج إلى تثبيت acme-dns-route53 من مستودع GitHub باستخدام الأمر go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
تم تثبيت الثنائي في $GOPATH/bin الدليل. يرجى ملاحظة أنه أثناء التثبيت قمنا بتحديد بيئتين تم تغييرهما: GOOS=linux и GOARCH=amd64. لقد أوضحوا لمترجم Go أنه يحتاج إلى إنشاء ثنائي مناسب لنظام التشغيل Linux وبنية amd64 - وهذا هو ما يتم تشغيله على AWS.
تتوقع AWS أن يتم نشر برنامجنا في ملف مضغوط، لذلك دعونا ننشئه acme-dns-route53.zip الأرشيف الذي سيحتوي على الملف الثنائي المثبت حديثًا:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
ملحوظة: يجب أن يكون الملف الثنائي في جذر الأرشيف المضغوط. لهذا نستخدم -j علَم.
الآن أصبح لقبنا المضغوط جاهزًا للنشر، وكل ما تبقى هو إنشاء دور بالحقوق اللازمة.
إنشاء دور IAM
نحن بحاجة إلى إعداد دور IAM بالحقوق التي تتطلبها خاصية lambda الخاصة بنا أثناء تنفيذها.
دعونا نسمي هذه السياسة lambda-acme-dns-route53-executor ومنحها على الفور دورًا أساسيًا AWSLambdaBasicExecutionRole. سيسمح هذا لجهاز lambda الخاص بنا بتشغيل السجلات وكتابتها في خدمة AWS CloudWatch.
أولاً، نقوم بإنشاء ملف JSON يصف حقوقنا. سيسمح هذا بشكل أساسي لخدمات لامدا باستخدام الدور lambda-acme-dns-route53-executor:
الآن لنقم بتشغيل الأمر aws iam create-role لإنشاء دور:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
ملحوظة: تذكر سياسة ARN (اسم مورد Amazon) - سنحتاج إليها في الخطوات التالية.
دور lambda-acme-dns-route53-executor تم إنشاؤه، والآن نحن بحاجة إلى تحديد الأذونات لذلك. أسهل طريقة للقيام بذلك هي استخدام الأمر aws iam attach-role-policy، تمرير سياسة ARN AWSLambdaBasicExecutionRole على النحو التالي:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
ملحوظة: يمكن العثور على قائمة بالسياسات الأخرى هنا.
إنشاء دالة لامدا التي تعمل ذروة نظام أسماء النطاقات-route53
مرحا! يمكنك الآن نشر وظيفتنا على AWS باستخدام الأمر aws lambda create-function. يجب تكوين lambda باستخدام متغيرات البيئة التالية:
AWS_LAMBDA - يوضح الأمر ذروة نظام أسماء النطاقات-route53 يحدث هذا التنفيذ داخل AWS Lambda.