Разъем Aplakka scala s3 зависает при попытке поместить данные

#scala #amazon-s3 #akka #alpakka

#scala #amazon-s3 #akka #alpakka

Вопрос:

Я пытаюсь обработать 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, как в aws java sdk
Я уже проверил эту статью https://discuss .lightbend.com/t/alpakka-s3-connection-issue/6551/2 ничего не получалось

Мой пример — прямой 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"

Комментарии:

1. Вы также можете взглянуть на Benji S3 (я являюсь участником)

Ответ №1:

Если вы оставите alpakka.s3.aws пустым, он будет использовать методы настройки AWS по умолчанию, как в командной строке (например, вы можете использовать переменную AWS_REGION среды для установки региона и стандартного файла учетных данных AWS). Вы также можете оставить alpakka.s3.aws.credentials пустым, чтобы использовать методы учетных данных AWS по умолчанию и задать регион AWS через

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

endpoint-url предназначен только для использования с альтернативными (не-AWS) реализациями API S3 (например, minio). Если вы его настроите, вы не сможете подключиться к AWS S3.

Комментарии:

1. так что да, когда я оставил все пустым, ничего не работает, но с cli / sdk делать