Skip to content

RUSTFS做为后端存储报错 #213

Closed

Description

@lcese

在2026年前一直都在用RUSTFS做为后端的存储,前两天对该容器进行了升级后。存储全部连接失败。看了一下官方的,将原先的容器root运行改成了10001运行,不知道这个对HALO存储有没有直接影响。
我通过其它的S3存储工具测试都是没有问题。就是HALO的S3存储报错。

Image

报错提示400:The object storage service returned an error status code 400. Please check the storage policy configuration and make sure your account and service are working properly.

Image

这是另外非HALO站点所测试的结果反馈。

Activity

  1. lcese commented on Apr 10, 2026

    @lcese
    Author

    签名版本不匹配:RustFS 主要支持 S3 Signature V4,若客户端强制使用 V2 会报错。目前商店的应该是还不支持V4的签名

  2. lcese commented on Apr 10, 2026

    @lcese
    Author

    2026-04-10T02:49:07.254391425Z at reactor.core.publisher.Mono.block(Mono.java:1800) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:49:07.254399087Z at run.halo.app.core.attachment.reconciler.AttachmentReconciler.cleanUpResources(AttachmentReconciler.java:95) ~[classes/:2.23.2]
    2026-04-10T02:49:07.254407125Z at run.halo.app.core.attachment.reconciler.AttachmentReconciler.lambda$reconcile$3(AttachmentReconciler.java:44) ~[classes/:2.23.2]
    2026-04-10T02:49:07.254415248Z at java.base/java.util.Optional.map(Unknown Source) ~[na:na]
    2026-04-10T02:49:07.254435141Z at run.halo.app.core.attachment.reconciler.AttachmentReconciler.reconcile(AttachmentReconciler.java:40) ~[classes/:2.23.2]
    2026-04-10T02:49:07.254443651Z at run.halo.app.core.attachment.reconciler.AttachmentReconciler.reconcile(AttachmentReconciler.java:27) ~[classes/:2.23.2]
    2026-04-10T02:49:07.254451861Z at run.halo.app.extension.controller.DefaultController$Worker.run(DefaultController.java:175) ~[api-2.23.2.jar:2.23.2]
    2026-04-10T02:49:07.254460319Z at java.base/java.util.concurrent.ThreadPerTaskExecutor$TaskRunner.run(Unknown Source) ~[na:na]
    2026-04-10T02:49:07.254468287Z ... 1 common frames omitted
    2026-04-10T02:49:07.254475702Z
    2026-04-10T02:51:30.821011093Z 2026-04-10T10:51:30.806+08:00 ERROR 7 --- [or-http-epoll-8] run.halo.s3os.S3ExceptionHandler : S3Exception occurred
    2026-04-10T02:51:30.821114374Z
    2026-04-10T02:51:30.821127268Z software.amazon.awssdk.services.s3.model.S3Exception: Bad Request (Service: S3, Status Code: 400, Request ID: null)
    2026-04-10T02:51:30.821138926Z at software.amazon.awssdk.services.s3.model.S3Exception$BuilderImpl.build(S3Exception.java:113) ~[na:na]
    2026-04-10T02:51:30.821151401Z at software.amazon.awssdk.services.s3.model.S3Exception$BuilderImpl.build(S3Exception.java:61) ~[na:na]
    2026-04-10T02:51:30.821162163Z at software.amazon.awssdk.services.s3.internal.handlers.ExceptionTranslationInterceptor.modifyException(ExceptionTranslationInterceptor.java:88) ~[na:na]
    2026-04-10T02:51:30.821173195Z at software.amazon.awssdk.core.interceptor.ExecutionInterceptorChain.modifyException(ExecutionInterceptorChain.java:181) ~[na:na]
    2026-04-10T02:51:30.821183610Z at software.amazon.awssdk.core.internal.http.pipeline.stages.utils.ExceptionReportingUtils.runModifyException(ExceptionReportingUtils.java:54) ~[na:na]
    2026-04-10T02:51:30.821194475Z at software.amazon.awssdk.core.internal.http.pipeline.stages.utils.ExceptionReportingUtils.reportFailureToInterceptors(ExceptionReportingUtils.java:38) ~[na:na]
    2026-04-10T02:51:30.821205266Z at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:39) ~[na:na]
    2026-04-10T02:51:30.821215896Z at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26) ~[na:na]
    2026-04-10T02:51:30.821226875Z at software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:210) ~[na:na]
    2026-04-10T02:51:30.821237443Z at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103) ~[na:na]
    2026-04-10T02:51:30.821247766Z at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:173) ~[na:na]
    2026-04-10T02:51:30.821258059Z at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80) ~[na:na]
    2026-04-10T02:51:30.821268535Z at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182) ~[na:na]
    2026-04-10T02:51:30.821320210Z at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74) ~[na:na]
    2026-04-10T02:51:30.821329405Z at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45) ~[na:na]
    2026-04-10T02:51:30.821337139Z at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53) ~[na:na]
    2026-04-10T02:51:30.821345198Z at software.amazon.awssdk.services.s3.DefaultS3Client.headObject(DefaultS3Client.java:7070) ~[na:na]
    2026-04-10T02:51:30.821352876Z at run.halo.s3os.S3OsAttachmentHandler.lambda$checkFileExistsAndRename$34(S3OsAttachmentHandler.java:466) ~[na:na]
    2026-04-10T02:51:30.821360595Z at reactor.core.publisher.MonoSupplier$MonoSupplierSubscription.request(MonoSupplier.java:123) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821371355Z at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2361) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821379253Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:75) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821386995Z at reactor.core.publisher.MonoSupplier.subscribe(MonoSupplier.java:47) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821394589Z at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:75) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821402247Z at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:54) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821409945Z at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:81) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821417530Z at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:47) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821425295Z at reactor.core.publisher.Mono.subscribe(Mono.java:4553) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821433023Z at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:242) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821440871Z at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:79) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821448874Z at reactor.core.publisher.Mono.subscribe(Mono.java:4569) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821456387Z at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:56) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821464963Z at reactor.core.publisher.MonoUsing.subscribe(MonoUsing.java:109) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821472877Z at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:75) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821480561Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821488247Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:80) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821511686Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:80) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821520093Z at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:203) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821527768Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:297) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821535619Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:191) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821543376Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821551244Z at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:296) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821558877Z at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:479) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821566471Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:184) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821574263Z at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:122) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821582192Z at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:75) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821589953Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:80) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821597708Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821605391Z at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:109) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821614107Z at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:300) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821621977Z at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:338) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821630048Z at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2093) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821637902Z at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:144) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821645860Z at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821653521Z at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:263) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821661199Z at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821676198Z at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:487) ~[reactor-netty-core-1.3.4.jar:1.3.4]
    2026-04-10T02:51:30.821684546Z at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:277) ~[reactor-netty-core-1.3.4.jar:1.3.4]
    2026-04-10T02:51:30.821692175Z at reactor.netty.channel.FluxReceive.request(FluxReceive.java:134) ~[reactor-netty-core-1.3.4.jar:1.3.4]
    2026-04-10T02:51:30.821699811Z at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:163) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821707408Z at reactor.core.publisher.FluxPeek$PeekSubscriber.request(FluxPeek.java:141) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821715022Z at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:163) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821722603Z at reactor.core.publisher.Operators$BaseFluxToMonoOperator.request(Operators.java:2063) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821730412Z at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.request(FluxFilterFuseable.java:411) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821738313Z at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.request(FluxMapFuseable.java:361) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821747026Z at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:138) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821754815Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821762416Z at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2361) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821770127Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:75) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821777853Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821785517Z at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onSubscribe(FluxContextWrite.java:103) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821793318Z at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onSubscribe(FluxMapFuseable.java:265) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821801146Z at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onSubscribe(FluxFilterFuseable.java:305) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821809051Z at reactor.core.publisher.Operators$BaseFluxToMonoOperator.onSubscribe(Operators.java:2047) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821816726Z at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821824392Z at reactor.core.publisher.FluxPeek$PeekSubscriber.onSubscribe(FluxPeek.java:174) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821831986Z at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.8.4.jar:3.8.4]
    2026-04-10T02:51:30.821846075Z at reactor.netty.channel.FluxReceive.startReceiver(FluxReceive.java:173) ~[reactor-netty-core-1.3.4.jar:1.3.4]
    2026-04-10T02:51:30.821854128Z at reactor.netty.channel.FluxReceive.lambda$subscribe$2(FluxReceive.java:151) ~[reactor-netty-core-1.3.4.jar:1.3.4]
    2026-04-10T02:51:30.821861819Z at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148) ~[netty-common-4.2.10.Final.jar:4.2.10.Final]
    2026-04-10T02:51:30.821869639Z at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141) ~[netty-common-4.2.10.Final.jar:4.2.10.Final]
    2026-04-10T02:51:30.821878594Z at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535) ~[netty-common-4.2.10.Final.jar:4.2.10.Final]
    2026-04-10T02:51:30.821886499Z at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201) ~[netty-transport-4.2.10.Final.jar:4.2.10.Final]
    2026-04-10T02:51:30.821894250Z at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1195) ~[netty-common-4.2.10.Final.jar:4.2.10.Final]
    2026-04-10T02:51:30.821902079Z at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.2.10.Final.jar:4.2.10.Final]
    2026-04-10T02:51:30.821909763Z at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.2.10.Final.jar:4.2.10.Final]
    2026-04-10T02:51:30.821917680Z at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
    2026-04-10T02:51:30.821925219Z

  3. didiplus commented on May 12, 2026

    @didiplus

    签名版本不匹配:RustFS 主要支持 S3 Signature V4,若客户端强制使用 V2 会报错。目前商店的应该是还不支持V4的签名

    这个问题修复吗?

  4. lcese commented on Jun 21, 2026

    @lcese
    Author

    此问题在1.5的版本中仍未被修复。

  5. ruibaby commented on Jun 21, 2026

    @ruibaby
    Member

    我在本地搭建了 RustFS 进行测试,看起来目前应该是支持 RustFS 的,和 S3 签名版本可能无关,主要原因可能是因为插件的区域默认值是 Auto,与 RustFS 有兼容问题,你们可以试试将区域改为 auto 或者 us-east-1。

    Image Image
  6. lcese commented on Jun 22, 2026

    @lcese
    Author

    已解决。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions