#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 делать