2015-09-17 439 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函數將解決該問題。