【发布时间】:2016-02-10 07:57:35
【问题描述】:
我想使用 Spring Cloud AWS 从 Spring Boot 应用程序访问 S3。我在桌面上对 S3 的访问工作正常,但是当我将应用程序捆绑为 WAR 文件并部署到 EC2 Tomcat 容器时,出现 403 异常:
Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: 4F0EBE3A853C6D99)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1078) ~[aws-java-sdk-core-1.9.27.jar:na]
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:726) ~[aws-java-sdk-core-1.9.27.jar:na]
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:461) ~[aws-java-sdk-core-1.9.27.jar:na]
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:296) ~[aws-java-sdk-core-1.9.27.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3737) ~[aws-java-sdk-s3-1.9.27.jar:na]
at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1028) ~[aws-java-sdk-s3-1.9.27.jar:na]
at org.springframework.cloud.aws.core.io.s3.SimpleStorageResource.getObjectMetadata(SimpleStorageResource.java:182) ~[spring-cloud-aws-core-1.0.2.RELEASE.jar:1.0.2.RELEASE]
at org.springframework.cloud.aws.core.io.s3.SimpleStorageResource.exists(SimpleStorageResource.java:112) ~[spring-cloud-aws-core-1.0.2.RELEASE.jar:1.0.2.RELEASE]
我有一个 application.yml,我在其中定义了对 AWS 的访问:
cloud:
aws:
region:
static: eu-west-1
auto: false
credentials:
accessKey: myaccesskey
secretKey: somereallylongkeyhere
instanceProfile: true
这在我的桌面上运行良好。我需要做什么才能完成这项工作?我已尝试打开我在 S3 中可以看到的所有权限,但我似乎无法解决这个问题。
【问题讨论】:
-
听起来您配置了 AWS 凭证,因此很可能是您的 EC2 实例的网络配置存在问题。您的实例是否有公共 IP 地址?您的实例是否属于具有受限出站规则的安全组?
-
是的,它有一个公共 IP 和完整的入站/出站访问权限。 403 让我觉得它是一个凭证问题 - 当资源文件被打包到 WAR 中时,它们会发生什么有趣的事情吗?
标签: amazon-web-services amazon-s3 amazon-ec2 spring-boot