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

时间:2019-06-06 01:42:02

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

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

因此,我在VPC下创建了一个端点。它具有以下访问策略:

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

因此,我在VPC下创建了一个端点。它具有以下访问策略:

{
    "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/*"
            ]
        }
    ]
}

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

但是,它仍然不起作用。我的函数仍然挂在s3.putObject()上。当我转到Lambda的“网络”面板时,在“出站规则”列表中看不到端点。不应该在那里吗?

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

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

我在@James Dean的评论的帮助下弄清楚了。

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