如何使用云函数调用gsutil或使用GCS对象的路径将数据从GCS移动到s3存储桶

问题描述 投票:0回答:2

我正在尝试使用GC函数(相当于AWS Lambda)将文件从GCS移动到s3存储桶。为了实现它,我尝试了3种不同的方法。在方法1中我得到错误,虽然我没有在其他2个选项中得到错误,但文件实际上不会被复制。

有人可以帮忙吗?

另外两个方法用#标记,我分别尝试了每个方法。

s3_client.upload_file无法正常工作,因为它需要源文件的路径,当我提供'gs:// <google_bucket_name> /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')
python amazon-s3 google-cloud-platform google-cloud-storage google-cloud-functions
2个回答
0
投票

如果gsutil rsync不起作用,你可以试试rclone,或将过程转换为migrate data from S3 to GCS


0
投票

虽然这是用JavaScript编写的,但这里有一个Google Cloud Function,用于将文件从GCS存储桶同步到S3存储桶:

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

© www.soinside.com 2019 - 2024. All rights reserved.