3

私は JavaScript/Angular 2 の開発者であり、Bitbucket パイプライン、Python、および Boto for s3 統合を使用したデプロイに関与しています。昨日、これら 3 つのテクノロジを紹介したばかりです。

私の webpack ビルドは、dists3 にアップロードしたいすべてのファイルを含むフォルダー を生成します。これらのファイルを 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 

これがPython全体ですs3_upload.py

ご覧のとおり、スクリプトはput_object次を使用します。

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

私ができるようにしたいのは、distフォルダーの内容をs3にアップロードすることです。これを行うには Python を学ぶ必要がありますか、それとも Boto には既にこれを行う方法がありますか?

4

1 に答える 1

3
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))

フォルダーを引数として渡し、ファイルを反復処理できます

于 2016-10-26T09:09:09.380 に答える