2017-08-13 2 views
0
try: 

    conn = boto.connect_s3(access_key,secret_access_key) 
    bucket = conn.get_bucket(bucket_name, validate=False) 
    k1 = Key(bucket) 
    k1.key = 'Date_Table.csv' 

    # k = bucket.get_key('Date_Table.csv') 
    k1.make_public() 
    k1.get_contents_to_filename(tar) 

except Exception as e: 
    print(e) 

Je reçois erreurS3ResponseError: erreur 403 Forbidden.An est survenue (NoSuchKey) lors de l'appel de l'opération GetObject: La clé spécifiée n'existe pas

S3ResponseError: 403 Forbidden AccessDenied Access DeniedD9ED8BFF6D6A993Eaw0KmxskATNBTDUEo3SZdwrNVolAnrt9/pkO/EGlq6X9Gxf36fQiBAWQA7dBSjBNZknMxWDG9GI=

j'ai essayé tous et posibility toujours obtenir la même erreur. s'il vous plaît guide moi comment résoudre ce problème.

i essayé d'autres comme ci-dessous et d'obtenir erreur

An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.

session = boto3.session.Session(aws_access_key_id=access_key, aws_secret_access_key=secret_access_key,region_name='us-west-2') 
    print ("session:"+str(session)+"\n") 
    client = session.client('s3', endpoint_url=s3_url) 
    print ("client:"+str(client)+"\n") 
    stuff = client.get_object(Bucket=bucket_name, Key='Date_Table.csv') 
    print ("stuff:"+str(stuff)+"\n") 
    stuff.download_file(local_filename) 

ge

Répondre

0

Utilisez toujours boto3. boto est obsolète.

  1. Tant que vous configurez des titres de compétence AWS CLI, vous n'avez pas besoin de passer les informations d'identification codées en dur. Lisez boto3 credential setup à travers.

  2. Il n'y a aucune raison d'initier boto3.session à moins d'utiliser une région et un profil utilisateur différents. Prenez votre temps et étudiez la différence entre le client de service (boto3.client) et les ressources de service (boto3.resources).

  3. Boto3.client de bas niveau est plus facile à utiliser pour les expériences. Utilisez boto3.resource de haut niveau si vous devez passer un objet arbitraire.

Voici le code simple pour boto3.client("s3").download_file.

import boto3 
# initiate the proper AWS services client, i.e. S3 
s3 = boto3.client("s3") 
s3.download_file('your_bucket_name', 'Date_Table.csv', '/your/local/path/and/filename')