我试图将一个子域指向一个新的发行版。我有两个帐户:legacy,new。
在传统的帐户拥有这些资源:
foo.com,具有:
a.foo.com->xyz.cloudfront.netxyz.cloudfront.net:
a.foo.coma.foo.com在新的帐户拥有这些资源:
qrs.cloudfront.net我希望最终设置是a.foo.comCNAME 到qrs.cloudfront.net. (我不明白为什么 CloudFront 发行版需要知道 CNAME 的内容,这可能是我不理解下面错误的部分原因。)
所以我正在关注这些官方文档。我正在尝试通过*.foo.com在新的 CloudFront 分配上设置为备用域名来执行第 3 步。
但我收到以下错误:
com.amazonaws.services.cloudfront.model.CNAMEAlreadyExistsException:您提供的一个或多个 CNAME 已经与不同的资源相关联。(服务:AmazonCloudFront;状态代码:409;错误代码:CNAMEAlreadyExists;)
我已经为 SSL 实施了 AWS ELB。它在我的域中运行良好。我想将http重定向到https。所以我使用了 CloudFront。但是在实施了 cloudfront 之后,我并没有取得成功。
为了实现 Cloudfront,我使用默认 SSL,因为region=us-east-1. 我已经更新了 Route53 中的 CNames。
为了在 ELB 下生成证书,我选择了全局。
有什么建议吗?
首先为我的无知感到抱歉,但在 AWS ELB 词中有一个对我来说不是很清楚的概念。
我有一个部署在 cloudfront 上的前端站点和一个运行在 EC2 实例中的 API。
我想要存档的是避免有 2 个域来提供相同的数据。
例如,我想使用https://example.com/post通过我的网站访问,您将看到该网站本身(来自 cloudfront 的 HTML)。
但是,如果您尝试通过 HTTP/HEADER访问https://example.com/post,Accept: application/json您将能够看到来自 API 服务器本身(EC2 实例)的 json 内容。
可以使用 ELB 吗?或者我是否必须在 EC2 实例中使用一些技巧,例如将 nginx 设置为代理并在不存在标头的情况下提供云端内容?
提前致谢。
我有一个 angular 5 应用程序 - 我一直在本地运行,让它在 heroku 上运行一个 nodjs 服务器很好,但是当我把它放在一个 S3 存储桶中时,在 cloudfront 后面,我点击刷新我得到了这个。
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>217...1C</RequestId>
<HostId>
yu2de...dr0=
</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我创建了一个 Jenkins 作业,每次部署我的前端项目时都会使缓存无效。问题是,虽然 AWS 网站显示缓存无效,但当作业完成时,缓存并未完全清除,因此我需要通过 AWS 网站手动使其无效...
我使用的自动使缓存无效的方法是通过aws 容器,我在其中执行以下命令:
aws cloudfront create-invalidation --distribution-id ${DISTRIBUTION_ID} --paths /* > output.json输出文件将包含一个 json,我可以在其中获取不同的键:值。我使用的其中两个是Id和Status。创建失效后,我执行以下另一个管道步骤:
aws cloudfront get-invalidation --distribution-id ${DISTRIBUTION_ID} --id ${id_invalidator} > status_invalidation.json使用之前的命令,我每 50 秒(通过 a sleep 50)向API 请求一次失效状态。当验证返回“Status = Completed”时,作业就完成了。此条件在 while 循环内。
有人知道为什么会这样吗?
pipeline amazon-web-services jenkins amazon-cloudfront aws-cli
我有一个自定义来源的 Cloudfront 发行版。
我想使用 Lambda@Edge 源请求来修改和添加一些额外的标头以转发到我的源服务器。
下面是我的 Lambda 函数。该custom_header是CloudWatch的日志我的LAMBDA可见,但在我的自定义服务器请求头不显示:(。
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
headers['custom_header'] = [{ key: 'custom_header', value: 'custom_header' }];
return callback(null, request);
}
Run Code Online (Sandbox Code Playgroud)
我希望custom_header在我的 Node.js 路由中可见req.headers。
amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge
我的 DNS 使用 Cloudflare 并且 SSL 已满。我正在尝试设置一个子域;https://humlor.myrenas.se并将其指向 AWS S3-bucket。我已经使用默认的 CloudFront 证书 (*.cloudfront.net) 设置了 Cloudfront,该站点可在https://d2ufhnw2kk1vh9.cloudfront.net/ 上找到(没有设置 CSS 的一些绝对路径的样式)
然后我在 Cloudflare 中创建了一个 CNAME 记录:CNAME humlor is an alias of d2ufhnw2kk1vh9.cloudfront.net
但是https://humlor.myrenas.se/给出:403 ERROR 无法满足请求。错误的请求。
我需要在 Cloudfront 中使用另一个证书吗?或者缺少什么?
我们通过 cloudfront CDN 为我们的 angular 6 bassed 网站提供服务。我们已经在 cloudfront 设置中检查了 HTTP2。我们如何使用 HTTP2 服务器推送(预加载)功能来像 cloudflare 一样提高网站的性能。
在 cloudflare 中,可以在请求中传递 LINK 标头,例如 Link: ; rel=预加载;as=脚本
所以我在 Godaddy 上托管了一个 Wordpress 站点,但 DNS 位于 Route53 上,我希望它只能通过 https 访问。
因此,我使用 ACM 和使用该证书的 Cloudfront 发行版设置了 SSL 证书,但我从 GoDaddy 获得的只是一个 IP 地址,Cloudfront 不允许我将源设置为 IP。
有什么办法可以做到这一点?
wordpress https amazon-web-services amazon-cloudfront amazon-route53
我们正在使用 cloudfront 作为前端 Web 应用程序(带有 s3、lambda、athena 等的 myapp.com)在新版本发布之前,我们正在创建一个带有新代码的全新发行版(next.myapp.com)和内容,测试,然后想使它成为 myapp.com 的实时版本。但这似乎不可能。
多个 Cloudfront 发行版不能具有相同的 CNAME,因此我们无法更改 myapp.com 的 DNS 条目以指向新服务。更改分布意味着随着新配置在世界各地流行,会有延迟。
使用亚马逊基础设施是否可以做到这一点?还是我这样做完全错误?希望能够尽快迁移实时服务,但如果版本出现问题,仍然可以使用现有版本进行手动故障回复
amazon-s3 ×2
amazon-elb ×1
angular ×1
api ×1
aws-cli ×1
aws-lambda ×1
cloudflare ×1
cname ×1
https ×1
jenkins ×1
nginx ×1
pipeline ×1
wordpress ×1