Versuche dies...
import boto
import boto.s3
import sys
from boto.s3.key import Key
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
bucket_name = AWS_ACCESS_KEY_ID.lower() + '-dump'
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY)
bucket = conn.create_bucket(bucket_name,
location=boto.s3.connection.Location.DEFAULT)
testfile = "replace this with an actual filename"
print 'Uploading %s to Amazon S3 bucket %s' % \
(testfile, bucket_name)
def percent_cb(complete, total):
sys.stdout.write('.')
sys.stdout.flush()
k = Key(bucket)
k.key = 'my test file'
k.set_contents_from_filename(testfile,
cb=percent_cb, num_cb=10)
[UPDATE] Ich bin kein Pythonist, also danke für die Hinweise zu den Importanweisungen. Außerdem würde ich nicht empfehlen, Anmeldeinformationen in Ihren eigenen Quellcode einzufügen. Wenn Sie dies in AWS ausführen, verwenden Sie IAM-Anmeldeinformationen mit Instanzprofilen ( http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html ) und behalten Sie das gleiche Verhalten bei Verwenden Sie in Ihrer Entwicklungs- / Testumgebung so etwas wie ein Hologramm von AdRoll ( https://github.com/AdRoll/hologram ).
Keine Notwendigkeit, es so kompliziert zu machen:
quelle
key.set_contents_from_filename('some_file.zip')
würde auch hier funktionieren. Siehe doc . Den entsprechenden Code für boto3 finden Sie hier .quelle
aws configure
geben Sie ein, geben Sie Ihre Daten ein und Sie werden automatisch eine Verbindung mit boto3 herstellen. Überprüfen Sie boto3.readthedocs.io/en/latest/guide/quickstart.htmlaws configure
, um Ihnen das Leben zu erleichtern.Ich habe dies verwendet und es ist sehr einfach zu implementieren
https://www.smore.com/labs/tinys3/
quelle
boto3.client
Lösung (wie die Antwort von Manish Mehra) funktionierte jedoch sofort.quelle
aws_access_key_id
undaws_secret_access_key
kann auch mit der AWS-CLI konfiguriert und außerhalb des Skripts gespeichert werden, sodass `client = boto3.client ('s3') aufgerufen werden kannLaden Sie die Datei innerhalb einer Sitzung mit Anmeldeinformationen auf s3 hoch.
quelle
Dies wird auch funktionieren:
quelle
Dies ist ein Drei-Liner. Folgen Sie einfach den Anweisungen in der boto3-Dokumentation .
Einige wichtige Argumente sind:
Parameter:
str
) - Der Pfad zu der hochzuladenden Datei.str
) - Der Name des Buckets, in den hochgeladen werden soll.str
) - Der Name der Datei, die Sie Ihrer Datei in Ihrem S3-Bucket zuweisen möchten. Dies kann derselbe sein wie der Name der Datei oder ein anderer Name Ihrer Wahl, aber der Dateityp sollte gleich bleiben.Hinweis: Ich gehe davon aus, dass Sie Ihre Anmeldeinformationen in einem
~\.aws
Ordner gespeichert haben, wie in den bewährten Konfigurationsmethoden in der boto3-Dokumentation vorgeschlagen .quelle
quelle
Mit boto3
Weitere Informationen: - https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-uploading-files.html
quelle
Beispiel für das Hochladen eines Ordners wie folgt: Code und S3-Ordnerbild
PS: Für mehr Referenz- URL
quelle
quelle
Ich habe etwas, das mir etwas mehr Ordnung zu bieten scheint:
Hier gibt es drei wichtige Variablen, die BUCKET-Konstante , die Datei_to_upload und den Dateinamen
BUCKET
: ist der Name Ihres S3-Bucketsfile_to_upload_path
: muss der Pfad von der Datei sein, die Sie hochladen möchtenfile_name
: ist die resultierende Datei und der Pfad in Ihrem Bucket (hier fügen Sie Ordner hinzu oder was auch immer)Es gibt viele Möglichkeiten, aber Sie können diesen Code in einem anderen Skript wie diesem wiederverwenden
quelle