Upload backup to S3 hosted with MinIO not possible

Note - If you do not fill in every section below, your post won’t be answered - you must provide the steps you have followed so far and the actions you’ve already taken. Make sure to remove this notice from your post too.

Make sure you search before posting! Duplicate posts for the same issue may not be answered.

OS Name/Version: Debian 12

Product Name/Version: AMP Release “Phobos” v2.6.0.6, built 20/11/2024 20:57

Problem Description:
I am encountering an issue with uploading instance backups from AMP to a MinIO S3 server. The problem appears to be with the URL format used for the S3 bucket. AMP generates URLs in the format bucketname.subdomain.domain.de , which is valid for AWS-hosted S3 buckets but incorrect for MinIO. The correct URL format for MinIO should be subdomain.domain.de/bucketname .

Expected Behavior: AMP should use the correct URL format for the MinIO server (subdomain.domain.de/bucketname) and successfully upload the backup. Actual Behavior: AMP generates the incorrect URL format (bucketname.subdomain.domain.de), resulting in a failed upload. The following errors are logged:

[15:44:57] [System:admin Activity/16] : Uploading backup intial to S3.
[15:45:31] [FileBackup:admin Error/12] : HttpRequestException
[15:45:31] [FileBackup:admin Error/12] : [0] (HttpRequestException) : Name or service not known (minecraft.s3.ITS_A_SECRET.de:443)
[15:45:31] [FileBackup:admin Error/12] :    at Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   at Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem)
   at Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)
   at Amazon.Runtime.Internal.HttpHandler`1.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.RedirectHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.Unmarshaller.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.S3.Internal.AmazonS3ResponseHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.Signer.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.S3.Internal.S3Express.S3ExpressPreSigner.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CredentialsRetriever.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.S3.Internal.AmazonS3ExceptionHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.ErrorCallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.MetricsHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.S3.Transfer.Internal.SimpleUploadCommand.ExecuteAsync(CancellationToken cancellationToken)
   at Amazon.S3.Transfer.TransferUtility.UploadAsync(TransferUtilityUploadRequest request, CancellationToken cancellationToken)
   at LocalFileBackupPlugin.BackupProvider.<>c__DisplayClass50_0.<<UploadToS3>b__0>d.MoveNext()
[15:45:31] [FileBackup:admin Error/12] : SocketException
[15:45:31] [FileBackup:admin Error/12] : [1] (SocketException) : Name or service not known
[15:45:31] [FileBackup:admin Error/12] :    at Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
   at Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|285_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
   at Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)

Steps to reproduce:

*Step 1 Configure AMP to use MinIO as the S3 storage backend.
*Step 2 Set the S3ServiceURL to https://s3.its_a_secret.de/.
*Step 3 Set the bucket name to minecraft along with valid access and secret keys.
*Step 4 Attempt to upload a backup to the MinIO server.

Actions taken to resolve so far:
Recreated Instance, performed manual upload to S3-Bucket