【问题标题】:Aplakka scala s3 connector hangs when trying to put data尝试放置数据时,Aplakka scala s3 连接器挂起
【发布时间】:2021-01-06 02:00:33
【问题描述】:

我正在尝试使用简单的字符串处理放入存储桶中的 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/credentials 正确,我可以同时连接 aws sdk 和 aws cli
据我了解,我可能根本不指定任何 apakka.s3 凭据,例如在 aws java sdk
我已经查看了这篇文章 https://discuss.lightbend.com/t/alpakka-s3-connection-issue/6551/2 没有任何效果

我的示例是来自文档的 strainghforward 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

val source: Source[ByteString, Future[IOResult]] = StreamConverters.fromInputStream(() => is, 4096)

PS:我实际上不明白为什么我需要像这样指定一些主机:
endpoint-url = "http://localhost:9000"

【问题讨论】:

  • 你也可以看看Benji S3(我是贡献者)

标签: scala amazon-s3 akka alpakka


【解决方案1】:

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

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

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

【讨论】:

  • 所以是的,当我把所有东西都留空时,没有任何效果,但是使用 cli/sdk 可以
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
相关资源
最近更新 更多