SSM参数存储为来自EC2实例的任何操作提供超时



我在cloudformation中创建了一个具有以下权限的EC2角色:

Policies:
- PolicyName: ec2-test-poilcy
PolicyDocument: |
{   "Version": "2012-10-17",
"Statement": [
{
"Action": [
"ssm:DescribeParameters"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Effect": "Allow",
"Action": [
"ssm:PutParameter",
"ssm:DeleteParameter",
"ssm:GetParameterHistory",
"ssm:GetParametersByPath",
"ssm:GetParameters",
"ssm:GetParameter",
"ssm:DeleteParameters"
],
"Resource": "arn:aws:ssm:REGION:ACCOUNT-ID:parameter/*"
}
]
}

并将上述角色附加到我的EC2实例,但我无法执行任何SSM参数存储操作,我只是没有得到响应,几分钟后,我超时了。

例如:

aws ssm get-parameter --name test --region us-east-2
Connect timeout on endpoint URL: "https://ssm.us-east-2.amazonaws.com/"

在尝试了各种方法之后,我也附加了AdministratorAccess策略,但它仍然没有响应任何ssm操作。

更新

花了几个小时后,我意识到超时错误只会发生适用于地区:us-east-2

aws ssm get-parameter --name testing --region us-east-1

通过使用其他区域成功运行了上述命令。

当我发现问题时,为了结束我的问题,我自己回答了这个问题,并希望它能帮助其他人调试。

我使用以下命令获取DNS信息:

dig ssm.us-east-2.amazonaws.com

我得到了一个响应,在其中我能够观察到DNS指向私有IP:

;; ANSWER SECTION:
ssm.us-east-2.amazonaws.com. 60 IN  A   xx.xx.xx.xx7 (private ip)

但正确的DNS解析应该是这样的:

;; ANSWER SECTION:
ssm.us-east-2.amazonaws.com. 60 IN  A   52.95.21.xxx

在花了几个小时弄清楚原因后,我发现这是由于对ssm服务使用了不必要的vpc端点,所以我删除了它,现在我可以为us-east-2区域的ssm操作获得正确的响应。

将HTTPS(443(入站规则添加到与VPC Endpoint关联的安全组,允许HTTPS(443。

我们最多可以将5个安全组关联到VPC端点。如果您从任何EC2实例运行命令,则与该实例关联的安全组应与与VPC端点关联的任何安全组相同,或者VPC端点相关的安全组应该允许HTTPS(443(入站规则到您的实例安全组。

相关内容

  • 没有找到相关文章

最新更新