acme-dns-route53 գործիք է, որը մեզ թույլ կտա իրականացնել այս հնարավորությունը: Այն կարող է աշխատել Let's Encrypt-ի SSL վկայագրերի հետ, պահպանել դրանք Amazon Certificate Manager-ում, օգտագործել Route53 API՝ DNS-01 մարտահրավերն իրականացնելու համար և, վերջապես, ուղարկել ծանուցումներ 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 compiler-ին հասկացնում են, որ այն պետք է ստեղծի երկուական, որը հարմար է 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-ն դրա իրականացման ընթացքում:
Սա կոչենք քաղաքականություն lambda-acme-dns-route53-executor և անմիջապես տալ նրան հիմնական դերը AWSLambdaBasicExecutionRole. Սա թույլ կտա մեր lambda-ին գործարկել և գրել տեղեկամատյաններ AWS CloudWatch ծառայության մեջ:
Նախ, մենք ստեղծում ենք JSON ֆայլ, որը նկարագրում է մեր իրավունքները: Սա, ըստ էության, թույլ կտա lambda ծառայություններին օգտագործել դերը 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 Resource Name) քաղաքականությունը. այն մեզ անհրաժեշտ կլինի հաջորդ քայլերում:
Դեր 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 — տիրույթների ցուցակ, որոնք բաժանված են ստորակետերով: