0

我在 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

上面的命令通过使用不同的区域成功运行。

4

1 回答 1

0

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

我使用以下命令获取 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 操作获得正确的响应.

于 2021-06-11T10:05:51.433 回答