acme-dns-route53 je alat koji će nam omogućiti da implementiramo ovu funkciju. Može raditi sa SSL certifikatima iz Let's Encrypt, spremiti ih u Amazon Certificate Manager, koristiti Route53 API za implementaciju DNS-01 izazova i, konačno, proslijediti obavještenja SNS-u. IN acme-dns-route53 Tu je i ugrađena funkcionalnost za korištenje unutar AWS Lambda, a to je ono što nam treba.
Ovaj članak je podijeljen u 4 dijela:
kreiranje zip datoteke;
kreiranje IAM uloge;
kreiranje lambda funkcije koja se pokreće acme-dns-route53;
kreiranje CloudWatch tajmera koji pokreće funkciju 2 puta dnevno;
Bilješka: Prije nego što počnete potrebno je instalirati GoLang 1.9+ и AWS CLI
Kreiranje zip datoteke
acme-dns-route53 je napisan na GoLangu i podržava verziju ne nižu od 1.9.
Moramo kreirati zip datoteku sa binarnom datotekom acme-dns-route53 unutra. Da biste to uradili morate instalirati acme-dns-route53 iz GitHub spremišta koristeći naredbu go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binarna datoteka je instalirana u $GOPATH/bin imenik. Imajte na umu da smo tokom instalacije naveli dva promijenjena okruženja: GOOS=linux и GOARCH=amd64. Oni jasno stavljaju do znanja Go kompajleru da treba da kreira binarni fajl prikladan za Linux OS i amd64 arhitekturu – to je ono što radi na AWS-u.
AWS očekuje da se naš program implementira u zip fajlu, pa krenimo acme-dns-route53.zip arhiva koja će sadržavati novoinstalirani binarni fajl:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Bilješka: Binarni bi trebao biti u korijenu zip arhive. Za ovo koristimo -j zastava.
Sada je naš zip nadimak spreman za implementaciju, ostaje samo da kreirate ulogu sa potrebnim pravima.
Kreiranje IAM uloge
Moramo postaviti IAM ulogu s pravima koja zahtijeva naša lambda tokom njenog izvršavanja.
Nazovimo ovu politiku lambda-acme-dns-route53-executor i odmah joj dati osnovnu ulogu AWSLambdaBasicExecutionRole. Ovo će omogućiti našem lambda pokretanju i zapisivanju dnevnika na uslugu AWS CloudWatch.
Prvo, kreiramo JSON fajl koji opisuje naša prava. Ovo će u suštini omogućiti lambda servisima da koriste ulogu lambda-acme-dns-route53-executor:
Sada pokrenimo naredbu aws iam create-role da kreirate ulogu:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Bilješka: zapamtite politiku ARN (Amazon Resource Name) - trebat će nam u sljedećim koracima.
Uloga lambda-acme-dns-route53-executor kreiran, sada moramo navesti dozvole za njega. Najlakši način da to učinite je korištenje naredbe aws iam attach-role-policy, donošenje politike ARN AWSLambdaBasicExecutionRole kako slijedi:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Bilješka: može se naći lista sa drugim pravilima ovdje.
Kreiranje lambda funkcije koja se pokreće acme-dns-route53
Ura! Sada možete primijeniti našu funkciju na AWS pomoću naredbe aws lambda create-function. Lambda mora biti konfigurirana korištenjem sljedećih varijabli okruženja:
AWS_LAMBDA - jasno je acme-dns-route53 da se izvršavanje dešava unutar AWS Lambda.