Je tente de me connecter à un compartiment S3 (un tiers est le propriétaire, donc je ne peux pas y accéder via la console AWS). En utilisant CyberDuck, je peux me connecter et télécharger des fichiers sans problème. Cependant, j'ai essayé plusieurs bibliothèques pour se connecter au seau, ce qui rend un 403 interdit. Je poste ici dans l'espoir que quelqu'un puisse voir ce que je fais de façon incorrecte.Je peux utiliser CyberDuck pour me connecter à S3 Bucket, mais je ne peux pas me connecter par programmation
def send_to_s3(file_name):
csv = open("/tmp/" + file_name, 'rb')
conn = tinys3.Connection("SECRET",
"SECRET",
tls=True,
endpoint="s3.amazonaws.com")
conn.upload("MDA-Data-Ingest/input/" + file_name, csv, bucket="gsext-69qlakrroehhgr0f47bhffnwct")
def send_via_ftp(file_name):
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
srv = pysftp.Connection(host="gsext-69qlakrroehhgr0f47bhffnwct.s3.amazonaws.com",
username="SECRET",
password="SECRET",
port=443,
cnopts=cnopts)
with srv.cd('\MDA-Data-Ingest\input'):
srv.put('\\tmp\\'+file_name)
# Closes the connection
srv.close()
def send_via_boto(file_name):
access_key = 'SECRET'
secret_key = 'SECRET'
conn = boto.connect_s3(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
host='s3.amazonaws.com',
# is_secure=False, # uncomment if you are not using ssl
calling_format=boto.s3.connection.OrdinaryCallingFormat(),
)
Toutes ces fonctions renvoient un 403 interdit comme indiqué ci-dessous:
HTTPError: 403 Erreur du client: Interdit aux URL: https://gsext-69qlakrroehhgr0f47bhffnwct.s3.amazonaws.com/MDA-Data-Ingest/input/accounts.csv
Cependant quand j'utilise CyberDuck je peux me connecter très bien:
Modifier: À un moment l'envoi via ftp a montré le 403 (je ne me souviens pas à quoi il ressemblait quand il envoyait un 403) comme il se trouve au-dessus de l'erreur qu'il crache est: SSHException: Erreur lors de la lecture de la bannière de protocole SSH [Errno 54] Connexion réinitialisée par le pair –