2015-01-23 20 views
5

पर jgit तक पहुंचने के लिए मैं आईएएम अनुमतियां बनाने की कोशिश कर रहा हूं ताकि jgit मेरी बाल्टी में से किसी एक निर्देशिका में पहुंच सके।आईएएम कॉन्फ़िगरेशन एस 3

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

दुर्भाग्य से यह एक त्रुटि फेंकता है। मुझे यकीन नहीं है कि काम करने के लिए अन्य अनुमति कार्यों को क्या करने की आवश्यकता है। (आईएएम में थोड़ा नया)।

Caused by: java.io.IOException: Reading of '<mydir>/packed-refs' failed: 403 Forbidden 
    at org.eclipse.jgit.transport.AmazonS3.error(AmazonS3.java:519) 
    at org.eclipse.jgit.transport.AmazonS3.get(AmazonS3.java:289) 
    at org.eclipse.jgit.transport.TransportAmazonS3$DatabaseS3.open(TransportAmazonS3.java:284) 
    at org.eclipse.jgit.transport.WalkRemoteObjectDatabase.openReader(WalkRemoteObjectDatabase.java:365) 
    at org.eclipse.jgit.transport.WalkRemoteObjectDatabase.readPackedRefs(WalkRemoteObjectDatabase.java:423) 
    ... 13 more 
Caused by: java.io.IOException: 
<?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>...</RequestId><HostId>...</HostId></Error> 
    at org.eclipse.jgit.transport.AmazonS3.error(AmazonS3.java:538) 
    ... 17 more 

403 निषिद्ध रूप से त्रुटि है लेकिन यह सुनिश्चित नहीं है कि आईएएम में क्या जोड़ा जाना चाहिए। कोई विचार?

[भी जोड़ा जाना चाहिए है, मैं नीति सिम्युलेटर में यह पता करने की कोशिश की और यह वहाँ काम करने के लिए दिखाई दिया है।]

उत्तर

1

"403" त्रुटि का मतलब यह हो सकता है कि कुंजी <mydir>/packed-refs मौजूद नहीं है। https://forums.aws.amazon.com/thread.jspa?threadID=56531 के अनुसार:

अमेज़न S3 एक accessdenied त्रुटि लौटाएगा जब गैर-विद्यमान कुंजी अनुरोध किया जाता है और निवेदक बाल्टी की सामग्री को सूचीबद्ध करने के लिए अनुमति नहीं है।

आप पहली बार के लिए जोर दे रहे हैं, कि फ़ोल्डर मौजूद नहीं हो सकता है, और मैं आप उचित NoSuchKey प्रतिक्रिया प्राप्त करने के लिए माता-पिता निर्देशिका पर ListBucket विशेषाधिकार की आवश्यकता होगी अनुमान लगा रहा हूँ। करने के लिए कि पहले बयान बदलने का प्रयास करें:

{ 
    "Effect": "Allow", 
    "Action": ["s3:ListBucket"], 
    "Resource": ["arn:aws:s3:::<mybucket>/*"] 
} 

मैं यह भी देखा कि jgit push s3 refs/heads/master काम किया जब jgit push s3 master नहीं किया।

भविष्य लोक करने के लिए: अगर तुम सब करना चाहते हैं अपनी ही उपयोगकर्ता के साथ एक Git रेपोस बाल्टी स्थापित करने के लिए है, तो निम्न सुरक्षा नीति काफी अच्छा लगता है:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::<bucketname>" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject", 
       "s3:GetObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::<bucketname>/*" 
      ] 
     } 
    ] 
} 
संबंधित मुद्दे