Amazon CloudFront:持续部署与边缘函数的执行顺序问询
CloudFront持续部署与边缘函数的执行顺序问题
背景信息
Amazon CloudFront的两项核心功能:
- 持续部署(Continuous Deployment):通过预发布分发(Staging distribution)在部署至主分发前测试变更,请求可按权重或请求头路由至预发布环境
- 边缘函数(Function):使用CloudFront Function或Lambda@Edge运行代码,在请求发往源站前后处理请求/响应
场景说明
- 主分发
distMain已启用持续部署,配置了预发布分发distStg,路由规则为:当请求头aws-cf-cd-foo = bar时,请求路由至预发布环境 - 分发关联了函数
funcChangeFoo(支持CloudFront Function或Lambda@Edge),当满足条件condDood时,会将请求头aws-cf-cd-foo更新为dood - 向
distMain发起请求,携带请求头aws-cf-cd-foo = bar且满足条件condDood
问题
请求会先执行函数funcChangeFoo修改请求头,再进入distMain处理持续部署路由规则?还是先匹配持续部署路由规则进入distStg,再触发函数?
回答
执行顺序是:先匹配持续部署的路由规则,请求进入对应分发(这里是distStg)后,再触发关联的边缘函数
CloudFront的持续部署路由逻辑是在请求进入分发处理流程的最早期执行的——它会基于原始请求的属性(包括请求头)判断要将请求路由到主分发还是预发布分发。只有当路由目标确定后,才会进入对应分发的完整处理流程,包括执行该分发关联的边缘函数(比如funcChangeFoo)。
也就是说,你发起的请求携带aws-cf-cd-foo = bar,会先被持续部署规则匹配,直接路由到distStg,之后在distStg的处理流程中,才会触发funcChangeFoo修改请求头。主分发distMain的边缘函数不会参与这次请求的处理,因为请求已经被路由到预发布分发了。
内容的提问来源于stack exchange,提问作者Tr1et
相关产品推荐
相关产品推荐

