Amazon web services 如果会话已过期,如何使S3中的文件成为私有文件
我有一些图像存储在Amazon S3存储桶中。我使用Amazon web services 如果会话已过期,如何使S3中的文件成为私有文件,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我有一些图像存储在Amazon S3存储桶中。我使用在我的网页中指向它们 我不想在用户未登录时查看图像。当用户注销时,我可以从后端将其设置为私有吗?您应该: 将AmazonS3中的对象保持私有(不可公开访问) 让您的应用程序生成 预先签名的URL授予对S3中私有对象的有时间限制的访问权。一旦时间段过期,它将不再可访问 应用程序负责对用户进行身份验证,并确定是否允许他们访问对象。如果是这样,应用程序应该生成预签名的URL。然后,URL可以像普通URL一样包含在HTML中(例如在标记中)。您应该
在我的网页中指向它们
我不想在用户未登录时查看图像。当用户注销时,我可以从后端将其设置为私有吗?您应该:
- 将AmazonS3中的对象保持私有(不可公开访问)
- 让您的应用程序生成
标记中)。您应该:
- 将AmazonS3中的对象保持私有(不可公开访问)
- 让您的应用程序生成
应用程序负责对用户进行身份验证,并确定是否允许他们访问对象。如果是这样,应用程序应该生成预签名的URL。然后,URL可以像普通URL一样包含在HTML中(例如在
标记中)。使用预先指定的对象URL从私有S3存储桶获取图像。这些预先签名的URL仅在指定的持续时间内有效。以下是如何在Python中使用boto3生成这些预签名URL的基本示例:
import boto3
AWS_ACCESS_KEY_ID = <access_key_id>
AWS_SECRET_KEY = <secret_key>
AWS_REGION = <region_name>
client = boto3.client(
's3',
aws_access_key_id = AWS_ACCESS_KEY_ID,
aws_secret_access_key = AWS_SECRET_KEY,
region_name = AWS_REGION
)
PRESIGNED_DOWNLOAD_URL = client.generate_presigned_url(
ClientMethod = 'get_object',
Params = {
'Bucket': AWS_BUCKET_NAME,
'Key': FILE_NAME,
},
ExpiresIn = 3600,
)
print(PRESIGNED_DOWNLOAD_URL)
导入boto3
AWS\u访问\u密钥\u ID=
AWS_密钥=
AWS_区域=
client=boto3.client(
“s3”,
aws\u访问\u密钥\u id=aws\u访问\u密钥\u id,
aws_secret_access_key=aws_secret_key,
地区名称=AWS地区
)
预签名\下载\ URL=client.generate\预签名\ URL(
ClientMethod='get_object',
参数={
“Bucket”:AWS_Bucket_名称,
“键”:文件名,
},
ExpiresIn=3600,
)
打印(预签名\u下载\u URL)
在这里,您只需提供AWS_ACCESS_KEY_ID、AWS_SECRET_KEY、存储桶的AWS_区域、AWS_存储桶名称和要下载的文件名。ExpiresIn=3600以秒为单位。因此,此URL的有效期为60分钟
其余部分必须由应用程序处理。也就是说,当用户登录时,生成预先签名的URL并从模板中的URL获取图像。否则,不要在模板中呈现图像。使用预签名对象URL从私有S3存储桶获取图像。这些预先签名的URL仅在指定的持续时间内有效。以下是如何在Python中使用boto3生成这些预签名URL的基本示例:
import boto3
AWS_ACCESS_KEY_ID = <access_key_id>
AWS_SECRET_KEY = <secret_key>
AWS_REGION = <region_name>
client = boto3.client(
's3',
aws_access_key_id = AWS_ACCESS_KEY_ID,
aws_secret_access_key = AWS_SECRET_KEY,
region_name = AWS_REGION
)
PRESIGNED_DOWNLOAD_URL = client.generate_presigned_url(
ClientMethod = 'get_object',
Params = {
'Bucket': AWS_BUCKET_NAME,
'Key': FILE_NAME,
},
ExpiresIn = 3600,
)
print(PRESIGNED_DOWNLOAD_URL)
导入boto3
AWS\u访问\u密钥\u ID=
AWS_密钥=
AWS_区域=
client=boto3.client(
“s3”,
aws\u访问\u密钥\u id=aws\u访问\u密钥\u id,
aws_secret_access_key=aws_secret_key,
地区名称=AWS地区
)
预签名\下载\ URL=client.generate\预签名\ URL(
ClientMethod='get_object',
参数={
“Bucket”:AWS_Bucket_名称,
“键”:文件名,
},
ExpiresIn=3600,
)
打印(预签名\u下载\u URL)
在这里,您只需提供AWS_ACCESS_KEY_ID、AWS_SECRET_KEY、存储桶的AWS_区域、AWS_存储桶名称和要下载的文件名。ExpiresIn=3600以秒为单位。因此,此URL的有效期为60分钟
其余部分必须由应用程序处理。也就是说,当用户登录时,生成预先签名的URL并从模板中的URL获取图像。否则,不要在模板中渲染图像