【发布时间】:2020-04-08 13:23:39
【问题描述】:
我有一个要求,我需要将所有 CSV 文件从 S3 存储桶复制到 SFTP 位置。
我能够连接并建立连接,但我不确定如何使用 Paramiko 移动文件。
以下代码:
print('Establishing SFTP connection with ' + hostname + ' at port: ' + port)
filebjects = s3_client.list_objects_v2(Bucket=bucket_name)
# print(filebjects)
try:
print("port")
# return
bucket = s3_rs.Bucket(str(keybucket))
for obj in bucket.objects.all():
key = obj.key
body = obj.get()['Body'].read()
decodedKey = body.decode('utf-8')
key = paramiko.RSAKey.from_private_key(StringIO(decodedKey))
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
transport = paramiko.Transport((hostname,int(port)))
transport.connect(username=username,pkey=key)
sftp = paramiko.SFTPClient.from_transport(transport)
print("sftp")
client.put(localpath="fileName",remotepath="SFTP_REMO_FOLDER",)
sftp.chdir(path=remote_directory)
print(sftp.listdir(path='.'))
# for object in filebjects['Contents']:
# obj=client.get_object(Bucket=bucket_name,Key=fileName)
# file_data = obj['Body'].read()
# print(file_data)
# return
transport.close()
我不确定这里的文件名应该是什么我将所有对象和文件名分开。有什么建议吗?
【问题讨论】:
标签: python amazon-s3 sftp boto3 paramiko