AWS Lambda 未通过 VPC 终端节点访问 SSM 服务

时间:2021-06-07 17:20:41

标签: amazon-web-services amazon-ec2 aws-lambda amazon-vpc

我使用以下链接配置了我的环境:https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html

我有我的 VPC,带有一个 lambda 子网。安全组和 NACL 都是开放的。 我配置了链接服务显示的所有 VPC 端点:ssm、ec2messages、ec2、s3,甚至尝试了 ssmmessages 和 kms。

但是当行代码说

 ssm.getParameter()...

进程超时 30 秒没有响应。我连接了一个 Nat 网关并且它可以工作,但我不想使用 NAT 网关。

在链接中,并没有说我需要使用私有 DNS 配置 SSM 端点。我不想这样,因为我的 VPC 有其他项目。我测试了打开私有 DNS,我的 lambda 也能正常工作。

为什么 Endpoint 在私有 DNS 关闭的情况下不起作用?

此链接https://purple.telstra.com.au/blog/ssm-endpoints-a-how-to

说如果我想关闭私有 DNS,我需要 SSM 代理,但这是针对 EC2 实例的。我可以用 Lambda 做什么?

1 个答案:

答案 0 :(得分:1)

@jarmod 的解决方案奏效了。

 const vpcEndpointHostname = 'vpce-11a2ef262s52afaba1-jeaar2sa.ssm.us-east-1.vpce.amazonaws.com';
 const endpoint = new aws.Endpoint(vpcEndpointHostname);
 const ssm = new aws.SSM({endpoint: ep});                
    
 const { Parameter } = await ssm.getParameter({
        Name: parameterName, WithDecryption: true
    }).promise();