[英]How can I grant my aws sftp server access to an Amazon S3 bucket in another AWS account?
[英]How can I assign a subdomain to my AWS S3 Bucket?
我的AWS存储桶中有一个文件: https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg
: https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg
。
目前,我正在访问我的index.html
文件www.my-company.com
文件。 我将my-company.com
作为AWS Route 53中的托管区域。
但是,在那个index.html
,我不希望此资产明显位于AWS存储桶中。 我希望它看起来像是托管在我自己域的服务器上。 因此,而不是https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg
,我希望它被称呼为https://static.my-company.com/media/my-file.jpg
。 我怎样才能做到这一点?
我尝试在Route 53中插入CNAME记录,该记录会将static.my-company.com
s3.amazonaws.com/static.my-company.com
。 但这没有用。 这就是杰伊·戈德斯(Jay Godse) 在这里推荐的
您需要将S3存储桶设置为静态网站 (在S3中可以选择将存储桶设置为静态网站 )。 域名将更改为http://static.my-company.com.s3-website-us-east-1.amazonaws.com.
,这就是您要在Route 53中将CNAME记录设置为的记录。
请注意,您不能像当前一样将CNAME记录设置到目录中,它必须是可解析的域。
因此,而不是
https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg
,我希望它被称呼为https://static.my-company.com/media/my-file.jpg
。 我怎样才能做到这一点?
这里有三个独立的问题。
如果您为存储桶启用了网站托管功能(如@Deif在此处的另一个答案所示),则可以使用别名或CNAME将Route 53中的主机名指向存储桶的网站端点。 但是它不支持HTTPS。
HTTPS要求Web服务器使用SSL(TLS)证书向浏览器标识自己,该证书包含与浏览器地址框中的主机名匹配的主机名。 REST端点上的S3证书匹配s3.amazonaws.com
各种排列-它们与您的域不匹配。
因此,您需要一个SSL证书。 如果您已有一个,则将其上传到us-east-1区域中的Amazon Certificate Manager(ACM)。¹如果没有,则ACM可以免费为您创建一个。
接下来,使用您的子域作为备用域名,使用上面的ACM证书以及将网站端点主机名用作原始服务器,创建一个新的CloudFront发行版。
然后,将您的子域在Route 53中指向CloudFront分配。
现在, https://subdomain.example.com/pics/funny/cat.jpg
//subdomain.example.com/pics/funny/cat.jpg转到CloudFront,后者提供SSL并从相应的存储桶中获取内容。
为什么需要CloudFront? 这是使用通过S3启用SSL的自定义域名的官方解决方案。 S3本身不支持该功能。 使用CloudFront会带来相应的成本,但会大大降低S3本身的成本。 通过CloudFront进行下载时,S3对用于下载的带宽收取$ 0的费用,而CloudFront则对带宽收费。 在许多情况下,CloudFront的带宽价格较低(大概是因为CloudFront可以水平扩展以减轻拥塞,而S3只能垂直扩展-这是受设计限制的)。
¹在ACM中,无论存储桶位置在哪里, us-east-1
区域始终用于此处描述的设置,因为CloudFront是从us-east-1之外管理的,并且我们需要此证书才能供CloudFront访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.