acme-dns-route53 je nástroj, ktorý nám umožní implementovať túto funkciu. Dokáže pracovať s certifikátmi SSL z Let's Encrypt, ukladať ich v Amazon Certificate Manager, používať Route53 API na implementáciu DNS-01 výzvy a nakoniec posielať notifikácie SNS. IN acme-dns-route53 K dispozícii je tiež vstavaná funkcia na použitie vo vnútri AWS Lambda, a to je to, čo potrebujeme.
Tento článok je rozdelený do 4 sekcií:
vytvorenie súboru zip;
vytvorenie role IAM;
vytvorenie lambda funkcie, ktorá beží acme-dns-route53;
vytvorenie časovača CloudWatch, ktorý spúšťa funkciu 2-krát denne;
acme-dns-route53 je napísaný v GoLang a podporuje verziu nie nižšiu ako 1.9.
Musíme vytvoriť súbor zip s binárnym súborom acme-dns-route53 vnútri. Ak to chcete urobiť, musíte nainštalovať acme-dns-route53 z úložiska GitHub pomocou príkazu go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binárna je nainštalovaná v $GOPATH/bin adresár. Upozorňujeme, že počas inštalácie sme špecifikovali dve zmenené prostredia: GOOS=linux и GOARCH=amd64. Kompilátoru Go jasne dávajú najavo, že potrebuje vytvoriť binárny súbor vhodný pre OS Linux a architektúru amd64 – to je to, čo beží na AWS.
AWS očakáva, že náš program bude nasadený v súbore zip, takže poďme tvoriť acme-dns-route53.zip archív, ktorý bude obsahovať novo nainštalovaný binárny súbor:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Poznámka: Binárny súbor by mal byť v koreňovom adresári zip archívu. Na to používame -j vlajka.
Teraz je naša zipová prezývka pripravená na nasadenie, zostáva už len vytvoriť rolu s potrebnými právami.
Vytvorenie role IAM
Musíme nastaviť rolu IAM s právami, ktoré vyžaduje naša lambda počas jej vykonávania.
Nazvime to politika lambda-acme-dns-route53-executor a hneď jej dať základnú úlohu AWSLambdaBasicExecutionRole. To umožní našej lambde bežať a zapisovať protokoly do služby AWS CloudWatch.
Najprv vytvoríme súbor JSON, ktorý popisuje naše práva. To v podstate umožní službám lambda používať túto rolu lambda-acme-dns-route53-executor:
Teraz spustíme príkaz aws iam create-role vytvoriť rolu:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Poznámka: zapamätajte si politiku ARN (Amazon Resource Name) – budeme ju potrebovať v ďalších krokoch.
Úloha lambda-acme-dns-route53-executor vytvorený, teraz preň musíme zadať povolenia. Najjednoduchší spôsob, ako to urobiť, je použiť príkaz aws iam attach-role-policy, absolvovanie politiky ARN AWSLambdaBasicExecutionRole takto:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Vytvorenie funkcie lambda, ktorá beží acme-dns-route53
Hurá! Teraz môžete nasadiť našu funkciu do AWS pomocou príkazu aws lambda create-function. Lambda musí byť nakonfigurovaná pomocou nasledujúcich premenných prostredia:
AWS_LAMBDA - objasňuje acme-dns-route53 že spustenie prebieha vo vnútri AWS Lambda.