Как вызвать gsutil или использовать путь объектов GCS для перемещения данных из GCS в корзину s3 с помощью облачной функции - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь переместить файлы из GCS в корзину s3, используя функции GC (эквивалент AWS Lambda). Чтобы добиться этого, я попробовал 3 разных метода. В методе 1 я получаю сообщение об ошибке, и, хотя я не получаю сообщение об ошибке в двух других вариантах, файлы фактически не копируются.

Может кто-нибудь помочь, пожалуйста?

Два других метода помечены #, и я попробовал каждый из них отдельно.

s3_client.upload_file не работает, потому что он ожидает путь к исходному файлу, и когда я предоставляю 'gs: // /30327570.pdf', он говорит

'Такой файл или каталог не существует'

Команда gustil выполняется правильно без ошибок, но новый файл не создается в корзине s3.

import os
from google.cloud import storage
import boto3
import subprocess

s3_client=boto3.client('s3',aws_access_key_id='XYZ',aws_secret_access_key='ABC')
client = storage.Client()
def hello_gcs(data, context):
    bucket = client.get_bucket(data['bucket'])
    blob = bucket.blob(data['name'])
   #subprocess.call(['gsutil -m rsync -r gs://<google_bucket_name>/30327570.pdf s3://<aws_bucket_name>'], shell=True)
    subprocess.call(['gsutil cp gs://<google_bucket_name>/30327570.pdf s3://<aws_bucket_name>'], shell=True)
   #s3_client.upload_file('gs://<google_bucket_name>/30327570.pdf','<aws_bucket_name>','30327570.pdf')

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

Хотя это написано на JavaScript, вот функция Google Cloud для синхронизации файлов из корзины GCS в корзину S3:

https://github.com/pendo-io/gcs-s3-sync

0 голосов
/ 29 января 2019

, если gsutil rsync не будет работать, вы можете попробовать с помощью rclone или инвертировать процесс, чтобы перенести данные из S3 в GCS .

...