如何调试连接问题:从 VPC 中的 Lambda 函数连接到 SSM VPC 端点
How to debug connection issue: Connecting to SSM VPC Endpoint from Lambda Function in VPC
我在 VPC 中有一个 lambda 函数,它应该能够通过 VPC 端点连接到 SSM。事实上,我已经在另一个 VPC(默认)中使用它,但无法在我使用 CloudFormation 构建的新 VPC 中使用它。此外,我能够通过同一 VPC 的 VPC 端点连接到 S3:
- 部署 Lambda 的子网与 SSM VPC 端点关联。
- VPC 端点与一个安全组相关联,该安全组接受来自应用程序层安全组(与 lambda 函数相关联)的端口 443 上的传入请求。
- Lambda 函数的应用层安全组有一个传出规则,允许它向任何地方广播 0.0.0.0/0
- 子网的 NACL 允许所有传入和传出流量。
lambda函数的角色有权在所有资源上执行所有SSM操作(只是暂时排除iam权限的情况)
我试过 console.log 调试,它显示 lambda 函数在尝试从 SSM 获取信息后超时。
- 我已尝试使用流日志,但我看不到任何连接,也看不到任何流入和流出 SSM 的数据。
- 我已经比较了 2 个 VPC(一个在其中工作,一个在其中不工作),我看不出规则有任何差异。
任何人都可以建议我如何调试它吗?
谢谢
终于找到了问题,我想 post 以防其他人遇到同样的问题。
VPC 端点需要启用私有 DNS。
通过控制台手动创建 VPC 端点时,默认选中 Enable Private DNS Name
复选框。
但是,当使用 CloudFormation 创建 VPC 端点时,PrivateDnsEnabled
属性 需要明确设置为 true。
我在 VPC 中有一个 lambda 函数,它应该能够通过 VPC 端点连接到 SSM。事实上,我已经在另一个 VPC(默认)中使用它,但无法在我使用 CloudFormation 构建的新 VPC 中使用它。此外,我能够通过同一 VPC 的 VPC 端点连接到 S3:
- 部署 Lambda 的子网与 SSM VPC 端点关联。
- VPC 端点与一个安全组相关联,该安全组接受来自应用程序层安全组(与 lambda 函数相关联)的端口 443 上的传入请求。
- Lambda 函数的应用层安全组有一个传出规则,允许它向任何地方广播 0.0.0.0/0
- 子网的 NACL 允许所有传入和传出流量。
lambda函数的角色有权在所有资源上执行所有SSM操作(只是暂时排除iam权限的情况)
我试过 console.log 调试,它显示 lambda 函数在尝试从 SSM 获取信息后超时。
- 我已尝试使用流日志,但我看不到任何连接,也看不到任何流入和流出 SSM 的数据。
- 我已经比较了 2 个 VPC(一个在其中工作,一个在其中不工作),我看不出规则有任何差异。
任何人都可以建议我如何调试它吗?
谢谢
终于找到了问题,我想 post 以防其他人遇到同样的问题。
VPC 端点需要启用私有 DNS。
通过控制台手动创建 VPC 端点时,默认选中 Enable Private DNS Name
复选框。
但是,当使用 CloudFormation 创建 VPC 端点时,PrivateDnsEnabled
属性 需要明确设置为 true。