2016-10-26 49 views
3

私はJavaScript/Angular 2デベロッパーで、Bitbucketパイプライン、Python、Botoを使用したデプロイメントに参加しています。私は昨日これらの3つのテクノロジーに導入されました!Boto:複数のファイルをs3にアップロード

私のwebpackビルドでは、distというフォルダが作成されます。このフォルダには、s3にアップロードするすべてのファイルが含まれています。これらのファイルをs3バケットのルートに表示したいと思います。

私は私のbitbucket-pipelines.yamlに次のようにあります

image: node:5.6.0 

pipelines: 
    default: 
    - step: 
     script: 
      # other stuff.., 
      - python s3_upload.py io-master.mycompany.co.uk dist io-dist 

Hereあなたが見ることができるように、スクリプトはput_objectを使用しています全体のPython s3_upload.py

です:

client.put_object(
    Body=open(artefact, 'rb'), 
    Bucket=bucket, 
    Key=bucket_key 
) 

私が望む何できるだけdistフォルダの内容をs3にアップロードしてください。これを行うためにはPythonを学ばなければならないのですか、それとも既にこれを行う方法がBotoにありますか?

答えて

0
def sync_to_s3(target_dir, aws_region=AWS_REGION, bucket_name=BUCKET_NAME): 
    if not os.path.isdir(target_dir): 
     raise ValueError('target_dir %r not found.' % target_dir) 

    s3 = boto3.resource('s3', region_name=aws_region) 
    try: 
     s3.create_bucket(Bucket=bucket_name, 
         CreateBucketConfiguration={'LocationConstraint': aws_region}) 
    except ClientError: 
     pass 

    for filename in os.listdir(target_dir): 
     logger.warn('Uploading %s to Amazon S3 bucket %s' % (filename, bucket_name)) 
     s3.Object(bucket_name, filename).put(Body=open(os.path.join(target_dir, filename), 'rb')) 

     logger.info('File uploaded to https://s3.%s.amazonaws.com/%s/%s' % (
      aws_region, bucket_name, filename)) 

あなたは、引数としてフォルダをパスとファイル

を繰り返すことができます
関連する問題