这似乎不是一个新问题,但在阅读了许多 Medium 文章、Certbot 文档和这里的一些资源后,我仍然陷入困境。
政策:
{
"Version": "2012-10-17",
"Id": "certbot-dns-route53",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
"route53:GetChange"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"route53:ChangeResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/<MY ZONE ID>"
]
}
]
}
这是附加了一个 IAM 用户
certbot
。最近我在某个地方读到,还需要角色......以及 CLI 访问密钥。因为我不记得关键用例,所以我给了以前的密钥集,所以我创建了一个新的 CLI 集。我开始创建角色...并选择 AWS 账户作为可信实体...并注意到我的号码与错误中的号码不同。我为另一个帐户创建了一个新角色,并在错误中使用了该神秘号码。在这两种情况下,我都将我的 certbot
策略附加到角色。
命令:
sudo certbot certonly --dns-route53 -d mydomain.here -d *.mydomain.here
输出:
An error occurred (AccessDenied) when calling the ListHostedZones operation: User: arn:aw
s:sts::202977929711:assumed-role/AmazonLightsailInstanceRole/i-088261ad1557b1d5d is not a
uthorized to perform: route53:ListHostedZones because no identity-based policy allows the
route53:ListHostedZones action
To use certbot-dns-route53, configure credentials as described at https://boto3.readthedo
cs.io/en/latest/guide/configuration.html#best-practices-for-configuring-credentials and a
dd the necessary permissions for Route53 access.
密钥的公共和私有部分位于我的 .bashrc 中并导出。如果我更改密钥,我会收到不同的错误,因此我认为该部分工作正常。我迷路了。基本上错误(除了当我改变按键时)保持不变。
我找到的答案来自这里的 stackoverflow 问题:Certbot 无法找到环境变量凭证。我们的错误对我来说似乎非常不同,但该人问题中对
sudo
的解释引起了我的注意。
简而言之,使用
sudo
会使 .bashrc
文件中的值导出无效。因此,我将值放入 ~/.aws/config
中,并创建了从 /root
到我的主目录的符号链接。
sudo ln -s ~/.aws/ /root/.aws