2017-11-29 1 views
1

またポート番号もありますが、設定する場所が見つかりませんでした。この問題を解決するにはどうすればよいですか? Pythonの "boto"クライアントを通して私は正常に私のサービスに接続しましたが、Scalaでは常に禁止メッセージを返します。ここで スカラのAmazon S3に接続できません。 Pythonの接続はうまく動作しますが、Scalaでは403 Forbiddenのレスポンスが得られます

object a extends App{ 

     import com.amazonaws.auth.BasicAWSCredentials 

     val accessKey = "myAccessKey" 
     val secretKey = "mySecretKey" 
     val credentials = new BasicAWSCredentials(accessKey, secretKey) 

     import com.amazonaws.services.s3.AmazonS3Client 

     val s3client = new AmazonS3Client(credentials) 

     s3client.setEndpoint("address") 

     val s3object = s3client.getObject("myBucket", "file.txt") 

     println(s3object.getKey, s3object.getObjectMetadata.getLastModified) 
    } 

はエラーログです:

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: null; S3 Extended Request ID: null), S3 Extended Request ID: null 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1639) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4319) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4266) 
    at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1406) 
    at com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1267) 
    at a$.delayedEndpoint$a$1(a.scala:17) 
    at a$delayedInit$body.apply(a.scala:3) 
    at scala.Function0.apply$mcV$sp(Function0.scala:34) 
    at scala.Function0.apply$mcV$sp$(Function0.scala:34) 
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 
    at scala.App.$anonfun$main$1$adapted(App.scala:76) 
    at scala.collection.immutable.List.foreach(List.scala:389) 
    at scala.App.main(App.scala:76) 
    at scala.App.main$(App.scala:74) 
    at a$.main(a.scala:3) 
    at a.main(a.scala) 

答えて

0

AWS SDKは、何らかの形で使用して思いとどまらendpointJavaDoc):非標準サービスのエンドポイントを使用している場合

のみこれを使用します - クライアントを設定するための推奨されるアプローチは、{@link #withRegion(String)}

代わりにwithRegionを使用してください。

import com.amazonaws.auth.{AWSStaticCredentialsProvider, BasicAWSCredentials} 
import com.amazonaws.regions.Regions 
import com.amazonaws.services.s3.AmazonS3Client 

AmazonS3Client.builder() 
    .withCredentials(new AWSStaticCredentialsProvider(
    new BasicAWSCredentials("accessKey", "secretKey"))) 
    .withRegion(Regions.EU_WEST_1).build() 
関連する問題