2017-01-31 272 views
0

我們一直在嘗試解決與S3和Lambda相關的資源權限問題。讓AWS Lambda訪問私有S3資源

我們有inturn有一個root帳戶 - 帳戶A - 鬥所有者 帳戶B - 用於上傳(通過CORS),並提供訪問S3圖像 作用L - 我們必須與分配這個角色的lambda函數全S3訪問

的剷鬥擁有訪問策略如下圖所示 -

{ 
"Version": "2012-10-17", 
"Id": "Policyxxxxxxxxx", 
"Statement": [ 
    { 
     "Sid": "Stmt44444444444", 
     "Effect": "Deny", 
     "NotPrincipal": { 
      "AWS": [ 
       "arn:aws:iam::xxxxxxxxxxxx:user/account-A", 
       "arn:aws:iam::xxxxxxxxxxxx:role/role-L" 
      ] 
     }, 
     "Action": [ 
      "s3:*", 
     ], 
     "Resource": [ 
      "arn:aws:s3:::bucket", 
      "arn:aws:s3:::bucket/*" 
     ] 
    } 
] 

}

問題 - 拉姆達能夠僅當對象ACL設置爲公共/只讀時才能訪問S3資源。但是,當資源設置爲「私人」時,Lambda會失敗。

存儲桶策略僅允許存取存儲桶。有沒有給角色L讀取資源的權限的方法?

回答

2

存儲在Amazon S3存儲桶中的對象默認爲私有。除非您希望覆蓋另一個允許訪問內容的策略,否則不需要使用策略。

我會建議:

  • 刪除您Deny政策
  • 爲您的AWS拉姆達功能的IAM角色和授予權限給該角色中訪問S3桶。

隨意添加一個桶政策酌情對正常使用,但不應該影響是通過角色授予的LAMBDA功能的訪問。