VPC 中的 AWS Lambda 函数不适用于 S3 端点

AWS Lambda Function in VPC Not Working With S3 Endpoint

我有一个驻留在 VPC 中的 Lambda 函数(以便与 RDS 通信)。我还需要它来执行 s3.putObject。它只是在我调用该函数时挂起。我意识到这是因为它在 VPC 中。

所以我在我的 VPC 下创建了一个 Endpoint。它具有以下访问策略:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "Access-to-foo-bucket-only",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::static.foo.com",
                "arn:aws:s3:::static.foo.com/*"
            ]
        }
    ]
}

此端点与包含我的两个子网的路由 table 关联。我在我的子网路由 Table 面板中看到了我的端点。我还在 Route Table 的 Routes 面板中看到了 S3 前缀值。安全组具有指向端点 S3 前缀的出站规则。

然而,还是不行。我的函数仍然挂在 s3.putObject()。当我转到 Lambda 的网络面板时,我没有在出站规则列表中看到终端节点。它不应该在那里吗?

可能还需要做什么?我发现 AWS 文档的一些页面提到了 S3 端点,但没有让 Lambda 使用它的分步指南。

感谢您提供的任何帮助。

我在@James Dean 的评论的帮助下弄明白了。

我的 VPC 和 S3 存储桶位于不同的区域,无法正常工作。我在与 VPC 相同的区域中创建了一个新存储桶,但在我删除旧端点并创建一个新端点之前它仍然无法正常工作。现在可以使用了!