2017-08-23 34 views
0


私はローカルにAWS CLIを使用AWS、
に新しいです、私は私のラップトップに接続IAM役割を持つことができないとして、私のAWSの資格情報を設定し、
Eclipse IDEのAWS Toolkitプラグインを使用して、自分の資格情報が正しく設定されているのがわかります。
私はこの答えを呼ば - AWS S3 upload without access and secret key in Java
AWS S3のJavaファイルのアップロード

誰かがS3バケットがにあるどの地域、私はコードで設定しない方法を理解するのに役立つことはできますか?
aws configureコマンドで設定した領域から領域を取得しますか?
s3client.setRegionメソッドを使用しようとするとエラーが発生します。

私はそれは私に次のエラー投げ、ローカルにこのコードをテストすることはできませんよ - に続き

com.amazonaws.SdkClientException: Unable to load credentials from service endpoint 

は、AWS S3にファイルをアップロードするために私のコードですから

AmazonS3 s3client = AmazonS3ClientBuilder.standard() 
         .withCredentials(new InstanceProfileCredentialsProvider(false)) 
         .build(); 
//s3client.setRegion(com.amazonaws.regions.Region.getRegion(Regions.EU_CENTRAL_1)); 
PutObjectResult result = s3client.putObject(new PutObjectRequest(BUCKET_NAME, BASE_PATH + localFile.getName(), localFile)); 

完全なエラーログ -

The legacy profile format requires the 'profile ' prefix before the profile name. The latest code does not require such prefix, and will consider it as part of the profile name. Please remove the prefix if you are seeing this warning. 
com.amazonaws.SdkClientException: Unable to load credentials from service endpoint 
    at com.amazonaws.auth.EC2CredentialsFetcher.handleError(EC2CredentialsFetcher.java:180) 
    at com.amazonaws.auth.EC2CredentialsFetcher.fetchCredentials(EC2CredentialsFetcher.java:159) 
    at com.amazonaws.auth.EC2CredentialsFetcher.getCredentials(EC2CredentialsFetcher.java:82) 
    at com.amazonaws.auth.InstanceProfileCredentialsProvider.getCredentials(InstanceProfileCredentialsProvider.java:141) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1118) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.runBeforeRequestHandlers(AmazonHttpClient.java:758) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:722) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:715) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:697) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:665) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:647) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:511) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4227) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4174) 
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1722) 
    at com.atrium.crud.service.PedestrianServiceImpl.savePedestrianSurvey(PedestrianServiceImpl.java:73) 
    at com.atrium.crud.controller.PedestrianController.savePedestrianSurvey(PedestrianController.java:69) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
    at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) 
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434) 
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: java.net.SocketTimeoutException: connect timed out 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) 
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242) 
    at sun.net.www.http.HttpClient.New(HttpClient.java:339) 
    at sun.net.www.http.HttpClient.New(HttpClient.java:357) 
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1202) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032) 
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:966) 
    at com.amazonaws.internal.ConnectionUtils.connectToEndpoint(ConnectionUtils.java:47) 
    at com.amazonaws.internal.EC2CredentialsUtils.readResource(EC2CredentialsUtils.java:106) 
    at com.amazonaws.internal.EC2CredentialsUtils.readResource(EC2CredentialsUtils.java:77) 
    at com.amazonaws.auth.InstanceProfileCredentialsProvider$InstanceMetadataCredentialsEndpointProvider.getCredentialsEndpoint(InstanceProfileCredentialsProvider.java:156) 
    at com.amazonaws.auth.EC2CredentialsFetcher.fetchCredentials(EC2CredentialsFetcher.java:121) 
    ... 69 more 

答えて

1

で(キーを以下ました)あなたのaws.propertiesがあることを確認してください

s3Client = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider()); 

を隠しフォルダ.aws &ホームディレクトリのファイル資格情報

1

この試してみてください。

AmazonS3Client amazons3 = new AmazonS3Client(new ProfileCredentialsProvider()); 

ProfileCredentialsProviderいます:クラスパスを使用でき

accessKey=AKIAIB6FA52IMGLREIIB 
secretKey=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 
+0

、彼らは私には、次のコマンドを焼成したとき私が見つけた私が考える〜/ .aws/configの場所に保存されてしまった - AWSのconfigureリスト、正しい場所は? –

+0

これは正しいです..そして、これらの資格情報はAWS CLIを使用している間に使用されます。Javaコードからサービスにアクセスする場合は、この方法でうまくいくでしょう。 – Deepak

1

あなたは、例えば

AmazonS3 s3client = AmazonS3ClientBuilder.standard() 
     .withCredentials(newInstanceProfileCredentialsProvider(false)) 
     .withRegion("eu_central_1") 
     .build(); 
1

より良い解決策は、資格情報プロバイダのチェーンを用いることであろうあなたのビルダー文の領域を挿入する必要があります。これにより、アプリケーションは本番環境でインスタンス・プロファイル信任状を使用し、開発マシンで信任状にフォールバックすることができます。例えば

AWSCredentialsProviderChain providerChain = new AWSCredentialsProviderChain(
      InstanceProfileCredentialsProvider.getInstance(), 
      new ProfileCredentialsProvider() 
    ); 

AmazonS3 s3client = AmazonS3ClientBuilder.standard() 
        .withCredentials(providerChain) 
        .build(); 

この最初のアクセスを取得し、認証情報をプロファイルするためにフォールバックするインスタンスプロファイルをしようとします。 the AWSCredentialsProvider interfaceを実装している限り、好きなだけ多くのプロバイダを追加できます。 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY(推奨それらはすべてのAWS SDKおよび以外のCLIによって認識されているので -

  • 環境変数:

    はまた、この順序でプロバイダを試みますdefault provider chain使用しています。すべてのAWS SDKおよびAWS CLI

  • 資格情報が共有するaws.accessKeyIdaws.secretKey
  • 資格プロファイルデフォルトの場所(~/.aws/credentialsでファイル) - 唯一のJava SDKによって認識NET)、またはAWS_ACCESS_KEYAWS_SECRET_KEY()
  • のJavaシステムプロパティがAWS_CONTAINER_CREDENTIALS_RELATIVE_URI環境変数が設定され、セキュリティマネージャが変数にアクセスする権限を持っている場合、Amazon EC2のコンテナサービスを介してのAmazon EC2メタデータサービス
を介して配信さ
  • インスタンス・プロファイルの資格情報を配信私はAWSは私のcredsを設定し、設定したのはいつ

    Source

  • 関連する問題