使用 Python pysftp 从 SFTP 下载文件并直接存储在 AWS S3 中
Using Python pysftp download files from SFTP and store directly in AWS S3
使用 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,它是一个死项目。参见 。
改为使用 Paramiko:
即使您决定坚持使用 pysftp,解决方案也基本相同。 pysftp Connection.open
works the same way as Paramiko SFTPClient.open
.
使用 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,它是一个死项目。参见
改为使用 Paramiko:
即使您决定坚持使用 pysftp,解决方案也基本相同。 pysftp Connection.open
works the same way as Paramiko SFTPClient.open
.