2015-09-17 388 views
3

我想连接我的AWS S3和我的AWS Lambda。我创建了我的S3存储桶并将其命名为xyz。在创建我的AWS lambda表达式事件源,它显示尽管经历这个link以下错误无法连接AWS S3和AWS Lambda

There was an error creating the event source mapping: Your bucket must be in the same region as the function. 

,我发现我需要设置为S3存储为AWS LAMBDA功能的事件通知。但是我无法为s3存储桶设置事件通知,因为它不会在s3存储桶属性的“事件”选项卡中显示AWS lambda功能的设置。

对我的拉姆达创建的IAM角色我的政策文件是如下

{ 
"Version": "VersionNumber", 
"Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": [ 
      "logs:CreateLogGroup", 
      "logs:CreateLogStream", 
      "logs:PutLogEvents" 
     ], 
     "Resource": "arn:aws:logs:*:*:*" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
      "s3:GetObject", 
      "s3:PutObject" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::xyz/*" 
     ] 
    } 
    ] 
} 

有人可以让我知道为什么我不能对S3存储的操作创建AWS拉姆达的事件?

+0

错误消息的后续处理:*您的存储桶必须位于与该功能相同的区域中*您是否将该功能部署在与该存储桶相同的AWS区域中,或删除存储桶并在同一个AWS区域中重新创建作为Lambda函数? (请注意,删除存储桶后,所有其他S3区域可能需要一个小时才能实现名称可用。存储桶命名空间本身是全局的,但S3是区域性服务。) –

+0

如何知道区域GUI上的AWS s3和AWS lambda? – shubhamagiwal92

+2

要查看Amazon S3存储桶的区域,请单击管理控制台中的存储桶,然后转到“属性”选项卡。该地区将显示。要确定Lambda函数的区域,请转至Lambda控制台。只显示当前区域的Lambda功能(基于屏幕右上角的区域下拉菜单)。 –

回答

4

感谢John的评论,我能够解决这个问题。

当(由错误消息明确指出)Lambda和S3存储桶位于不同区域时会发生此问题。

要在与s3存储区相同的区域创建lambda,您需要知道存储区的区域。

要查看Amazon S3存储桶的区域,请单击管理控制台中的存储桶,然后转到属性选项卡。该地区将显示

现在你知道你的目标区域。您可以在aws控制台中通过从Support菜单之前的右上角的下拉选择菜单中选择一个区域来切换到该区域。

将区域更改为s3存储区域后,创建新的lambda函数将解决该问题。