我在每个用户上传的平台中都有一些与业务相关的文档,一旦上传,就会存储在AWS S3存储桶中。我的要求就是用户应该只能通过应用程序提供的URL访问此内容。现在,我有S3网址,但这可以使用任意次。
首先,这可能在AWS S3中实现吗?
如果可能,该技术是什么?我们怎么做到这一点?
答案 0 :(得分:1)
您希望查看保护您的存储桶,以便它只能从您的应用程序访问(使用可访问存储桶的实例角色)。然后提供预签名的网址。有许多AWS文档描述了如何根据语言执行此操作。您可以查看其中一些here。
答案 1 :(得分:1)
可以生成带有过期时间戳的S3链接。
python中的一个例子找到了here:
#!/usr/bin/env python
# Create a time-bombed URL from an S3 object
# Parameters: s3_url [timeout]
# timeout defaults to 1 minute if not specified
# requires the boto module
import sys,re
try:
testArg=re.match('s3:\/\/',sys.argv[1])
except:
print ("usage: " + sys.argv[0] + " s3_object ttl_in_sec")
sys.exit(1)
if not testArg:
print "need a valid s3 object as arg"
sys.exit(1)
try:
sys.argv[2]
expTime=int(sys.argv[2])
except:
expTime=60
(bucket,key)=re.split('/',re.sub('^s3:\/\/','',sys.argv[1]),maxsplit=1)
testKey=re.match('\w',key)
if not testKey:
print ("something wrong with this url - I have a key of: " + key + " - bailing")
sys.exit(1)
from boto.s3.connection import S3Connection
s3=S3Connection()
url = s3.generate_url(expTime, 'GET', bucket=bucket, key=key)
print (url)
会创建一个像这样的链接:
在X时间过后过期。