使用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)
首先,不要使用pysftp,它是一个死项目。请参阅 pysftp 与 Paramiko。
使用Paramiko代替:
使用 Paramiko 将文件从 SFTP 传输到 S3
即使您决定坚持使用 pysftp,解决方案也基本相同。 pysftp
Connection.open
的工作方式与 Paramiko SFTPClient.open
相同。