File delivery is currently tightly tied to the assumption that we use S3, and with a specific bucket structure. This leads to potential security issues and makes it difficult to move to other storage backends; in particular the frontend uses an S3 client and the relevant keys need to be delivered to it.
Since the object store is read-only from the client side, it would make more sense to directly give the client a URL for each file ("signed" in the case of S3, with bearer token in the case of macaroon-based systems like xrootd). This would completely abstract the backend storage system from the client; it would also mean that the clients would only get credentials sufficient to access their specific files. This requires the server to have a new/modified endpoint that returns an access URL + token given a file.
File delivery is currently tightly tied to the assumption that we use S3, and with a specific bucket structure. This leads to potential security issues and makes it difficult to move to other storage backends; in particular the frontend uses an S3 client and the relevant keys need to be delivered to it.
Since the object store is read-only from the client side, it would make more sense to directly give the client a URL for each file ("signed" in the case of S3, with bearer token in the case of macaroon-based systems like xrootd). This would completely abstract the backend storage system from the client; it would also mean that the clients would only get credentials sufficient to access their specific files. This requires the server to have a new/modified endpoint that returns an access URL + token given a file.