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



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

有人可以帮忙吗?

另外两种方法标有#,我已经分别尝试了每种方法。

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

如果 gsutil rsync 不起作用,您可以尝试使用 rclone,或反转将数据从 S3 迁移到 GCS 的过程。

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

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

相关内容

  • 没有找到相关文章

最新更新