画像ファイルをAmazonS3にアップロードしたいのですがクライアント生成の段階でエラーが発生します
error
1HTTPステータス 500 - Internal Server Error 2Type Exception Report 3 4メッセージ サーブレットの実行により例外を投げました 5 6説明 The server encountered an unexpected condition that prevented it from fulfilling the request. 7例外 8 9javax.servlet.ServletException: サーブレットの実行により例外を投げました 10 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 11原因 12 13java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V 14 com.amazonaws.http.conn.ssl.SdkTLSSocketFactory.<init>(SdkTLSSocketFactory.java:58) 15 com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.getPreferredSocketFactory(ApacheConnectionManagerFactory.java:90) 16 com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:63) 17 com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:56) 18 com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:50) 19 com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:38) 20 com.amazonaws.http.AmazonHttpClient.<init>(AmazonHttpClient.java:324) 21 com.amazonaws.http.AmazonHttpClient.<init>(AmazonHttpClient.java:308) 22 com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:229) 23 com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:215) 24 com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:682) 25 com.amazonaws.services.s3.AmazonS3Builder$1.apply(AmazonS3Builder.java:35) 26 com.amazonaws.services.s3.AmazonS3Builder$1.apply(AmazonS3Builder.java:32) 27 com.amazonaws.services.s3.AmazonS3ClientBuilder.build(AmazonS3ClientBuilder.java:64) 28 com.amazonaws.services.s3.AmazonS3ClientBuilder.build(AmazonS3ClientBuilder.java:28) 29 com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46) 30 amazonS3.S3Access.upload(S3Access.java:29) 31 servlet.Upload.doPost(Upload.java:69) 32 javax.servlet.http.HttpServlet.service(HttpServlet.java:660) 33 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 34 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
java
1import java.io.InputStream; 2 3import com.amazonaws.SdkClientException; 4import com.amazonaws.auth.AWSStaticCredentialsProvider; 5import com.amazonaws.auth.BasicAWSCredentials; 6import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration; 7import com.amazonaws.services.s3.AmazonS3; 8import com.amazonaws.services.s3.AmazonS3ClientBuilder; 9import com.amazonaws.services.s3.model.ObjectMetadata; 10 11public class S3Access { 12 public void upload(InputStream is, String title, String fileName) { 13 String region = "us-west-2"; //リージョン,米国西部(オレゴン) 14 String bucketName = "バケット名"; 15 String endpointUrl = "apigateway.us-west-2.amazonaws.com"; 16 String accessKey = "アクセスキー"; 17 String secretKey = "シークレットキー"; 18 String objectKey = title; 19 try { 20 //エンドポイント設定 21 EndpointConfiguration endpoint = new EndpointConfiguration(endpointUrl, region); 22 23 AmazonS3 client = AmazonS3ClientBuilder 24 .standard() 25 .withCredentials (new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey))) 26 .withEndpointConfiguration(endpoint) 27 .build(); 28 ObjectMetadata metadata = new ObjectMetadata(); 29 metadata.setContentType("image/jpeg"); 30 metadata.addUserMetadata("キー", "値"); 31 client.putObject(bucketName, "キー", is, metadata); 32 } catch(SdkClientException e) { 33 e.printStackTrace(); 34 } 35 } 36}