acme-dns-route53 je nástroj, který nám umožní tuto funkci implementovat. Umí pracovat s SSL certifikáty z Let's Encrypt, ukládat je do Amazon Certificate Manager, využívat Route53 API k implementaci DNS-01 výzvy a nakonec odesílat upozornění na SNS. V acme-dns-route53 K dispozici je také vestavěná funkce pro použití uvnitř AWS Lambda, a to je to, co potřebujeme.
Tento článek je rozdělen do 4 částí:
vytvoření souboru zip;
vytvoření role IAM;
vytvoření lambda funkce, která běží acme-dns-route53;
vytvoření časovače CloudWatch, který spouští funkci 2krát denně;
acme-dns-route53 je napsán v GoLang a podporuje verzi ne nižší než 1.9.
Musíme vytvořit soubor zip s binárním souborem acme-dns-route53 uvnitř. Chcete-li to provést, musíte nainstalovat acme-dns-route53 z úložiště GitHub pomocí příkazu go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binární soubor je nainstalován v $GOPATH/bin adresář. Vezměte prosím na vědomí, že během instalace jsme specifikovali dvě změněná prostředí: GOOS=linux и GOARCH=amd64. Kompilátoru Go jasně dávají najevo, že potřebuje vytvořit binární soubor vhodný pro OS Linux a architekturu amd64 – to je to, co běží na AWS.
AWS očekává, že náš program bude nasazen v souboru zip, takže pojďme tvořit acme-dns-route53.zip archiv, který bude obsahovat nově nainstalovaný binární soubor:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Poznámka: Binární soubor by měl být v kořenovém adresáři zip archivu. K tomu používáme -j vlajka.
Nyní je naše zip přezdívka připravena k nasazení, zbývá pouze vytvořit roli s potřebnými právy.
Vytvoření role IAM
Musíme nastavit roli IAM s právy požadovanými naší lambda během jejího provádění.
Říkejme tomu politika lambda-acme-dns-route53-executor a hned jí dát základní roli AWSLambdaBasicExecutionRole. To umožní naší lambdě spouštět a zapisovat protokoly do služby AWS CloudWatch.
Nejprve vytvoříme soubor JSON, který popisuje naše práva. To v podstatě umožní službám lambda používat roli lambda-acme-dns-route53-executor:
Nyní spusťte příkaz aws iam create-role vytvořit roli:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Poznámka: zapamatujte si politiku ARN (Amazon Resource Name) – budeme ji potřebovat v dalších krocích.
Role lambda-acme-dns-route53-executor vytvořen, nyní pro něj musíme zadat oprávnění. Nejjednodušší způsob, jak toho dosáhnout, je použít příkaz aws iam attach-role-policy, předávání zásad 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
Poznámka: lze nalézt seznam s dalšími zásadami zde.
Vytvoření funkce lambda, která běží acme-dns-route53
Hurá! Nyní můžete naši funkci nasadit do AWS pomocí příkazu aws lambda create-function. Lambda musí být nakonfigurována pomocí následujících proměnných prostředí:
AWS_LAMBDA - dává jasno acme-dns-route53 že ke spuštění dochází uvnitř AWS Lambda.