2015-02-09 28 views
5

मैं एक एडब्ल्यूएस लैम्ब्डा फ़ंक्शन बनाने की कोशिश कर रहा हूं, जो पहली बाल्टी पर अपलोड की गई फ़ाइल को संसाधित करता है, फिर उसे दूसरी बाल्टी में सहेजता है और फिर इनपुट फ़ाइल को हटा देता है।एडब्ल्यूएस लैम्ब्डा अमेज़ॅन एस 3 ऑब्जेक्ट को हटा नहीं सकता

समस्या यह है कि जब मैं फ़ाइल को नष्ट करने के लिए कोशिश कर रहा हूँ मैं

{ 
    "message": "Access Denied", 
    "code": "AccessDenied", 
    "time": "2015-02-09T22:08:45.926Z", 
    "statusCode": 403, 
    "retryable": false, 
    "retryDelay": 30 
} 

कोड स्निपेट है, जो नष्ट करने के लिए फ़ाइल

s3.deleteObject({ 
    Bucket: inputBucket, 
    Key: inputKey 
}, function(a, b) { 
    if (a) { 
     console.error("Error on delete"); 
     console.error(a); 
    } else { 
     console.log("Deleted successfully"); 
    } 
}); 

उत्तर

7

संभावित कारण है की कोशिश करता है हो रही है है क्यों लैम्ब्डा फ़ाइल को हटाने में सक्षम नहीं था (एस 3 ऑब्जेक्ट) लैम्ब्डा की निष्पादन भूमिका के कारण हो सकता है।

कदम एडब्ल्यूएस प्रबंधन कंसोल में इस

  1. नेविगेट IAM को हल करने के लिए
  2. IAM लैम्ब्डा के लिए इस्तेमाल किया (या बनाया) भूमिका के लिए साइन देखो (अगर यह लागू हो यह lambda_exec_role होगा)
  3. जाओ संलग्न करने के लिए भूमिका नीति -> कस्टम नीति और IAM नीति नीचे जोड़ने दस्तावेज़

{ 
    "Statement": [ 
    { 
     "Sid": "Stmt1423535846414", 
     "Action": [ 
     "s3:DeleteObject" 
     ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::*" 
    } 
    ] 
} 
+2

या अधिमानतः "संसाधन": "arn: aws: s3 ::: firstbucket/*" – jarmod

+0

सिद क्या है? यह मुझे कहाँ मिल सकता है? प्रत्येक आईएएम कथन को वर्गीकृत/पहचानने के लिए –

+0

स्टेटमेंट आईडी। एक दोस्ताना नाम की तरह "for-s3-access-for-app1" –

0

मुझे इनपुट के भीतर अजीब पात्रों और रिक्त स्थानों में परेशानी थी। एक साधारण नाम के साथ प्रयास करें।

संबंधित मुद्दे