1

我正在尝试使用 KMS 解密存储在 S3 存储桶中的文件。在 EC2 实例中,我可以从 S3 检索此文件,但是当我尝试使用 KMS 对其进行解密时,我收到以下错误:

HTTPSConnectionPool(host='kms.us-east-1.amazonaws.com', port=443): 最大重试次数超出 url: / (由 ConnectTimeoutError(, 'Connection to kms.us-east-1.amazonaws.com超时。(连接超时=60)'))

但是,我能够从我的本地计算机成功解密此文件。有谁知道为什么会这样?

如果需要其他信息,我很乐意提供:)

4

2 回答 2

0

当您为 Lambda 启用 VPC 时,AWS 会向您显示以下消息 -

当您启用 VPC 时,您的 Lambda 函数将失去默认的 Internet 访问权限。如果您的函数需要外部 Internet 访问,请确保您的安全组允许出站连接并且您的 VPC 具有 NAT 网关。

因此,请确保您的 lambda 可以通过正确的安全组和 NAT 网关访问互联网。

另请注意,为您的子网设置 IG 是不够的。您需要有一个 NAT 实例或网关以及从您的子网到该网关的路由表中的路由,以便 lambda 具有与自定义 VPC 关联的 Internet 访问权限。

AWS Lambda 使用您提供的 VPC 信息来设置 ENI,以允许您的 Lambda 函数访问 VPC 资源。每个 ENI 都从您指定的子网的 IP 地址范围内分配了一个私有 IP 地址,但没有分配任何公共 IP 地址。因此,如果您的 Lambda 函数需要 Internet 访问(例如,访问没有 VPC 终端节点的 AWS 服务,例如 Kinesis),您可以在您的 VPC 内配置一个 NAT 实例,或者您可以使用 Amazon VPC NAT 网关。您不能使用连接到您的 VPC 的 Internet 网关,因为这要求 ENI 具有公共 IP 地址。

重要

如果您的 Lambda 函数需要 Internet 访问,请勿将其附加到公有子网或无法访问 Internet 的私有子网。相反,仅将其附加到通过 NAT 实例或 Amazon VPC NAT 网关访问 Internet 的私有子网。

来源:http ://docs.aws.amazon.com/lambda/latest/dg/vpc.html

于 2017-11-06T06:42:22.117 回答
0

一种情况是您使用 VPC 终端节点连接到 s3 存储桶并且没有互联网连接。

如果是这种情况,那么您必须通过 NAT 或将您的实例放在公共子网中启用 Internet 连接。

于 2017-11-06T17:36:21.957 回答