acme-dns-route53 бул функцияны ишке ашырууга мүмкүндүк берүүчү курал болуп саналат. Ал Let's Encrypt'тен SSL сертификаттары менен иштей алат, аларды Amazon Certificate Manager'де сактай алат, DNS-53 чакырыгын ишке ашыруу үчүн Route01 API колдоно алат жана акырында SNS'ге эскертмелерди түртөт. IN acme-dns-route53 AWS Lambda ичинде колдонуу үчүн орнотулган функция дагы бар жана бул бизге керек.
Бул макала 4 бөлүккө бөлүнөт:
zip файлын түзүү;
IAM ролун түзүү;
иштеген ламбда функциясын түзүү acme-dns-route53;
CloudWatch таймерди түзүү, ал функцияны күнүнө 2 жолу иштетет;
acme-dns-route53 GoLang тилинде жазылган жана 1.9дан төмөн эмес версиясын колдойт.
Биз бинардык менен zip файлын түзүшүбүз керек 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 OS жана amd64 архитектурасына ылайыктуу бинардык түзүлүшү керек экенин ачык айтышат - бул AWSде иштейт.
AWS биздин программа zip файлында жайгаштырылышын күтөт, андыктан түзөлү acme-dns-route53.zip жаңы орнотулган экиликти камтыган архив:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Эскертүү: Бинарлык zip архивинин тамырында болушу керек. Бул үчүн биз колдонобуз -j желек.
Эми биздин zip лакап атыбыз жайылтууга даяр, калганы керектүү укуктарга ээ ролду түзүү.
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 (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
Эскертүү: башка саясаттар менен тизмеси тапса болот бул жерде.
Ламбда функциясын иштеп чыгуу acme-dns-route53
Жашасын! Эми сиз буйрукту колдонуу менен биздин функцияны AWSге орното аласыз aws lambda create-function. Ламбда төмөнкү чөйрө өзгөрмөлөрүнүн жардамы менен конфигурацияланышы керек:
AWS_LAMBDA - аны ачык кылат acme-dns-route53 бул аткаруу AWS Lambda ичинде ишке ашат.
DOMAINS — үтүр менен бөлүнгөн домендердин тизмеси.