2017-09-04 1 views
0

J'essaye de télécharger un dossier d'un de mon seau d'Amazone s3 à l'instance d'Ubuntu EC2. J'ai deux seaux créés dans 2 régions différentes, je peux accéder et télécharger des dossiers du seau d'une région mais quand J'essaie d'accéder à l'autre suis face à un problème.aws s3 télécharger des fichiers

Here is the error, 
Traceback (most recent call last): 
    File "listbucket.py", line 7, in <module> 
    bucket = conn.get_bucket('train-faces') 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 509, in get_bucket 
    return self.head_bucket(bucket_name, headers=headers) 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 556, in head_bucket 
    response.status, response.reason, body) 
boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request 

Mais je peux télécharger le fichier à partir du compartiment d'une autre région.

+0

Lorsque vous configurez vos informations d'identification AWS, vous devez avoir configuré la région par défaut. c'est peut-être pourquoi son travail pour l'un, pas l'autre. Spécifiez-vous la région dans votre commande? par exemple. --region us-east-1 – slipperyseal

+0

non iam ne spécifiant aucune région dans la commande mais j'ai configuré la région. – Raj

+0

mais si je change n'importe quelle autre région dans la configuration ne fonctionne pas – Raj

Répondre

1

Vous pouvez spécifier la région lors de la connexion avec Amazon S3.

Boto

import boto 
conn = boto.s3.connect_to_region('ap-southeast-2') 
conn.get_bucket('train-faces') 

boto3

Ces jours-ci, il est recommandé d'utiliser boto3:

import boto3 
s3 = boto3.resource('s3', region_name = 'ap-southeast-2') 
bucket = s3.Bucket('train-faces') 

ou

import boto3 
client = boto3.client('s3', region_name = 'ap-southeast-2') 
+0

merci beaucoup !!! Je l'ai eu le travail – Raj

0

Vous pouvez utiliser les commandes suivantes pour télécharger

import boto3 
s3 = boto3.client('s3','region_name') 
s3.download_file("bucket-name", "key-name", "tmp.txt") 

S'il vous plaît voir http://boto3.readthedocs.io/en/latest/guide/s3.html

Explication - Nous sommes d'abord faire une connexion à s3 de région. La raison pour laquelle vous obtenez le fichier d'un Bucket peut être la valeur que vous avez définie lors de la configuration du boto. Il est recommandé de fournir le nom_région lors de la connexion. Une autre raison peut être le fichier non accessible ou l'autorisation refusée. Si le problème survient plus tard, la même erreur doit s'afficher. La permission est refusée.