acme-dns-roete53 is 'n instrument wat ons sal toelaat om hierdie kenmerk te implementeer. Dit kan met SSL-sertifikate van Let's Encrypt werk, dit in Amazon Certificate Manager stoor, die Route53 API gebruik om die DNS-01-uitdaging te implementeer, en laastens, kennisgewings na SNS stoot. IN acme-dns-roete53 Daar is ook ingeboude funksionaliteit vir gebruik binne AWS Lambda, en dit is wat ons nodig het.
Hierdie artikel is in 4 afdelings verdeel:
die skep van 'n zip-lêer;
die skep van 'n IAM-rol;
die skep van 'n lambda-funksie wat loop acme-dns-roete53;
die skep van 'n CloudWatch-timer wat 'n funksie 2 keer per dag aktiveer;
acme-dns-route53 is in GoLang geskryf en ondersteun weergawe nie laer as 1.9 nie.
Ons moet 'n zip-lêer met 'n binêre skep acme-dns-route53 binne. Om dit te doen moet jy installeer acme-dns-route53 vanaf GitHub-bewaarplek met behulp van die opdrag go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Die binêre is geïnstalleer in $GOPATH/bin gids. Neem asseblief kennis dat ons tydens installasie twee veranderde omgewings gespesifiseer het: GOOS=linux и GOARCH=amd64. Hulle maak dit duidelik aan die Go-samesteller dat dit 'n binêre moet skep wat geskik is vir Linux OS en amd64-argitektuur - dit is wat op AWS loop.
AWS verwag dat ons program in 'n zip-lêer ontplooi sal word, so kom ons skep acme-dns-route53.zip argief wat die nuut geïnstalleerde binêre sal bevat:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
let wel: Die binêre moet in die wortel van die zip-argief wees. Hiervoor gebruik ons -j vlag.
Nou is ons zip-bynaam gereed vir ontplooiing, al wat oorbly is om 'n rol te skep met die nodige regte.
Skep 'n IAM-rol
Ons moet 'n IAM-rol opstel met die regte wat ons lambda vereis tydens die uitvoering daarvan.
Kom ons noem dit beleid lambda-acme-dns-route53-executor en gee haar dadelik 'n basiese rol AWSLambdaBasicExecutionRole. Dit sal ons lambda toelaat om logs na die AWS CloudWatch-diens te laat loop en te skryf.
Eerstens skep ons 'n JSON-lêer wat ons regte beskryf. Dit sal in wese lambda-dienste toelaat om die rol te gebruik lambda-acme-dns-route53-executor:
Laat ons nou die opdrag uitvoer aws iam create-role om 'n rol te skep:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
let wel: onthou die beleid ARN (Amazon Resource Name) - ons sal dit in die volgende stappe nodig hê.
Rol lambda-acme-dns-route53-executor geskep, nou moet ons toestemmings daarvoor spesifiseer. Die maklikste manier om dit te doen is om die opdrag te gebruik aws iam attach-role-policy, verbygaande beleid ARN AWSLambdaBasicExecutionRole soos volg:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
let wel: 'n lys met ander beleide kan gevind word hier.
Die skep van 'n lambda-funksie wat loop acme-dns-roete53
Hoera! Nou kan u ons funksie na AWS ontplooi deur die opdrag te gebruik aws lambda create-function. Die lambda moet gekonfigureer word deur die volgende omgewingsveranderlikes te gebruik:
AWS_LAMBDA - maak dit duidelik acme-dns-roete53 dat uitvoering binne AWS Lambda plaasvind.