नामक अमेज़ॅन एस 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" पर इस नीति को मिला:
मेरी 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
पर असाइन करता हूं, तो पेपरक्लिप फ़ाइल को सफलतापूर्वक अपलोड करने में सक्षम है।
कोई विचार यह है कि मैं इसे कैसे हल कर सकता हूं?