1 个稳定版本
1.0.0 | 2023 年 8 月 14 日 |
---|
#6 在 #cloud-front
50KB
645 行
Amazon CloudFront 客户端路由库
Amazon CloudFront 客户端路由库是一个为 CloudFront 的客户端路由功能设计的开源库,该功能用于以更高的精确度将客户端设备直接路由到 CloudFront 存点 (POPs)。客户端路由功能利用特殊格式 DNS 标签中存在的信息,并且这个库提供了编码和解码此类 DNS 标签的函数。
什么是客户端路由?
客户端路由是 CloudFront 的一项新功能,它利用 DNS 标签中编码的客户端子网信息来路由流量到 CloudFront 存点 (POPs)。除了使用这个库之外,此功能还有相关的先决条件,如使用 Route53 和需要证书更新。客户端路由的文档将在不久的将来发布,但如果您想尽早使用此功能,请联系 AWS 支持了解详情。
如何使用 Amazon CloudFront 客户端路由库?
库中有两个主要功能:encode_request_data
和 decode_request_data
。
编码
encode_request_data
接受三个参数:client_ip
、content_group_id
和 fqdn
。从这个数据生成一个客户端路由标签,然后把这个标签作为子域名添加到 fqdn
前面。
content_group_id
保留供将来使用,目前必须设置为空字符串。
let encoded_label = amazon_cloudfront_client_routing_lib::encode_request_data("1.2.3.4", "", "example.com"); // encoded_label is abacaqdaaaaaaaamaaaaaaaaaaaaa.example.com
解码
decode_request_data
接受一个参数:domain
。返回一个包含 DecodedClientRoutingLabel
结构体或 DecodeLengthError
的结果,每个字段都根据 domain
设置。该 domain
可以是 FQDN 或仅仅是客户端路由标签。
let decoded_label = amazon_cloudfront_client_routing_lib::decode_request_data("abacaqdaaaaaaaamaaaaaaaaaaaaa").unwrap();
// DecodedClientRoutingLabel {
// client_sdk_version: 1,
// is_ipv6: false,
// client_subnet: [1, 2, 3, 0, 0, 0, 0, 0],
// subnet_mask: 24,
// cgid: 0,
// }
let decoded_label = amazon_cloudfront_client_routing_lib::decode_request_data("abacaqdaaaaaaaamaaaaaaaaaaaaa.example.com").unwrap();
// DecodedClientRoutingLabel {
// client_sdk_version: 1,
// is_ipv6: false,
// client_subnet: [1, 2, 3, 4, 0, 0, 0, 0],
// subnet_mask: 24,
// cgid: 0,
// }
如果域的第一个 DNS 标签是无效的客户端路由标签(例如,长度不正确),则结果将包含错误。
let decoded_label = amazon_cloudfront_client_routing_lib::decode_request_data("abacaqdaaaaaaaamnjg3oubcyv").unwrap();
// DecodeLengthError {
// num_chars: 26,
// expected_num_chars: 29
// }
许可证
本库采用 Apache 2.0 许可证。
依赖项
~145KB