如何调试连接问题:从 VPC 中的 Lambda 函数连接到 SSM VPC 终端节点

Joe*_*Joe 4 amazon-web-services aws-vpc

我在 VPC 中有一个 lambda 函数,它应该能够通过 VPC 终端节点连接到 SSM。事实上,我已经在另一个 VPC(默认)中使用了此功能,但无法在我使用 CloudFormation 构建的新 VPC 中使用它。此外,我还可以通过同一 VPC 的 VPC 终端节点连接到 S3:

  • 部署 Lambda 的子网与 SSM VPC 终端节点关联。
  • VPC 终端节点与一个安全组关联,该安全组在端口 443 上接受来自应用程序层安全组(与 lambda 函数关联)的传入请求。
  • Lambda函数的应用层安全组有一个传出规则,允许其向任何地方广播 0.0.0.0/0
  • 子网的 NACL 允许所有传入和传出流量。
  • lambda函数的角色有权对所有资源执行所有SSM操作(只是排除iam权限的临时情况)

  • 我尝试过 console.log 调试,它显示 lambda 函数在尝试从 SSM 获取信息后超时。

  • 我尝试过使用流日志,但看不到任何连接,也看不到任何流入和流出 SSM 的数据。
  • 我比较了 2 个 VPC(其中一个可以工作,一个不能工作),我看不出规则有任何差异。

谁能建议我如何调试这个?

谢谢

Joe*_*Joe 7

终于找到了这个问题,并认为我会发布此问题,以防其他人遇到同样的问题。

VPC 终端节点需要启用私有 dns。

通过控制台手动创建 VPC 终端节点时,Enable Private DNS Name默认情况下会选中该复选框。

但是,当使用 CloudFormation 创建 VPC 终端节点时,PrivateDnsEnabled需要将该属性显式设置为 true。