Sha*_*a40 6 java amazon-s3 amazon-web-services grails-2.0 aws-sdk
从几天前开始,当我尝试将文件推送到S3Bucket时,我收到了此异常。Ealier一切似乎都可以正常工作,我敢肯定我这一边没有代码更改。
com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden
(Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden;
Request ID: XXXXXXXXXXXX),
S3 Extended Request ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1077)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:725)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:460)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:295)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3699)
at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:999)
at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:977)
Run Code Online (Sandbox Code Playgroud)
.... ....
我遇到了许多与com.amazonaws.services.s3.model.AmazonS3Exception相关的问题:禁止关注这些问题
我还能尝试解决这个问题
我正在使用aws-java-sdk:1.9.10将文件推送到S3存储桶。
您的实例很可能尚未使用有权访问 S3 的 IAM 实例配置文件角色启动。
对 AWS 服务的所有访问都必须使用访问密钥和密钥进行签名。当您从本地计算机执行此操作时,将DefaultCredentialsProviderChain使用文件中定义的访问密钥和机密.aws/credentials。
当您在 AWS 中启动 EC2 实例时,它还需要签署对服务(例如 s3)的请求。但是,它通过从内部元数据服务检索其凭据来实现此目的。
因此,您要做的就是创建一个 IAM 实例配置文件,您的实例在启动时将采用该配置文件。此 IAM 实例配置文件与用户的其他 IAM 配置文件一样,定义了实例有权访问的内容。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html