2016-02-10 10 views
5

नामक अमेज़ॅन एस 3 बाल्टी को एक्सेस करने के लिए उपयोगकर्ता को my-user उपयोगकर्ता को अनुमति देने के लिए मेरी आईएएम नीति कैसी दिखनी चाहिए?रेल और पेपरक्लिप का उपयोग कर एस 3 के लिए सरल अमेज़ॅन आईएएम नीति

वर्तमान में, मैं निम्नलिखित नीति my-user करने के लिए आवंटित किया है:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": ["s3:ListBucket"], 
     "Resource": ["arn:aws:s3:::my-bucket"] 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:PutObject", 
     "s3:GetObject", 
     "s3:DeleteObject" 
     ], 
     "Resource": ["arn:aws:s3:::my-bucket/*"] 
    } 
    ] 
} 

मैं नीचे दिए गए लिंक पर "नमूना 1" पर इस नीति को मिला:

http://blogs.aws.amazon.com/security/post/Tx3VRSWZ6B3SHAV/Writing-IAM-Policies-How-to-grant-access-to-an-Amazon-S3-bucket

मेरी production.rb फ़ाइल में, मैंने एस 3:

config.paperclip_defaults = { 
    :storage => :s3, 
    :s3_credentials => { 
    :bucket => 'my-bucket', 
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'], 
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] 
    } 
} 
का उपयोग करने के लिए पेपरक्लिप को बताने के लिए कॉन्फ़िगरेशन सेटिंग्स लागू की हैं

जब मैं एक फोटो अपलोड करने के लिए अपने ऐप का उपयोग करने का प्रयास करता हूं, तो मुझे AWS::S3::Errors::AccessDenied अपवाद मिलता है।

अजीब तरह, अगर मैं रेल कंसोल को लोड, और मैन्युअल रूप से एक फ़ाइल अपलोड करने के लिए निम्न कोड चलाते हैं, तो इसे सही ढंग से काम करता है:

s3 = AWS::S3.new(access_key_id: ENV['AWS_ACCESS_KEY_ID'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']) 
bucket = s3.buckets['my-bucket'] 
obj = bucket.objects['new_file'] 
obj.write(Pathname.new('/path/to/file')) 

यह सही ढंग से मेरी S3 बाल्टी के लिए फ़ाइल अपलोड करता है। मैं उलझन में हूं कि मुझे स्पष्ट रूप से फ़ाइल को अपलोड करने की अनुमति क्यों है, लेकिन जब मैं पेपरक्लिप के माध्यम से उसी प्रमाण-पत्र के साथ ऐसा करने का प्रयास करता हूं, तो मुझे अनुमति त्रुटि से वंचित कर देती है।

और भी भ्रमित, जब मैं AdministratorAccess नीति my-user पर असाइन करता हूं, तो पेपरक्लिप फ़ाइल को सफलतापूर्वक अपलोड करने में सक्षम है।

कोई विचार यह है कि मैं इसे कैसे हल कर सकता हूं?

उत्तर

8

समाधान यहाँ है: https://stackoverflow.com/a/19185045/736864

पेपरक्लिप S3 के लिए फ़ाइल अपलोड करता है, यह भी सार्वजनिक रूप से देखा, जिसका अर्थ है उपयोगकर्ता अनुमति सेट तक पहुंच प्रदान की जाने की आवश्यकता होने के लिए फ़ाइल स्थापित करने के लिए कोशिश करता है। s3:PutObjectAcl मेरी आईएएम नीति को अनुमति देने से समस्या को हल किया गया।

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