Amazon aws 中的此资源不允许使用指定的方法

Posted

技术标签:

【中文标题】Amazon aws 中的此资源不允许使用指定的方法【英文标题】:The specified method is not allowed against this resource in Amazon aws 【发布时间】:2020-03-14 15:00:29 【问题描述】:

伙计们,我可能会也可能不会错,但说真的,我正在努力解决 Amazon S3 存储桶中的文件上传问题。当我试图点击请求时,我收到以下错误。

MethodNotAllowed指定的方法不允许针对该资源

上面的消息是下面的响应。

<?xml version="1.0" encoding="UTF-8"?><Error><Code>MethodNotAllowed</Code
<Message>Thespecified method is not allowed against this resource.</Message>
<Method>POST</Method><ResourceType>OBJECT</ResourceType>
<RequestId>xxx</RequestId><HostId>xxxx</HostId></Error>

上面的消息是完整的消息,下面是我为将文件上传到 amazon s3 服务器而编写的代码。

public synchronized boolean uploadFile(String url, String name, File file) 
    HttpEntity entity = MultipartEntityBuilder.create()
            .addPart("file", new FileBody(file)).build();
    HttpPost request = new HttpPost(url);
    request.setEntity(entity);
    HttpClient client = HttpClientBuilder.create().build();
    try 
        HttpResponse response = client.execute(request);
        entity = response.getEntity();
        if (entity != null) 
            try (InputStream in_stream = entity.getContent()) 
                BufferedReader in = new BufferedReader(new InputStreamReader(in_stream));
                String inputLine;
                StringBuilder responseBuffer = new StringBuilder();
                while ((inputLine = in.readLine()) != null) 
                    responseBuffer.append(inputLine);
                
                in.close();
                String a = responseBuffer.toString();
                Utils.print("\n\n" + a + "\n\n");
            
        
        return true;
     catch (Exception e) 
        Utils.print(e);
    
    return false;

请建议我为此做些什么?我将非常感谢您的预期答复。

【问题讨论】:

您似乎正在使用POST 请求,可能是您要上传到的资源需要PUT 请求。可以尝试将HttpPost 更改为HttpPut 【参考方案1】:

您可能会获得 MethodNotAllowed,它建议使用属于存储桶所有者帐户的身份。

如果您拥有正确的权限,但您没有使用属于存储桶所有者账户的身份,Amazon S3 会返回 405 Method Not Allowed 错误。 https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html

来自 S3 API 错误响应列表

该资源不允许指定的方法。https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html

【讨论】:

以上是关于Amazon aws 中的此资源不允许使用指定的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Amazon 资源名称 (ARN) 作为标识符来查找亚马逊资源?

AWS Lambda不支持连接到专用租赁VPC中的资源

AWS SimpleDB 的 Amazon 资源名称 (ARN)

Amazon 资源名称 AWS RDS

绕过 Amazon Aws 上的跨域资源共享

是否可以使用 Amazon Cognito 组来设置对 AW 资源(例如 Amazon DynamoDB 和 Amazon S3)的权限?