我已将文件上传到亚马逊s3水桶。 在s3中单击上传的文件时,它为我提供了上传文件的属性和上传文件的链接。当我复制粘贴链接到浏览器时,文件会被下载。
我的存储桶政策如下。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket-name/*"
}
]
}
但是当我们将链接粘贴到浏览器中时,我不希望我的音频/视频/图像文件被下载。而只能通过我的网站显示音频/视频/图像文件。 为了达到这个目的,我已经使用了,
npm aws-cloudfront-sign
cfUtil = require(aws-cloudfront-sign )
我使用上面的npm模块创建了一个签名的URL:
var cfKeypairId = 'AJDS2LD3KSD5SJSDKJSA(sample key pair)';
var cfURL = 'http://my_domain_name'+file_path;
//my domain name is something that starts with smb...cloudfront.net
var signedUrl = cfUtil.getSignedUrl(cfURL, {
keypairId: cfKeypairId,
expireTime: Date.now() + 60000,
privateKeyString: ???
});
我应该在私人密钥字符串中给出什么? 什么应该是我的桶政策? 我该怎么办CName的? 有人可以简单地说出这个吗?
答案 0 :(得分:1)
您可以使用AWS Web Console中的Security Credentials Section(使用Root帐户登录)获取CloudFront密钥对ID和私钥。
在您的S3存储桶策略中,您可以拒绝公开访问,并且只允许AWS CloudFront中的Origin Access Identity访问S3。
如果您计划自定义服务文件的域名(URL),则可以使用AWS Route53或使用任何其他DNS提供程序为其使用CName映射。