We basically need the existing service POST /externalFileHandle/s3 ported for Google Cloud. The existing S3 service is relatively simple:
Check that the StorageLocation object exists for the bucket
Verify that the user owns the storage location
Access the file to verify that it exists and Synapse can access it, optionally get metadata from the file.
Create the file handle