2014-06-10 11 views
16

मैं एडब्ल्यूएस एसडीके का उपयोग कर एक बाल्टी और उसके सभी वस्तु का उपयोग करने की कोशिश कर रहा हूँ निषेध लेकिन कोड मैं सूत्र में अपवाद के रूप में एक त्रुटि हो रही है चलाते समय "मुख्य" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: X), S3 Extended Request ID: Y=एडब्ल्यूएस S3 जावा एसडीके - प्रवेश

कृपया, जहां का सुझाव मैं कमी कर रहा हूँ और यद्यपि मैं बाल्टी के लिए सभी निम्न अनुमति ले लिया है यही कारण है कि पहुँच से मना कर त्रुटि हो रहा है:

s3:GetObject 
s3:GetObjectVersion 
s3:GetObjectAcl 
s3:GetBucketAcl 
s3:GetBucketCORS 
s3:GetBucketLocation 
s3:GetBucketLogging 
s3:ListBucket 
s3:ListBucketVersions 
s3:ListBucketMultipartUploads 
s3:GetObjectTorrent 
s3:GetObjectVersionAcl 

कोड इस प्रकार है के रूप में:

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); 
    ClientConfiguration clientConfig = new ClientConfiguration(); 
    clientConfig.setProtocol(Protocol.HTTP); 
    AmazonS3 conn = new AmazonS3Client(credentials, clientConfig); 
    conn.setEndpoint(bucketName); 
    Bucket bucket = conn.createBucket(bucketName); 
    ObjectListing objects = conn.listObjects(bucket.getName()); 
    do { 
      for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) { 
        System.out.println(objectSummary.getKey() + "\t" + 
          objectSummary.getSize() + "\t" + 
          StringUtils.fromDate(objectSummary.getLastModified())); 
      } 
      objects = conn.listNextBatchOfObjects(objects); 
    } while (objects.isTruncated()); 

उत्तर

5

समस्या अब हल हो गई है। कोड में निम्नलिखित समस्याएं थीं:

  1. अंत बिंदु सही नहीं था, एक सही अंत बिंदु होना चाहिए।
  2. बाल्टी को पर्याप्त अनुमति नहीं थी। एडब्ल्यूएस एसडीके में बाल्टी का उपयोग करने से पहले पूरी अनुमति की एक सूची लेनी चाहिए।

नीचे सही कोड

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); 
ClientConfiguration clientConfig = new ClientConfiguration(); 
clientConfig.setProtocol(Protocol.HTTP); 
AmazonS3 conn = new AmazonS3Client(credentials, clientConfig); 
conn.setEndpoint("correct end point"); 
Bucket bucket = conn.createBucket(bucketName); 
ObjectListing objects = conn.listObjects(bucket.getName()); 
do { 
     for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) { 
       System.out.println(objectSummary.getKey() + "\t" + 
         objectSummary.getSize() + "\t" + 
         StringUtils.fromDate(objectSummary.getLastModified())); 
     } 
     objects = conn.listNextBatchOfObjects(objects); 
} while (objects.isTruncated()); 
+0

पुरानी पोस्ट लाने के लिए खेद है लेकिन अभी भी यह नहीं पता कि यह एस 3 ब्राउज़र के साथ क्यों काम करता है लेकिन एडब्ल्यूएस एसडीके में काम नहीं करता है? – powerfade917

+0

क्या आप अपने कोड के साथ आने वाले मुद्दे के सटीक बिंदु की व्याख्या कर सकते हैं। यदि आपने सबकुछ ठीक से किया है तो इसे ठीक काम करना चाहिए। – gkbstar

+1

मैं एस 3 ब्राउज़र या साइबरडक का उपयोग करके बाल्टी के अंदर एक फ़ोल्डर तक पहुंच सकता हूं लेकिन जब मैं prefix के साथ सूची कुंजी में aws sdk php का उपयोग करता हूं, तो मुझे अनकॉट Aws \ S3 \ Exception \ AccessDeniedException: AWS त्रुटि कोड: AccessDenied, स्थिति कोड: 403 – powerfade917

20

जी ओ आईएएम के लिए और जांचें कि उपयोगकर्ता [एक्सेस कुंजी & गुप्त कुंजी] जिसका उपयोग एपीआई के लिए किया जा रहा है, एस 3 आधारित एपीआई का उपयोग करने के लिए previliges है।

निर्दिष्ट उपयोगकर्ता के लिए S3 नीति संलग्न - S3 पूर्ण पहुँच के साथ प्रयास करें; एक बार यह काम करने के बाद आप पहुंच को ठीक कर सकते हैं। अधिक जानकारी के लिए इस लिंक को जांचें [Managing IAM Policies]

+0

हाय एक ही बाल्टी अजगर डिस्क और S3 ब्राउज़र लेकिन कोड के माध्यम से नहीं का उपयोग कर कनेक्ट करने में सक्षम हूँ। – gkbstar

+0

क्या आप दोबारा जांच सकते हैं कि आप कोड और ड्रैगन डिस्क दोनों के लिए एक ही [एक्सेस कुंजी, गुप्त कुंजी] जोड़ी का उपयोग कर रहे हैं या नहीं? बाल्टी नीति और बाल्टी मालिक भी देखें; Coz। वे विशेष रूप से इनकार परिदृश्य में एक बहुत ही महत्वपूर्ण भूमिका निभाते हैं। –

+0

हाय धन्यवाद, अब मैं वास्तव में काम करने में सक्षम हूं कि मुझे बाल्टी को अनुमतियों की पूरी सूची नहीं थी, अब मैंने एडब्ल्यूएस एसडीके और इसके कामकाजी जुर्माना के लिए सभी अनुमतियां ली हैं। – gkbstar

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