我正试图使用一个以S3 bucket为起点的Cloudfront私有发行版来提供内容。
我的存储桶中有一个图像文件,用于测试目的,其权限设置为私有。我已经设置了我的存储桶策略,因此Cloudfront Origin Access Idbody具有获得权限
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity **************"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::studeersnel.{{my-bucket}}/*"
}
]
}
当我将Cloudfront发行版设置为public(不使用签名URL)时,它可以正常工作。该对象不能通过直接S3链接访问,但可以使用Cloudfront url访问。
现在,当我在“默认缓存行为设置”下将“限制查看器访问(使用签名URL)”设置为“是”时,它不再起作用。我收到一个403错误。如果我遵循签名的url,我会收到以下消息:
<Error>
<Code>AccessDenied</Code>
<Message>Access denied</Message>
</Error>
我正在使用php-sdk使用以下代码创建我的签名url:
require '../vendor/autoload.php';
use Aws\CloudFront\CloudFrontClient;
$cloudFront = CloudFrontClient::factory(array(
'key' => '********************',
'secret' => '****************************************',
'private_key' => '../pk-********************.pem',
'key_pair_id' => '********************',
));
$hostUrl = 'http://**************.cloudfront.net';
$resourceKey = 'desert.jpg';
$expires = time() + 300;
$signedUrl = $cloudFront->getSignedUrl(array(
'url' => $hostUrl . '/' . $resourceKey,
'expires' => $expires,
));
echo $signedUrl.'<br><br>';
echo '<img src="' . $signedUrl . '">';
知道我做错了什么吗?
今天解决了这个问题,所以我想如果有人遇到同样的问题,我会在这里发布解决方案。
我想这一定是url本身的生成问题,所以再次检查了凭证。检查完所有内容后,我决定尝试创建一个新的Cloudfront密钥对。出于某种原因,这解决了问题。
我设置了以下信息: 创建了AWS S3存储桶并将一些映像上载到特定文件夹 创建了AWS CloudFront web发行版: 来源域名:从列表中选择的S3 bucket 限制存储桶访问:是 来源访问标识:选定的已有标识 授予桶的读取权限:是,更新桶策略 拒绝访问
我已经尝试了很多事情,我承认失败了(我在这里读了很多回应,但到目前为止没有一个对我有帮助)。我正在尝试为CloudFont上保存的文件设置签名URL。我可以为S3创建签名的URL,但我不能为CloudFront工作。对于cloudfront,我使用AWS SDK中的以下内容: 我得到一个签名的URL生成,但我得到访问拒绝时,跟随链接,当我读到它建议我设置起源访问标识。因此,我转到我的分发设置和设置
我使用AWS Java SDK创建签名URL,并尝试通过链接到私有S3 bucket的云端提供图像服务-已采取的步骤- > {String distributionDomain=“分布式域”; } 当我点击URL安全签名URL时,我被拒绝访问,不确定我在这里错过了什么。如果需要任何其他信息,请告诉我。
我有所有的参数,像Key-id,cloudfront domain和pem文件。但我不知道如何实现它。谁能帮我拿些样品。 我找了很多,但没有找到。我得到了使用node.js创建签名url的示例代码,但我不想使用node.js。
我正试图用预签名的URL直接上传一个文件到S3 bucket,但在PUT请求上出现AccessDenied(403 Plibended)错误。 附注。忘了补充。我已经尝试添加和以及并且在本例中上载工作正常,但是如何限制上载的访问?它应该只适用于预签名的URL,对吗?
问题内容: 简短版:如何使用Python使用Amazon CloudFront / S3使签名的URL“按需”以模仿Nginx的X-Accel- Redirect行为(即保护下载)。 我已经安装了Django服务器,并在Nginx前端上运行。我一直对它的请求感到困惑,最近不得不将其安装为Tornado WSGI应用程序,以防止它在FastCGI模式下崩溃。 现在由于服务器对媒体的请求过多,我的服务