Mir wurde gesagt, dass Sie, wenn Sie awscli
anstelle von boto
verwenden, kein s3-Bucket-Upload-Skript schreiben müssen, wie unten gezeigt. awscli
Es scheint praktisch zu sein, also lasst uns das benutzen.
Installation
$ pip install awscli
Registrieren Sie S3-Informationen (eine Einstellungsdatei wird in ~ / .aws /
generiert.)
$ aws configure
Laden Sie den angegebenen Ordner hoch
$ aws s3 sync
Upload bestätigen
$ aws s3 ls
Sie können auch herunterladen
$ aws s3 sync s3: //
Ich habe in Qiita geschrieben, was ich auf [Gist] gepostet habe (https://gist.github.com/naoiwata/8111246).
Verwenden Sie boto, um den angegebenen Ordner (alle darin enthaltenen Dateien) in den Bucket von Amason S3 hochzuladen.
Lassen Sie uns boto
mit pip install boto
usw. installieren.
Fügen Sie ACCESS_KEY_ID, SECRET_ACCESS_KEY, BUCKET_NAME hinzu. Im Beispiel wird der Header als "Cache-Control: max-age = 10" geschrieben. Sie können den Header aber auch hinzufügen, wenn Sie möchten.
deploys3.py
# -*- coding: utf-8 -*-
"""deploy script to upload the files to AWS S3 bucket
Usage:
$ python deploy_s3.py <folder name for deploy>
"""
import os
import sys
from boto.s3.connection import S3Connection
from boto.s3.key import Key
ACCESS_KEY_ID = 'xxx'
SECRET_ACCESS_KEY = 'xxx'
BUCKET_NAME = 'xxx'
def main():
# check arguments
if len(sys.argv) is not 2:
print '[ERROR] wrong number of arguments. (required 1, got %s)' % len(sys.argv)
sys.exit(1)
_file_name = str(sys.argv[1])
# upload to S3
try:
upload_to_s3(_file_name)
except Exception, e:
raise e
print '[ERROR] upload to S3 has been failed.'
print '[OK] upload to S3 bucket has successfully completed. :)'
def upload_to_s3(file_name):
# connect to S3
s3 = S3Connection(ACCESS_KEY_ID, SECRET_ACCESS_KEY)
bucket = s3.get_bucket(BUCKET_NAME)
# upload with metadata and publish
fc = 0
for abspath, relpath in upload_files(file_name):
k = Key(bucket)
k.key = relpath
k.set_metadata('Cache-Control', 'max-age=10')
k.set_contents_from_filename(abspath)
k.make_public()
fc += 1
print '[OK] %s files are uploaded.' % fc
def upload_files(basedir):
parent_dir = os.path.dirname(os.path.realpath(basedir))
for (path, dirs, files) in os.walk(basedir):
for fn in files:
if fn.startswith('.'):
continue
abspath = os.path.join(path, fn)
yield (
abspath,
os.path.relpath(abspath, parent_dir).split(''.join([basedir, '/']))[1]
)
if __name__ == '__main__':
main()
Wenn Sie dieses Skript wie folgt ausführen, werden alle außer den unsichtbaren Dateien (Dateien beginnend mit) im Hoge-Ordner hochgeladen und im Stammverzeichnis von S3 mit dem angegebenen Header veröffentlicht.
$ python deploys3.py hoge
Ich bin mir nicht sicher, wie ich Qiita-Posts verwenden soll ...
Bitte lassen Sie mich wissen, ob es einen Edelstein oder npm mit einer Funktion wie boto
m () m gibt
Recommended Posts