在Amazon S3存储桶上上传文件时获取NoSuchMethoError

苏拉布·考希克

我正在尝试使用以下无服务器架构将文件上传到Amazon s3存储桶中,如下所述

ApiGateway-> lambda-> s3bucket

我正在使用邮递员发送请求,图像被编码为base64格式并传入键“ base64”,然后将其转换为inputstream并传入putObject方法,但这在发生错误的地方NoSuchMethodErrorpuObject方法但出现以下错误

错误堆栈跟踪:

com.amazonaws.services.s3.model.AmazonS3Exception.setProxyHost(Ljava/lang/String;)V: 
java.lang.NoSuchMethodError
java.lang.NoSuchMethodError: com.amazonaws.services.s3.model.AmazonS3Exception.setProxyHost(Ljava/lang/String;)V
at com.amazonaws.services.s3.internal.AmazonS3ExceptionBuilder.build(AmazonS3ExceptionBuilder.java:266)
at com.amazonaws.services.s3.internal.S3ErrorResponseHandler.createException(S3ErrorResponseHandler.java:164)
at com.amazonaws.services.s3.internal.S3ErrorResponseHandler.handle(S3ErrorResponseHandler.java:71)
at com.amazonaws.services.s3.internal.S3ErrorResponseHandler.handle(S3ErrorResponseHandler.java:52)
at com.amazonaws.http.AwsErrorResponseHandler.handleAse(AwsErrorResponseHandler.java:53)
at com.amazonaws.http.AwsErrorResponseHandler.handle(AwsErrorResponseHandler.java:41)
at com.amazonaws.http.AwsErrorResponseHandler.handle(AwsErrorResponseHandler.java:26)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1781)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1383)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1359)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1139)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:796)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:764)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:738)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:698)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:680)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:544)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:524)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5219)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5165)
at com.amazonaws.services.s3.AmazonS3Client.access$300(AmazonS3Client.java:405)
at 
com.amazonaws.services.s3.AmazonS3Client$PutObjectStrategy.invokeServiceCall(AmazonS3Client.java:6180)
at com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1824)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1784)
at com.nownow.aws.handler.MerchantOperationHandler.OperationHandler(MerchantOperationHandler.java:56)
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)

使用方法:

public Object OperationHandler(MerchantSignUpRequest merchantSignUpRequest, Context context)
{   SignUpResponse signUpResponse=new SignUpResponse();
 LOG.info(new Gson().toJson(merchantSignUpRequest));

    AmazonS3 s3client = AmazonS3ClientBuilder.standard()
            .withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
            .build();
    String timeStamp = new SimpleDateFormat("yyyy-MM-dd.HH:mm:ss").format(new java.util.Date());
    String bucketName="nownowhub";String name="12345678.jpg";
        InputStream is = new ByteArrayInputStream(merchantSignUpRequest.getBase64().getBytes());

        s3client.putObject(new PutObjectRequest(bucketName,name,is,new ObjectMetadata()).withCannedAcl(
                CannedAccessControlList.PublicRead));
        S3Object s3Object=s3client.getObject(new GetObjectRequest(
                bucketName,name));

        return (s3Object.getObjectContent().getHttpRequest().getURI().toString());
    }catch (Exception e)
    {
        e.printStackTrace();
        return "";
    }
bk sarika

请确保您使用的是相同版本aws-java-sdk-coreaws-java-sdk-s3并且具有最新版本,例如:

<dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-core</artifactId>
        <version>1.11.883</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-s3 -->
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.11.883</version>
    </dependency>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

允许组在Amazon S3存储桶上上传文件

尝试直接将文件上传到Amazon S3存储桶时请求失败

从Amazon S3存储桶打开文件时出错

如何安全地将大文件从浏览器上传到 Amazon S3 上的存储桶?

使用API在Amazon S3存储桶中创建文件夹/上传文件

如何使用axios将文件上传到Amazon S3存储桶?

使用boto将csv文件上传到Amazon S3存储桶

Amazon S3存储桶文件上传:无效的传输编码标头

Amazon S3:`key` 是上传到存储桶的对象而不是文件

如何在进度栏中显示文件上传进度-Amazon S3存储桶

无法在eclipse中使用localhost将文件上传到Amazon S3存储桶

使用 PHP 将文件上传到 Amazon S3 存储桶 - 不使用 SDK

从不同的用户账户上传文件到 Amazon S3 存储桶

在Python中使用ARN iam将文件上传到Amazon s3存储桶

Amazon S3 - 通过管道将字符串上传到 nodejs 中的 S3 存储桶上

如何从Amazon S3存储桶中的文件夹中获取所有文件?

删除位于Amazon S3上存储桶中的子文件夹中的文件

Amazon S3在版本存储桶中管理文件

Laravel保护Amazon S3存储桶文件

无法替换Amazon S3存储桶中的文件

如何在Amazon s3存储桶中压缩文件并获取其URL

Amazon S3:如何获取存储桶中的文件夹列表?

Amazon S3存储桶的Favicon

Android Amazon S3存储桶

我的Amazon S3存储桶网址是什么?如何将许多文件上传到s3存储桶?

检查 Amazon S3 存储桶上是否存在文件夹

创建Amazon s3存储桶时,是否可以设置自动写入存储桶的策略?

从laravel API端点上传时,如何设置系统定义的元数据到Amazon S3存储桶的对象?

如何使用postdata preSigned Url调用Amazon S3存储桶以使用Karate上传文件