DNS-01 เดšเดฒเดžเตเดšเตเด‚ AWS เด‰เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต SSL เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดฎเดพเดจเต‡เดœเตโ€Œเดฎเต†เดจเตเดฑเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚

เดŽเดธเตเดŽเดธเตเดŽเตฝ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดŸเดชเดŸเดฟเด•เตพ เดชเต‹เดธเตเดฑเตเดฑเต เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดจเดฎเตเด•เตเด•เต CA เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต DNS-01 เดตเต†เดฒเตเดฒเตเดตเดฟเดณเดฟ ะธ AWS.

acme-dns-route53 เดˆ เดธเดตเดฟเดถเต‡เดทเดค เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเต. เด‡เดคเต เดจเดฎเตเด•เตเด•เต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ SSL เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเด‚ เด†เดฎเดธเต‹เตบ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดฎเดพเดจเต‡เดœเดฑเดฟเตฝ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เดพเดจเตเด‚ DNS-53 เดšเดฒเดžเตเดšเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป Route01 API เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เด’เดŸเตเดตเดฟเตฝ, SNS-เดฒเต‡เด•เตเด•เต เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เดชเตเดทเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. IN acme-dns-route53 AWS เดฒเดพเด‚เดกเดฏเตเด•เตเด•เตเดณเตเดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฌเดฟเตฝเดฑเตเดฑเต-เด‡เตป เดชเตเดฐเดตเตผเดคเตเดคเดจเดตเตเด‚ เด‰เดฃเตเดŸเต, เด‡เดคเดพเดฃเต เดžเด™เตเด™เตพเด•เตเด•เต เดตเต‡เดฃเตเดŸเดคเต.

เดˆ เดฒเต‡เด–เดจเด‚ 4 เดตเดฟเดญเดพเด—เด™เตเด™เดณเดพเดฏเดฟ เดคเดฟเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • เด’เดฐเต zip เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต;
  • เด’เดฐเต IAM เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต;
  • เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฒเดพเด‚เดก เดซเด‚เด—เตเดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต acme-dns-route53;
  • เด’เดฐเต เดฆเดฟเดตเดธเด‚ 2 เดคเดตเดฃ เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต CloudWatch เดŸเตˆเดฎเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต;

เด•เตเดฑเดฟเดชเตเดชเต: เดจเดฟเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดจเดฟเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดฃเด‚ GoLang 1.9+ ะธ AWS CLI

เด’เดฐเต zip เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

acme-dns-route53 GoLang-เตฝ เดŽเดดเตเดคเดฟเดฏเดคเดพเดฃเต เด•เต‚เดŸเดพเดคเต† 1.9-เตฝ เดคเดพเดดเต†เดฏเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเดฟเดจเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดฌเตˆเดจเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต zip เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต 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. Linux OS-เดจเตเด‚ amd64 เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเดฟเดจเตเด‚ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เด’เดฐเต เดฌเตˆเดจเดฑเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เดจเตเดจเต เด…เดตเตผ Go เด•เด‚เดชเตˆเดฒเดฑเต‹เดŸเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต - เด‡เดคเดพเดฃเต AWS-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต.
เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด’เดฐเต zip เดซเดฏเดฒเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต AWS เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฎเตเด•เตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚ acme-dns-route53.zip เดชเตเดคเตเดคเดพเดฏเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เดฌเตˆเดจเดฑเดฟ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด†เตผเด•เตเด•เตˆเดตเต:

$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53

เด•เตเดฑเดฟเดชเตเดชเต: เดธเดฟเดชเตเดชเต เด†เตผเด•เตเด•เตˆเดตเดฟเดจเตเดฑเต† เดฑเต‚เดŸเตเดŸเดฟเตฝ เดฌเตˆเดจเดฑเดฟ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เด‡เดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต -j เดชเดคเดพเด•.

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เดณเตเดŸเต† zip เดตเดฟเดณเดฟเดชเตเดชเต‡เดฐเต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเต เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เด†เดตเดถเตเดฏเดฎเดพเดฏ เด…เดตเด•เดพเดถเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เด’เดฐเต IAM เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดคเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃ เดตเต‡เดณเดฏเดฟเตฝ เดžเด™เตเด™เดณเตเดŸเต† เดฒเดพเด‚เดกเดฏเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ เด…เดตเด•เดพเดถเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต IAM เดฑเต‹เตพ เดžเด™เตเด™เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
เดˆ เดจเดฏเดคเตเดคเต† เดจเดฎเตเด•เตเด•เต เดตเดฟเดณเดฟเด•เตเด•เดพเด‚ lambda-acme-dns-route53-executor เด‰เดŸเดจเต† เด…เดตเตพเด•เตเด•เต เด’เดฐเต เด…เดŸเดฟเดธเตเดฅเดพเดจ เดตเต‡เดทเด‚ เดจเตฝเด•เตเด• AWSLambdaBasicExecutionRole. เด‡เดคเต เดžเด™เตเด™เดณเตเดŸเต† เดฒเดพเด‚เดกเดฏเต† AWS CloudWatch เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เดฒเต‹เด—เตเด•เตพ เดŽเดดเตเดคเดพเดจเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.
เด†เดฆเตเดฏเด‚, เดžเด™เตเด™เดณเตเดŸเต† เด…เดตเด•เดพเดถเด™เตเด™เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต 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 (เด†เดฎเดธเต‹เตบ เดฑเดฟเดธเต‹เดดเตเดธเต เดจเดพเดฎเด‚) - เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดชเด™เตเด•เต 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 เดฒเดพเด‚เดกเดฏเตเด•เตเด•เตเดณเตเดณเดฟเดฒเดพเดฃเต เดตเดงเดถเดฟเด•เตเดท เดจเดŸเด•เตเด•เตเดจเตเดจเดคเต.
  • 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 เดŸเตˆเดฎเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เด•เตเดฐเต‹เตบ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด…เดตเดธเดพเดจ เด˜เดŸเตเดŸเด‚, เด…เดคเต เดฆเดฟเดตเดธเดคเตเดคเดฟเตฝ เดฐเดฃเตเดŸเตเดคเดตเดฃ เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเต† เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดฎเต‚เดฒเตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต CloudWatch เดจเดฟเดฏเดฎเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• schedule_expression.
  • เดฒเดพเด‚เดก เดซเด‚เด—เตโ€Œเดทเดจเตเดฑเต† ARN เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเด•เตเด•เตŠเดฃเตเดŸเต เด’เดฐเต เดฑเต‚เตพ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด• (เดŽเดจเตเดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฃเด‚).
  • เดฒเดพเด‚เดก เดซเด‚เด—เตโ€Œเดทเตป เดตเดฟเดณเดฟเด•เตเด•เดพเตป เดจเดฟเดฏเดฎเดคเตเดคเดฟเดจเต เด…เดจเตเดฎเดคเดฟ เดจเตฝเด•เตเด•.

เดšเตเดตเดŸเต† เดžเดพเตป เดŽเดจเตเดฑเต† เดŸเต†เดฑเดพเดซเต‹เด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด…เดฑเตเดฑเดพเดšเตเดšเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด‡เดคเต เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•