Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如果会话已过期,如何使S3中的文件成为私有文件_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 如果会话已过期,如何使S3中的文件成为私有文件

Amazon web services 如果会话已过期,如何使S3中的文件成为私有文件,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我有一些图像存储在Amazon S3存储桶中。我使用在我的网页中指向它们 我不想在用户未登录时查看图像。当用户注销时,我可以从后端将其设置为私有吗?您应该: 将AmazonS3中的对象保持私有(不可公开访问) 让您的应用程序生成 预先签名的URL授予对S3中私有对象的有时间限制的访问权。一旦时间段过期,它将不再可访问 应用程序负责对用户进行身份验证,并确定是否允许他们访问对象。如果是这样,应用程序应该生成预签名的URL。然后,URL可以像普通URL一样包含在HTML中(例如在标记中)。您应该

我有一些图像存储在Amazon S3存储桶中。我使用
在我的网页中指向它们

我不想在用户未登录时查看图像。当用户注销时,我可以从后端将其设置为私有吗?

您应该:

  • 将AmazonS3中的对象保持私有(不可公开访问)
  • 让您的应用程序生成
预先签名的URL授予对S3中私有对象的有时间限制的访问权。一旦时间段过期,它将不再可访问

应用程序负责对用户进行身份验证,并确定是否允许他们访问对象。如果是这样,应用程序应该生成预签名的URL。然后,URL可以像普通URL一样包含在HTML中(例如在
标记中)。

您应该:

  • 将AmazonS3中的对象保持私有(不可公开访问)
  • 让您的应用程序生成
预先签名的URL授予对S3中私有对象的有时间限制的访问权。一旦时间段过期,它将不再可访问


应用程序负责对用户进行身份验证,并确定是否允许他们访问对象。如果是这样,应用程序应该生成预签名的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获取图像。否则,不要在模板中渲染图像