1

我正試圖從Amazon S3導入特定文件到Google Cloud服務。python - 將特定文件從Amazon S3導入到Google雲端存儲

Docs中,提到的過程從Amazon源存儲桶中導入所有文件。

def main(description, project_id, day, month, year, hours, minutes, 
    source_bucket, access_key, secret_access_key, sink_bucket): 
"""Create a one-off transfer from Amazon S3 to Google Cloud Storage.""" 
storagetransfer = googleapiclient.discovery.build('storagetransfer', 'v1') 

# Edit this template with desired parameters. 
# Specify times below using US Pacific Time Zone. 
transfer_job = { 
    'description': description, 
    'status': 'ENABLED', 
    'projectId': project_id, 
    'schedule': { 
     'scheduleStartDate': { 
      'day': day, 
      'month': month, 
      'year': year 
     }, 
     'scheduleEndDate': { 
      'day': day, 
      'month': month, 
      'year': year 
     }, 
     'startTimeOfDay': { 
      'hours': hours, 
      'minutes': minutes 
     } 
    }, 
    'transferSpec': { 
     'awsS3DataSource': { 
      'bucketName': source_bucket, 
      'awsAccessKey': { 
       'accessKeyId': access_key, 
       'secretAccessKey': secret_access_key 
      } 
     }, 
     'gcsDataSink': { 
      'bucketName': sink_bucket 
     } 
    } 
} 

result = storagetransfer.transferJobs().create(body=transfer_job).execute() 
print('Returned transferJob: {}'.format(
    json.dumps(result, indent=4))) 

在研究遠一點,我碰到this page這表明include_prefixes的使用指定一個特定的文件。

我的問題是,我如何將include_prefixes集成到上面的代碼中?

回答

1

我還沒有測試過這個,但是你有沒有嘗試類似下面的東西?

'transferSpec': { 
    'objectConditions': { 
     'includePrefixes': [ 
      'folder1/folder2/file.png' 
     ]    
    }, 
    'awsS3DataSource': { 
     'bucketName': source_bucket, 
     'awsAccessKey': { 
      'accessKeyId': access_key, 
      'secretAccessKey': secret_access_key 
     } 
    }, 
    'gcsDataSink': { 
     'bucketName': sink_bucket 
    } 
} 
+0

是的,我試過了,它返回一個錯誤,指出object_conditions無法識別。 – noobcoder

相關問題