acme-dns-route53 ابزاری است که به ما امکان پیاده سازی این ویژگی را می دهد. میتواند با گواهیهای SSL از Let's Encrypt کار کند، آنها را در مدیر گواهی آمازون ذخیره کند، از Route53 API برای اجرای چالش DNS-01 استفاده کند، و در نهایت، اعلانها را به SNS ارسال کند. که در acme-dns-route53 همچنین عملکرد داخلی برای استفاده در AWS Lambda وجود دارد و این همان چیزی است که ما به آن نیاز داریم.
این مقاله به 4 بخش تقسیم شده است:
ایجاد یک فایل فشرده؛
ایجاد نقش IAM؛
ایجاد یک تابع لامبدا که اجرا می شود acme-dns-route53;
ایجاد یک تایمر CloudWatch که یک عملکرد را 2 بار در روز فعال می کند.
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 روشن می کنند که باید یک باینری مناسب برای سیستم عامل لینوکس و معماری amd64 ایجاد کند - این همان چیزی است که روی AWS اجرا می شود.
AWS انتظار دارد برنامه ما در یک فایل فشرده مستقر شود، پس بیایید ایجاد کنیم acme-dns-route53.zip بایگانی که حاوی باینری تازه نصب شده است:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
توجه داشته باشید: باینری باید در ریشه آرشیو zip باشد. برای این ما استفاده می کنیم -j پرچم.
اکنون نام مستعار زیپ ما آماده استقرار است، تنها چیزی که باقی می ماند ایجاد یک نقش با حقوق لازم است.
ایجاد نقش IAM
ما باید یک نقش IAM با حقوق مورد نیاز لامبدا در طول اجرای آن راه اندازی کنیم.
بیایید نام این سیاست را بگذاریم lambda-acme-dns-route53-executor و بلافاصله یک نقش اساسی به او بدهید AWSLambdaBasicExecutionRole. این به لامبدا ما اجازه میدهد تا گزارشها را در سرویس 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 (نام منبع آمازون) را به خاطر بسپارید - در مراحل بعدی به آن نیاز خواهیم داشت.
نقش 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
توجه داشته باشید: فهرستی با سایر سیاست ها را می توان یافت اینجا.
ایجاد یک تابع لامبدا که اجرا می شود acme-dns-route53
هورا! اکنون می توانید با استفاده از دستور تابع ما را در AWS مستقر کنید aws lambda create-function. لامبدا باید با استفاده از متغیرهای محیطی زیر پیکربندی شود:
AWS_LAMBDA - روشن می کند acme-dns-route53 که اجرا در داخل AWS Lambda رخ می دهد.
DOMAINS - لیستی از دامنه ها که با کاما از هم جدا شده اند.