SSL証明書を無償で取得できるサービスである、Let’s Encryptでは、そのドメインを申請者が本当に所有しているかを確認するため、DNSサーバのレコード設定を使うことができます。
これはDNSサーバに、Let’s Encrypt側から提供された文字列をTXTレコードに設定することで実現するのですが、その辺りの処理を含む、SSL証明書申請から取得に至るまでの処理をうまいことやってくれるのが、legoです。
証明書を取得したいaws上のEC2インスタンスにlegoをインストールし、Route53との組み合わせで一連の処理をするには、EC2インスタンスに対し、Route53の閲覧・編集権限を一部付与する必要があります。
どうやら、この、必要な権限の種別が、legoのバージョンによって異なるようです。
ここでは、v3.3.0で動作確認できた権限の一覧(IAMポリシーのJSON表記)を、以下に記します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "route53:ListTagsForResources", "route53:GetHostedZone", "route53:ChangeResourceRecordSets", "route53:ListResourceRecordSets", "route53:ListTagsForResource" ], "Resource": "arn:aws:route53:::hostedzone/[HOSTZONE_ID]" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "route53:GetChange", "route53:ListHostedZones", "route53:ListHostedZonesByName" ], "Resource": "*" } ] }