因此,我正在使用 ec2.py 脚本(由 Ansible 提供)用于生成动态清单。我创建了以下 IAM 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:Region": "ca-central-1"
}
}
}
]
}
因为我希望 Ansible 控制器仅从来自 ca-central-1(即加拿大)的 EC2 实例中获取数据。我不希望它与其他区域混淆,因为它们是生产/暂存环境,我不想弄乱那里的情况。问题是我得到了
错误:“连接到 AWS 后端时出错。
您无权执行此操作。”,同时:获取 EC2 实例
如果我使用这个策略它就会起作用:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*"
}
]
}
但该策略授予了所有权限,即使在生产环境中也是如此。即使使用角色,我也觉得这有点过头了。难道我没有考虑什么吗?
答案1
嗯,看起来问题在于 ini 文件设置为查询所有区域,所以我只需要将 ini 文件修改为:
regions = ca-central-1
并评论
#regions_exclude = us-gov-west-1, cn-north-1