You can use the boto3 python package within the SDK, including Ardent extensions. It's not async by default so you will want to wrap it in an asyncio subprocess.
The security practices are up to you. We have extensions moving files via sftp to outside file servers. You will need to request a whitelist via the Developer Portal in order to contact hosts outside of the datacenter. Part of the whitelist request is a description of what customer information will be transmitted and what protocols you're using.
Note that we do have built in ways of delivering files via S3:
https://docs.q2developer.com/docs/guides/online_integration/file_uploads.html
This would place the file in a temporary S3 location owned by Q2.