āĻĒā§āĻ¸ā§āĻāĻāĻŋ āĻĨā§āĻā§ SSL āĻ¸āĻžāĻ°ā§āĻāĻŋāĻĢāĻŋāĻā§āĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§ā§ˇ
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ 4āĻāĻŋ āĻŦāĻŋāĻāĻžāĻā§ āĻŦāĻŋāĻāĻā§āĻ¤:
- āĻāĻāĻāĻŋ āĻāĻŋāĻĒ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž;
- āĻāĻāĻāĻŋ IAM āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž;
- āĻāĻāĻāĻŋ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻž āĻāĻ˛ā§ acme-dns-route53;
- āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻāĻĄāĻāĻ¯āĻŧāĻžāĻ āĻāĻžāĻāĻŽāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻž āĻĻāĻŋāĻ¨ā§ 2 āĻŦāĻžāĻ° āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°ā§;
āĻŦāĻŋāĻāĻĻā§āĻ°āĻ: āĻāĻĒāĻ¨āĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§
āĻāĻāĻāĻŋ āĻāĻŋāĻĒ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§
acme-dns-route53 GoLang-āĻ āĻ˛ā§āĻāĻž āĻāĻŦāĻ 1.9-āĻāĻ° āĻāĻŽ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻāĻŋāĻĒ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ acme-dns-route53
āĻāĻŋāĻ¤āĻ°ā§ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ acme-dns-route53
āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ GitHub āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĨā§āĻā§ go install
:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧ $GOPATH/bin
āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ
āĻ¨ā§āĻā§āĻ°āĻš āĻāĻ°ā§ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĻāĻŋ: GOOS=linux
и GOARCH=amd64
. āĻ¤āĻžāĻ°āĻž Go āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ°āĻā§ āĻ¸ā§āĻĒāĻˇā§āĻ āĻāĻ°ā§ āĻĻā§āĻ¯āĻŧ āĻ¯ā§ āĻāĻāĻŋāĻā§ Linux OS āĻāĻŦāĻ amd64 āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ - āĻāĻāĻŋ AWS-āĻ āĻāĻ˛ā§āĨ¤
AWS āĻāĻļāĻž āĻāĻ°ā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻĒ āĻĢāĻžāĻāĻ˛ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻŦā§, āĻ¤āĻžāĻ āĻāĻ¸ā§āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ acme-dns-route53.zip
āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ° āĻ¯āĻž āĻ¨āĻ¤ā§āĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŦā§:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
āĻŦāĻŋāĻāĻĻā§āĻ°āĻ: āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋāĻāĻŋ āĻāĻŋāĻĒ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°ā§āĻ° āĻŽā§āĻ˛ā§ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ -j
āĻĒāĻ¤āĻžāĻāĻž
āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŋāĻĒ āĻĄāĻžāĻāĻ¨āĻžāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤, āĻ¯āĻž āĻŦāĻžāĻāĻŋ āĻāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ āĻ§āĻŋāĻāĻžāĻ° āĻ¸āĻš āĻāĻāĻāĻŋ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĨ¤
āĻāĻāĻāĻŋ āĻāĻāĻāĻāĻŽ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž
āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ
āĻ§āĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻāĻāĻāĻāĻŽ āĻā§āĻŽāĻŋāĻāĻž āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻ° āĻāĻ āĻ¨ā§āĻ¤āĻŋ āĻāĻ˛ āĻāĻ°āĻž āĻ¯āĻžāĻ lambda-acme-dns-route53-executor
āĻāĻŦāĻ āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¤āĻžāĻā§ āĻāĻāĻāĻŋ āĻŽā§āĻ˛āĻŋāĻ āĻā§āĻŽāĻŋāĻāĻž āĻĻāĻŋāĻ¨ AWSLambdaBasicExecutionRole
. āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻžāĻā§ AWS āĻā§āĻ˛āĻžāĻāĻĄāĻāĻ¯āĻŧāĻžāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ¤ā§ āĻ˛āĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻŦāĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§ā§ˇ
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ JSON āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ
āĻ§āĻŋāĻāĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻŽā§āĻ˛āĻ¤ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻā§ āĻā§āĻŽāĻŋāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§ā§ˇ lambda-acme-dns-route53-executor
:
$ touch ~/lambda-acme-dns-route53-executor-policy.json
āĻāĻŽāĻžāĻĻā§āĻ° āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup"
],
"Resource": "arn:aws:logs:<AWS_REGION>:<AWS_ACCOUNT_ID>:*"
},
{
"Effect": "Allow",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream"
],
"Resource": "arn:aws:logs:<AWS_REGION>:<AWS_ACCOUNT_ID>:log-group:/aws/lambda/acme-dns-route53:*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
"cloudwatch:PutMetricData",
"acm:ImportCertificate",
"acm:ListCertificates"
],
"Resource": "*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"sns:Publish",
"route53:GetChange",
"route53:ChangeResourceRecordSets",
"acm:ImportCertificate",
"acm:DescribeCertificate"
],
"Resource": [
"arn:aws:sns:${var.region}:<AWS_ACCOUNT_ID>:<TOPIC_NAME>",
"arn:aws:route53:::hostedzone/*",
"arn:aws:route53:::change/*",
"arn:aws:acm:<AWS_REGION>:<AWS_ACCOUNT_ID>:certificate/*"
]
}
]
}
āĻāĻāĻ¨ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ°āĻžāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ aws iam create-role
āĻāĻāĻāĻŋ āĻā§āĻŽāĻŋāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
āĻŦāĻŋāĻāĻĻā§āĻ°āĻ: āĻ¨ā§āĻ¤āĻŋ ARN (Amazon Resource Name) āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ - āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ§āĻžāĻĒā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§āĨ¤
āĻā§āĻŽāĻŋāĻāĻž lambda-acme-dns-route53-executor
āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻāĻĒāĻžāĻ¯āĻŧ āĻšāĻ˛ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž aws iam attach-role-policy
, āĻĒāĻžāĻ¸āĻŋāĻ āĻĒāĻ˛āĻŋāĻ¸āĻŋ ARN AWSLambdaBasicExecutionRole
āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
āĻŦāĻŋāĻāĻĻā§āĻ°āĻ: āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨ā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§
āĻāĻāĻāĻŋ āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻž āĻāĻ˛ā§ acme-dns-route53
āĻšā§āĻ°āĻ°ā§! āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ AWS-āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻĢāĻžāĻāĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ aws lambda create-function
. āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻ
āĻŦāĻļā§āĻ¯āĻ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤:
AWS_LAMBDA
- āĻāĻāĻž āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°ā§ acme-dns-route53 āĻ¯ā§ āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ AWS Lambda āĻāĻŋāĻ¤āĻ°ā§ āĻāĻā§.DOMAINS
â āĻāĻŽāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻĨāĻ āĻāĻ°āĻž āĻĄā§āĻŽā§āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĨ¤LETSENCRYPT_EMAIL
- āĻ°āĻ¯āĻŧā§āĻā§āĻāĻ° āĻāĻŽā§āĻ˛ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ .NOTIFICATION_TOPIC
- SNS āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧā§āĻ° āĻ¨āĻžāĻŽ (āĻāĻā§āĻāĻŋāĻ)āĨ¤STAGING
- āĻŽā§āĻ˛ā§āĻ¯ā§1
āĻ¸ā§āĻā§āĻāĻŋāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤1024
MB - āĻŽā§āĻŽāĻ°āĻŋ āĻ¸ā§āĻŽāĻž, āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§.900
āĻ¸ā§āĻā§āĻ¨ā§āĻĄ (15 āĻŽāĻŋāĻ¨āĻŋāĻ) â āĻ¸āĻŽāĻ¯āĻŧ āĻļā§āĻˇāĨ¤acme-dns-route53
â āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋāĻ° āĻ¨āĻžāĻŽ, āĻ¯āĻž āĻāĻ°ā§āĻāĻžāĻāĻā§ āĻāĻā§āĨ¤fileb://~/acme-dns-route53.zip
â āĻāĻŽāĻ°āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻ°ā§āĻāĻžāĻāĻā§āĻ° āĻĒāĻĨāĨ¤
āĻāĻāĻ¨ āĻŽā§āĻ¤āĻžāĻ¯āĻŧā§āĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ:
$ aws lambda create-function
--function-name acme-dns-route53
--runtime go1.x
--role arn:aws:iam::<AWS_ACCOUNT_ID>:role/lambda-acme-dns-route53-executor
--environment Variables="{AWS_LAMBDA=1,DOMAINS="example1.com,example2.com",[email protected],STAGING=0,NOTIFICATION_TOPIC=acme-dns-route53-obtained}"
--memory-size 1024
--timeout 900
--handler acme-dns-route53
--zip-file fileb://~/acme-dns-route53.zip
{
"FunctionName": "acme-dns-route53",
"LastModified": "2019-05-03T19:07:09.325+0000",
"RevisionId": "e3fadec9-2180-4bff-bb9a-999b1b71a558",
"MemorySize": 1024,
"Environment": {
"Variables": {
"DOMAINS": "example1.com,example2.com",
"STAGING": "1",
"LETSENCRYPT_EMAIL": "[email protected]",
"NOTIFICATION_TOPIC": "acme-dns-route53-obtained",
"AWS_LAMBDA": "1"
}
},
"Version": "$LATEST",
"Role": "arn:aws:iam::<AWS_ACCOUNT_ID>:role/lambda-acme-dns-route53-executor",
"Timeout": 900,
"Runtime": "go1.x",
"TracingConfig": {
"Mode": "PassThrough"
},
"CodeSha256": "+2KgE5mh5LGaOsni36pdmPP9O35wgZ6TbddspyaIXXw=",
"Description": "",
"CodeSize": 8456317,
"FunctionArn": "arn:aws:lambda:us-east-1:<AWS_ACCOUNT_ID>:function:acme-dns-route53",
"Handler": "acme-dns-route53"
}
āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻāĻĄāĻāĻ¯āĻŧāĻžāĻ āĻāĻžāĻāĻŽāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻž āĻĻāĻŋāĻ¨ā§ 2 āĻŦāĻžāĻ° āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°ā§ā§ˇ
āĻļā§āĻˇ āĻ§āĻžāĻĒ āĻšāĻ˛ āĻā§āĻ°āĻ¨ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž, āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĢāĻžāĻāĻļāĻ¨āĻā§ āĻĻāĻŋāĻ¨ā§ āĻĻā§āĻŦāĻžāĻ° āĻāĻ˛ āĻāĻ°ā§:
- āĻŽāĻžāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻāĻŋ CloudWatch āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨
schedule_expression
. - āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° ARN āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ˛āĻā§āĻˇā§āĻ¯ (āĻā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤) āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨āĨ¤
- āĻ˛ā§āĻ¯āĻžāĻŽā§āĻŦāĻĄāĻž āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¨āĨ¤
āĻ¨ā§āĻā§ āĻāĻŽāĻŋ āĻāĻŽāĻžāĻ° Terraform āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻāĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ¸āĻ˛ā§ āĻāĻāĻŋ AWS āĻāĻ¨āĻ¸ā§āĻ˛ āĻŦāĻž AWS CLI āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻŦ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
# Cloudwatch event rule that runs acme-dns-route53 lambda every 12 hours
resource "aws_cloudwatch_event_rule" "acme_dns_route53_sheduler" {
name = "acme-dns-route53-issuer-scheduler"
schedule_expression = "cron(0 */12 * * ? *)"
}
# Specify the lambda function to run
resource "aws_cloudwatch_event_target" "acme_dns_route53_sheduler_target" {
rule = "${aws_cloudwatch_event_rule.acme_dns_route53_sheduler.name}"
arn = "${aws_lambda_function.acme_dns_route53.arn}"
}
# Give CloudWatch permission to invoke the function
resource "aws_lambda_permission" "permission" {
action = "lambda:InvokeFunction"
function_name = "${aws_lambda_function.acme_dns_route53.function_name}"
principal = "events.amazonaws.com"
source_arn = "${aws_cloudwatch_event_rule.acme_dns_route53_sheduler.arn}"
}
āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ SSL āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻā§āĻ¨ā§ˇ
āĻāĻ¤ā§āĻ¸: www.habr.com