DNS-01 рдЪреБрдиреМрддреА рдФрд░ AWS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЪрд▓реЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдХреЗ SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдирд╡реАрдиреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрджрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЪрд▓реЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ , рдЬреЛ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
acme-dns-route53 AWS рджреНрд╡рд╛рд░рд╛ рд░реВрдЯ 53 рдФрд░ Amazon рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде DNS-01 рдЪреБрдиреМрддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП SSL рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реИред acme-dns-route53 рдореЗрдВ AWS рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднреА рд╣реИ, рдФрд░ рдпрд╣реА рд╣рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред


рдпрд╣ рдкреЛрд╕реНрдЯ 4 рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ:


  • рдПрдХ рд╕реНрд╡-рдирд┐рд╣рд┐рдд, рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдЬрд┐рдк-рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
  • рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП IAM рднреВрдорд┐рдХрд╛ рдмрдирд╛рдирд╛ рдЬреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  • рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдирд╛ рдЬреЛ acme-dns-route53 рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ
  • рдПрдХ CloudWatch рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рдЬреЛ рдПрдХ рджрд┐рди рдореЗрдВ рджреЛ рдмрд╛рд░ рдПрдХ рд▓рдВрдмреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ

рдиреЛрдЯ: рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ GoLang 1.9+ рдФрд░ AWS CLI рдкрд╣рд▓реЗ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИред


рдПрдХ рдЖрддреНрдо-рдирд┐рд╣рд┐рдд, рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдЬрд┐рдк-рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛


acme-dns-route53 рдХреЛ acme-dns-route53 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╡рд░реНрдЬрди 1.9 рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдПрдХ рд╕реНрд╡-рдирд┐рд╣рд┐рдд, рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдЬрд┐рдк-рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрджрд░ acme-dns-route53 рдЯреВрд▓ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛред


рдкрд╣рд▓рд╛ рдХрджрдо рдпрд╣ рд╣реИ рдХрд┐ acme-dns-route53 рдЯреВрд▓ рдХреЗ рд░рд┐рдореЛрдЯ acme-dns-route53 рд░реЗрдкреЛ рд╕реЗ рдПрдХ рдПрдХреНрдЬреАрдХреНрдпреВрдЯреЗрдмрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рдПред


 $ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53 

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп $GOPATH/bin рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдХрдорд╛рдВрдб ( GOOS=linux рдФрд░ GOARCH=amd64 ) рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рджреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП env рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпреЗ рдЧреЛ рд╕рдВрдХрд▓рдХ рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ Linux OS рдФрд░ amd64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЙрдкрдпреБрдХреНрдд рдмрдирд╛рдпреЗ - рдЬреЛ рдХрд┐ рдЬрдм рд╣рдо рдЗрд╕реЗ AWS рдкрд░ рддреИрдирд╛рдд рдХрд░реЗрдВрдЧреЗ, рддрдм рдпрд╣ рдЪрд╛рд▓реВ рд░рд╣реЗрдЧрд╛ред
AWS рдХреЛ рд╣рдореЗрдВ рдПрдХ рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреЗ рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдЗрдП рд╣рдо рдПрдХ acme-dns-route53.zip рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИрдВ:


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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрдбрд╝ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреАрддрд░ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд╣реАрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВрдиреЗ рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ -j рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрдВрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХреЗ рдКрдкрд░ рдХрд┐рдпрд╛ рд╣реИред


рдЕрдм рдЬрд┐рдк-рдлрд╛рдЗрд▓ рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ IAM рднреВрдорд┐рдХрд╛ рдмрдирд╛рдирд╛ рдЬреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ


рд╣рдореЗрдВ рдПрдХ IAM рднреВрдорд┐рдХрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЕрдиреБрдорддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЬрдм рдпрд╣ рдЪрд▓ рд░рд╣реА рд╣реЛрддреА рд╣реИ рддреЛ рд╣рдорд╛рд░рд╛ рд▓рдВрдмреЛрджрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛ред
рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ рдПрдХ lambda-acme-dns-route53-executor рднреВрдорд┐рдХрд╛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП AWSLambdaBasicExecutionRole рдкреНрд░рдмрдВрдзрд┐рдд рдиреАрддрд┐ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рдВрдмреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреНрд▓рд╛рдЙрдбрд╡реЙрдЪ рд╕реЗрд╡рд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореВрд▓рднреВрдд рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдЯреНрд░рд╕реНрдЯ рдкреЙрд▓рд┐рд╕реА JSON рдлрд╛рдЗрд▓ рдмрдирд╛рдиреА рд╣реЛрдЧреАред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреЛ lambda-acme-dns-route53-executor рднреВрдорд┐рдХрд╛ рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрдЧрд╛:


 $ touch ~/lambda-acme-dns-route53-executor-policy.json 

рдирд┐рд░реНрдорд┐рдд 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:<AWS_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 рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреИрд╕реЗ AWSLambdaBasicExecutionRole рдЕрдиреБрдорддрд┐ рдиреАрддрд┐ рдХреЗ ARN рдореЗрдВ AWSLambdaBasicExecutionRole :


 $ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole 

рдиреЛрдЯ: рдЖрдк рдЕрдиреНрдп рдЕрдиреБрдорддрд┐ рдиреАрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ред


рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдирд╛ рдЬреЛ рдПрдХреНрдореЗ-рдбреАрдПрдирдПрд╕-рдорд╛рд░реНрдЧ 53 рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ


рдЕрдм рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ AWS рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо aws lambda create-function рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


  • рдорд╛рди 1 рд╕рд╛рде AWS_LAMBDA рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЬреЛ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред
  • DOMAINS рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ DOMAINS рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХреА рдЧрдИ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
  • LETSENCRYPT_EMAIL рд╡рд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓реЗрдЯ рдПрдирдХреНрд░рд┐рдкреНрдЯ LETSENCRYPT_EMAIL рдИрдореЗрд▓ рд╣реЛрддрд╛ рд╣реИред
  • NOTIFICATION_TOPIC рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ SNS рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рд╖рдп ARN рд╢рд╛рдорд┐рд▓ рд╣реИред
  • STAGING рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ STAGING рд╡рд╛рддрд╛рд╡рд░рдг рдпрд╛ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП 0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1 рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • RENEW_BEFORE , рд╕рдорд╛рдкреНрддрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд┐рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рднреАрддрд░ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдирд╡реАрдиреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • 1024 рдПрдордмреА рдореЗрдореЛрд░реА рд╕реАрдорд╛ рд╣реИ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
  • 900 рд╕реЗрдХрдВрдб (15 рдорд┐рдирдЯ) рдЕрдзрд┐рдХрддрдо рд╕рдордпрдмрд╛рд╣реНрдп рд╣реИред
  • acme-dns-route53 рдХрд╛ рд╣реИрдВрдбрд▓рд░ рдирд╛рдо рд╣реИред
  • fileb://~/acme-dns-route53.zip рдЙрдкрд░реЛрдХреНрдд .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\",LETSENCRYPT_EMAIL=begmaroman@gmail.com,STAGING=0,NOTIFICATION_TOPIC=acme-dns-route53-obtained,RENEW_BEFORE=7}" \ --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": "your@email.com", "NOTIFICATION_TOPIC": "acme-dns-route53-obtained", "RENEW_BEFORE": "7", "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" } 

CloudWatch рдЯрд╛рдЗрдорд░ рдмрдирд╛рдирд╛ рдЬреЛ рдПрдХ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рд▓реИрдореНрдмрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ


рдЕрдВрддрд┐рдо рдЪрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджреИрдирд┐рдХ рдЯреНрд░рд┐рдЧрд░ рдмрдирд╛рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдЗрдЪреНрдЫрд┐рдд рд╢рд┐рдбреНрдпреВрд▓_рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (рдЬрдм рдЗрд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЙрдбрд╡рд╛рдЪ рдирд┐рдпрдо рдмрдирд╛рдПрдВред
  • рд▓реИрдореНрдмрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдЖрд░рдПрди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдирд┐рдпрдо рд▓рдХреНрд╖реНрдп рдмрдирд╛рдПрдВ (рдЬреЛ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
  • CloudWatch рдирд┐рдпрдо рдХреЛ рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдиреАрдЪреЗ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХрдВрд╕реЛрд▓ рдпрд╛ рд╕реАрдПрд▓рдЖрдИ рд╕реЗ рднреА рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред


 # 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}" } 

рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рднреА 100% рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЯреАрдПрд▓рдПрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╡реАрдиреАрдХрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ!

Source: https://habr.com/ru/post/hi451200/


All Articles