所以我一直在努力做的就是在主机可以通过简单的.json
要求取回我的s3
桶一些GET
文件。
我跟着这个aws guideline和管理,托管,可公开访问的一些文件。现在,我只需在浏览器地址栏中键入这样的事情,让我的JSON文件:
https://s3.amazonaws.com/[my-bucket-name]/[my-file-name].json
或者我也可以做到这一点在控制台:
curl -X GET https://s3.amazonaws.com/[my-bucket-name]/[my-file-name].json
我想现在做的是一个非常基本的安全添加到我的文件斗:我想只允许访问如果请求包含在头一定API密钥。现在我只想要一个单一的API密钥样的设计,所有用户只需分享完全相同的API密钥,以及任何使用该密钥应该能够访问任何文件在桶。
事情是这样的curl命令:
curl -X GET --header "X-ApiKey: wow-such-secret" https://s3.amazonaws.com/[my-bucket-name]/[my-file-name].json
我想知道这是否可能只是S3。如果我需要使用其他Amazon的服务,哪些服务应该怎么考虑?
我斗政策(我基本上是从AWS教程复制粘贴):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[my-bucket-name]/*"
}
]
}
我也有AWS的〜10h和〜1个月的服务器开发经验。
您可以使用AWS API Gateway与lambda函数一起实现自己的目标
用于将包含在请求你的头REST调用API网关,API网关已经在他们的Usage Plans with API Keys这样的实现,这将允许您创建一个将在请求中通过确保只要求自己的API密钥你报头是允许的。
然后你就可以勾lambda function你的API网关的端点。拉姆达功能可以给一个标识的URL到您的S3资源或从桶返回JSON数据,但是这取决于你的喜好。
你有两个解决方案及其流程是:
标识的URL的解决方案:
(与头请求)< - >(API网关)< - >(拉姆达) - [生成签名URL]另一个请求,要求获取在铲斗该文件。 (客户端)+(签署URL)< - > s3Bucket
如果没有签订网址:lambda函数将读取/获取文件给你。 (与头请求)< - >(API网关)< - >(拉姆达)< - > S3
请注意设置权限只在您的S3存储验证的读。
如果你只存储你的水桶JSON文件中的数据,我建议你使用dynamodb其已经用于存储JSON数据进行了优化。