我知道有很多类似的问题,this one也不例外
但不幸的是,我不能决定我的情况下的地区,我怎么才能决定正确的地区?
例如,在向Postman发出请求时,我遇到了类似的错误:
在我的控制台中,我使用EU (Frankfurt) eu-central-1
,在终端中也使用smth,如下所示:
heroku config:set region="eu-central-1"
据我所知,我的不适合。
下面是我的AWS类:
class AmazonFileStorage : FileStorage {
private val client: S3Client
private val bucketName: String = System.getenv("bucketName")
init {
val region = System.getenv("region")
val accessKey = System.getenv("accessKey")
val secretKey = System.getenv("secretKey")
val credentials = AwsBasicCredentials.create(accessKey, secretKey)
val awsRegion = Region.of(region)
client = S3Client.builder()
.credentialsProvider(StaticCredentialsProvider.create(credentials))
.region(awsRegion)
.build() as S3Client
}
override suspend fun save(file: File): String =
withContext(Dispatchers.IO) {
client.putObject(
PutObjectRequest.builder().bucket(bucketName).key(file.name).acl(ObjectCannedACL.PUBLIC_READ).build(),
RequestBody.fromFile(file)
)
val request = GetUrlRequest.builder().bucket(bucketName).key(file.name).build()
client.utilities().getUrl(request).toExternalForm()
}
}
2条答案
按热度按时间oyjwcjzk1#
我想您可能输入了错误的地区代码;您是否知道Bucket只在一个区域提供?
在日志记录设置中,将此范围设置为调试:
然后,您应该会看到如下所示的内容:
这段日志来自伦敦地区的一个桶
eu-west-2
9lowa7mx2#
要使用Kotlin与Amazon S3 bucket(或其他AWS服务)交互,请考虑使用AWS SDK for Kotlin。此SDK专为Kotlin开发人员设计。您使用的是AWS SDK for Java。
要使用AWS SDK forKotlin将对象放入Amazon S3 bucket,请使用以下代码。注意,要使用的区域在定义aws.sdk.kotlin.services.s3.S3Client的代码块中指定。
您可以在AWS代码库中找到此Kotlin示例和更多示例,网址为:
Amazon S3 examples using SDK for Kotlin
你也可以阅读KotlinDEV指南。链接在代码示例的开头。