我有一个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使用它。
感谢您提供的任何帮助。
答案 0 :(得分:0)
我在@James Dean的评论的帮助下弄清楚了。
我的VPC和S3存储桶位于不同的区域,无法正常工作。我在与VPC相同的区域中创建了一个新存储桶,但是直到删除旧的Endpoint并创建了一个新存储桶后,该存储桶仍然无法工作。现在可以使用!