Hey Ethan,
The SDK contains functionality to upload files to AWS S3 bucket temporarily, called "ArdentFS":
https://docs.q2developer.com/docs/guides/online_integration/file_uploads.html
You could retrieve the file from there.
Another idea would be to piggyback on your institution's FTP access to Q2 via https://sftp.q2ebanking.com. This is if you already have access in connection with Centrix, an extract, or a batch process. Otherwise there may be a cost to get FTP access set up. Just note in your deployment request that you need a mount point created to your FTP site. Typically we will create a mount in the local filesystem at /mnt/outbound_sftp.
Finally you may already have a FTP connection via the VPN that we use to download batch files. If so, you can import pysftp library or other libraries and use them to upload files to your own FTP site. Just include a configuration in your extension that we can fill in with credentials and the proper endpoint. In the case of an entrypoint you will need to either depend on an environment variable or import a config from a related extension using the WedgeAddress or VendorConfig DB objects:
https://docs.q2developer.com/docs/api_references/q2_sdk/db/db_objects/wedge_address.html
https://docs.q2developer.com/docs/api_references/q2_sdk/db/db_objects/vendor_config.html