使用Python pysftp从SFTP下载文件并直接存储在AWS S3中

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

使用Python尝试使用pysftp模块从SFTP下载文件并将文件直接保存在S3存储桶中。我不应该将文件保存在本地。它们应该直接保存到 S3 中。我找不到将文件直接放入 s3 的选项。

我使用 SSH 私钥而不是密码来连接 SFTP。秘密存储在AWS秘密管理器中。请帮忙。

import boto3
import json

def get_secret():
  client = boto3.client("secretsmanager")
  secret_name = "arn:name"
  region_name = "region"
  response = client.get_secret_value(SecretId=secret_name)
  secret_dict = json.loads(response['SecretString'])
  return secret_dict 

sftp_secret = get_secret()
host=sftp_secret["host"]
username=sftp_secret["username"]
private_key=sftp_secret["private_key"]

with pysftp.Connection(host=host, username=username, private_key=private_key) as sftp:
    print("connection established")
    sftp.cwd('/')
    list_dir = sftp.listdir_attr()
    sftp.get(remote_path, local_path)
python amazon-s3 sftp pysftp
1个回答
1
投票

首先,不要使用pysftp,它是一个死项目。请参阅 pysftp 与 Paramiko

使用Paramiko代替:
使用 Paramiko 将文件从 SFTP 传输到 S3

即使您决定坚持使用 pysftp,解决方案也基本相同。 pysftp

Connection.open
的工作方式与 Paramiko
SFTPClient.open
相同。

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