Aplakka scala s3连接器在尝试放置数据时挂起

yftpprvb  于 2022-11-06  发布在  Scala
关注(0)|答案(1)|浏览(162)

我正在尝试处理aws s3放入桶,用一个简单的字符串,我不能用alpakka(scala)做这个,但我可以用相同的请求处理使用aws java sdk
使用alpakka我的线程只是挂起不处理任何东西,Future.onComplete不触发
我尝试过指定aplakka conf文件,如下所示('*'标记覆盖敏感数据):

alpakka.s3 {
  aws {
    credentials {
      provider = static
      access-key-id = "********"
      secret-access-key = "********"
    }
    region {
      provider = static
      default-region = "*****"
    }
  }
}

我的计算机上确实有~/.aws/凭据正确,我可以连接到aws sdk和aws cli
据我所知,理想情况下,我可能根本不指定任何apakka.s3 creds,就像在awsjavasdk中一样
我已经检查了这篇文章https://discuss.lightbend.com/t/alpakka-s3-connection-issue/6551/2没有任何工作
我的例子是从docs中导出scala代码:

val file: Source[ByteString, NotUsed] =
  Source.single(ByteString(body))

val s3Sink: Sink[ByteString, Future[MultipartUploadResult]] =
  S3.multipartUpload(bucket, bucketKey)

val result: Future[MultipartUploadResult] =
  file.runWith(s3Sink)

但实际上我还需要我的源代码是InputStream
endpoint-url = "http://localhost:9000"
PS:我真的不明白为什么我需要像这样指定一些主机:
endpoint-url = "http://localhost:9000"

iklwldmw

iklwldmw1#

如果您将alpakka.s3.aws留空,它将使用默认的AWS配置方法,如在CLI中一样(例如,您可以使用AWS_REGION环境变量设置区域和标准AWS凭据文件)。您也可以将alpakka.s3.aws.credentials留空以使用默认的AWS凭据方法并通过

alpakka.s3 {
  aws {
    region {
      provider = static
      default-region = "us-east-1"
    }
  }
}

endpoint-url仅适用于S3 API的替代(非AWS)实现(例如minio)。如果您正在设置它,您将无法连接到AWS S3。

相关问题