acme-dns-route53 is in ark dat sil tastean ús te fieren dizze funksje. It kin wurkje mei SSL-sertifikaten fan Let's Encrypt, bewarje se yn Amazon Certificate Manager, brûk de Route53 API om de DNS-01-útdaging út te fieren, en, as lêste, push-notifikaasjes nei SNS. YN acme-dns-route53 D'r is ek ynboude funksjonaliteit foar gebrûk binnen AWS Lambda, en dit is wat wy nedich binne.
Dit artikel is ferdield yn 4 seksjes:
it meitsjen fan in zip-bestân;
it meitsjen fan in IAM-rol;
it meitsjen fan in lambda funksje dy't rint acme-dns-route53;
it meitsjen fan in CloudWatch-timer dy't in funksje 2 kear deis trigger;
acme-dns-route53 is skreaun yn GoLang en stipet ferzje net leger as 1.9.
Wy moatte in zip-bestân meitsje mei in binêr acme-dns-route53 binnenkant. Om dit te dwaan moatte jo ynstallearje acme-dns-route53 fan GitHub-repository mei it kommando go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
De binêre is ynstalleare yn $GOPATH/bin directory. Tink derom dat wy by ynstallaasje twa feroare omjouwings spesifisearje: GOOS=linux и GOARCH=amd64. Se meitsje it dúdlik foar de Go-kompiler dat it in binêr moat meitsje dat geskikt is foar Linux OS en amd64-arsjitektuer - dit is wat op AWS rint.
AWS ferwachtet dat ús programma wurdt ynset yn in zip-bestân, dus litte wy meitsje acme-dns-route53.zip argyf dat de nij ynstalleare binêr sil befetsje:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Noat: De binêre moat yn 'e root fan it zip-argyf wêze. Dêrfoar brûke wy -j flagge.
No is ús zip-bynamme klear foar ynset, alles wat bliuwt is om in rol te meitsjen mei de nedige rjochten.
It meitsjen fan in IAM-rol
Wy moatte in IAM-rol ynstelle mei de rjochten dy't nedich binne troch ús lambda tidens syn útfiering.
Litte wy dit belied neame lambda-acme-dns-route53-executor en jou har daliks in basisrol AWSLambdaBasicExecutionRole. Dit sil ús lambda tastean om logs út te fieren en te skriuwen nei de AWS CloudWatch-tsjinst.
Earst meitsje wy in JSON-bestân dat ús rjochten beskriuwt. Dit sil yn essinsje lambda-tsjinsten tastean de rol te brûken lambda-acme-dns-route53-executor:
Litte wy no it kommando útfiere aws iam create-role om in rol te meitsjen:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Noat: tink oan it belied ARN (Amazon Resource Name) - wy sille it nedich wêze yn 'e folgjende stappen.
De rol fan lambda-acme-dns-route53-executor makke, no moatte wy tagongsrjochten foar it opjaan. De maklikste manier om dit te dwaan is it kommando te brûken aws iam attach-role-policy, trochjaan belied ARN AWSLambdaBasicExecutionRole as folget:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
It meitsjen fan in lambda funksje dy't rint acme-dns-route53
Hoera! No kinne jo ús funksje ynsette nei AWS mei it kommando aws lambda create-function. De lambda moat wurde konfigureare mei de folgjende omjouwingsfariabelen:
AWS_LAMBDA - makket it dúdlik acme-dns-route53 dat útfiering komt binnen AWS Lambda.
DOMAINS - in list mei domeinen skieden troch komma's.