1

我有一个 AWS Lambda(java),我尝试进行测试以检索存储在 Parameter Store 上的密码。这是我的一段代码:

GetParameterRequest parameterRequest = new GetParameterRequest();
        AWSSimpleSystemsManagement client = AWSSimpleSystemsManagementClientBuilder.defaultClient();
        parameterRequest.withName("my-password-key")
                .setWithDecryption(true);
        GetParameterResult parameterResult = client.getParameter(parameterRequest);
        password = parameterResult.getParameter().toString();

与我的 lambda 关联的security group(和)已打开所有入站和出站(任何端口和任何 IP 地址)。NACL

我的 lambda 在私有子网中运行。

当我执行 lambda(由 API Gateway 事件触发)时,出现以下错误:

Unable to execute HTTP request: Connect to ssm.eu-central-1.amazonaws.com:443 [ssm.eu-central-1.amazonaws.com] failed: connect timed out: com.amazonaws.SdkClientException

由于错误是关于超时错误,我认为这不是角色问题。

我不知道在哪里看。任何帮助表示赞赏。

谢谢。

抄送

4

1 回答 1

3

调用 AWS API 时需要访问 Internet。

有两种方法可以让 Lambda 函数访问 Internet:

  • 不要将 Lambda 函数附加到 VPC,或者
  • 将 Lambda 函数附加到私有子网并配置私有子网以通过公有子网中的 NAT 网关(或 NAT 实例)路由 Internet 绑定流量

因此,如果 Lambda 函数不需要访问 VPC 中的任何资源,只需将其从 VPC 中删除即可。如果确实需要访问,则添加一个 NAT 网关

于 2018-05-10T06:56:43.307 回答