2014-06-10 27 views
16

Sto cercando di accedere a un secchio e tutto il suo oggetto utilizzando AWS SDK, ma durante l'esecuzione del codice che sto ottenendo un errore come Exception in thread "main" 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=AWS S3 Java SDK - Accesso Negato

Gentilmente suggerire, in cui mi manca e perché errore di accesso negato si sta verificando anche se ho preso tutto seguente autorizzazione al secchio:

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

codice è il seguente:

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()); 

risposta

5

Il problema è ora risolto. Il seguente codice è stato il seguente:

  1. Il punto finale non era corretto, dovrebbe esserci un punto finale corretto.
  2. Non c'era abbastanza autorizzazione per il bucket. Prima di utilizzare il bucket nell'SDK AWS, è necessario disporre di un elenco di autorizzazioni complete.

Di seguito si riporta il codice corretto

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

Mi spiace far apparire il vecchio post ma ancora non capisco perché ha funzionato con il browser S3 ma non funziona nell'SDK AWS? – powerfade917

+0

Puoi spiegare il punto esatto del problema relativo al tuo codice. Dovrebbe funzionare bene se hai fatto tutto correttamente. – gkbstar

+1

Posso accedere a una cartella all'interno di bucket usando S3 Browser o CyberDuck ma quando uso aws sdk php per elencare le chiavi con prefisso ottengo Uncaught Aws \ S3 \ Exception \ AccessDeniedException: AWS Codice errore: AccessDenied, Codice stato: 403 – powerfade917

20

G o su IAM e verificare se l'utente [Chiave di accesso & Chiave segreta] che viene utilizzato per l'API ha la precedenza di utilizzare l'API basata su S3.

Politica S3 collegata all'utente specificato - provare con S3 Full Access; è possibile definire l'accesso una volta che questo funziona. Ulteriori informazioni Verifica questo collegamento [Managing IAM Policies]

+0

Ciao sono in grado di collegare lo stesso secchio con disco drago e il browser s3, ma non attraverso il codice. – gkbstar

+0

puoi ricontrollare se stai usando la stessa coppia [Access Key, Secret Key] per entrambi i dischi di codice e dragon? Controlla anche la politica della benna e il Secchio proprietario; Coz. svolgono un ruolo molto vitale, specialmente nello scenario di accesso negato. –

+0

Ciao grazie, ora sono in grado di lavorare effettivamente problema era che non stavo avendo l'elenco completo delle autorizzazioni per il bucket ora ho preso tutte le autorizzazioni per AWS SDK e funziona bene. – gkbstar

Problemi correlati