просто пытаюсь разобрать и отобразить целое ведро, я не могу избавиться от сообщения, не содержащего такого ключа, что является странным ..
Код ниже подключается и отображается на стандартный выход:
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider
import software.amazon.awssdk.regions.Region
import software.amazon.awssdk.services.s3.S3Client
import software.amazon.awssdk.services.s3.model.EncodingType
import software.amazon.awssdk.services.s3.model.ListObjectsV2Request
import software.amazon.awssdk.services.s3.model.ListObjectsV2Response
import software.amazon.awssdk.services.s3.paginators.ListObjectsV2Iterable
import java.net.URI
internal class S3ObjectsOps {
companion object {
private val BUCKET: String = "mybucket"
private val REGION_IRE = software.amazon.awssdk.regions.Region.EU_WEST_1
val s3c = S3Client.builder()
.region(REGION_IRE)
.endpointOverride(URI("https://${BUCKET}.s3-eu-west-1.amazonaws.com/"))
.credentialsProvider(ProfileCredentialsProvider.builder()
.profileName("default")
.build())
.build()
fun lsfolders(bucket: String) {
val listReq = ListObjectsV2Request.builder()
.bucket(bucket)
.delimiter("/")
.prefix("")
.maxKeys(10_000)
.build()
val listRes = s3c.listObjectsV2Paginator(listReq)
listRes.contents().onEach { f ->
if (!f.key().isNullOrBlank()) {
println(">> ${f.key()}")
} else {
println(" = ")
}
}
}
@JvmStatic
fun main(args: Array<String>) {
val bucket: String = ((args.size > 0 && !args[0].isNullOrEmpty()).toString()) ?: BUCKET
println("s3 ls test for bucket ${bucket}")
lsfolders(bucket)
}
}
}
Что поднимает:
software.amazon.awssdk.services.s3.model.NoSuchKeyException: указанный ключ не существует. (Сервис: S3Client; Код состояния: 404; Идентификатор запроса: C8AF9CB788D77F74)
Исключение в потоке "main" software.amazon.awssdk.services.s3.model.NoSuchKeyException: указанный ключ не существует. (Сервис: S3Client; Код состояния: 404; Идентификатор запроса: C8AF9CB788D77F74)
по адресу software.amazon.awssdk.core.http.pipeline.stages.HandleResponseStage.handleErrorResponse (HandleResponseStage.java:114)
То же исключение при использовании потока
listRes.contents().stream().forEach { content -> println(" Key: " + content.key() + " | ") }
Спасибо, ребята!