【发布时间】:2017-08-30 04:33:22
【问题描述】:
我对 Amazon AWS 平台还很陌生。
我的实现场景是这样的,我需要一个具有公共读取权限的 S3 存储桶来存储用户的个人资料图片和其他静态图片,用于网站的徽标和背景。该应用程序的用户可以上传个人资料图片。
当我尝试访问此 S3 存储桶时,出现 403 禁止错误。
我通过阅读一些博客完成了以下操作,但不确定我到底哪里出错了。
第 1 步:为具有公共读取访问权限的 US-EAST-2 区域(与 EC2 实例相同的区域)创建一个名为“test.domain.com”的 S3 bucked。
第 2 步:使用以下配置创建策略
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListObject"
],
"Resource": [
"arn:aws:s3:::test.domain.com/*"
]
}
第 3 步:为 Amazon EC2 创建一个新角色并附加上面创建的策略。
第 4 步:将新创建的角色附加到 EC2 实例
步骤 5:使用 VS2015 自带的预定义模板创建一个 MVC 应用程序,通过 nuget 包管理器安装 Amazon AWSSDK 并编写以下代码以查看是否一切正常。
//getting instanceprofilecredentials
var profile = new InstanceProfileAWSCredentials();
//creating s3 client with credentials and region
var s3= new AmazonS3Client(profile, Amazon.RegionEndpoint.USEast2);
//creating a new request and assigning bucket name
var request = new ListObjectsRequest();
request.BucketName = "test.domain.com";
//sending the request
var response = s3.ListObjects(request);
//counting no of existing objects
int totalObjects=response.S3Objects.Count;
//display as controllers action result
return Content(totalObjects)
第 6 步:使用 VS2015 的 web deploy 部署应用程序。
任何帮助都将不胜感激。谢谢。
【问题讨论】:
标签: asp.net asp.net-mvc amazon-web-services amazon-s3 amazon-ec2