如何为 CloudFront 行为指定多个路径模式?
How to specify multiple path patterns for a CloudFront Behavior?
我有一个带有 s3 源和自定义源的 CloudFront 分配。我希望 /api/*
和 /admin/*
上的所有流量都转到自定义源,所有其他流量都转到 s3 源。目前我只使用 /api/*
:
cloudfront.SourceConfiguration(
custom_origin_source=cloudfront.CustomOriginConfig(
domain_name=alb,
origin_protocol_policy=cloudfront.OriginProtocolPolicy.MATCH_VIEWER,
),
behaviors=[
cloudfront.Behavior(
allowed_methods=cloudfront.CloudFrontAllowedMethods.ALL,
path_pattern="/api/*",
forwarded_values={
"headers": ["*"],
"cookies": {"forward": "all"},
"query_string": True,
},
)
],
),
我可能会用 /api/*
重复这个行为,但我最终会添加一些额外的路径,这些路径需要路由到自定义来源 (ALB),所以我想知道是否有一种更干的方法。
path_pattern
接受 /{api,admin,other}/*
样式模式吗?或者我应该重构行为部分以重用 allowed_methods
和 forwarded_values
,然后用不同的 path_pattern
重复多个行为?
Does path_pattern accept /{api,admin,other}/*
style patterns?
不,基于 documentation.
不支持此图案样式
should I refactor?
是的,你可以简单地将这个自定义来源对应的所有path_pattern
保存到一个列表中,比如path_patterns
。然后使用简单方便的 Python 列表理解,
behaviors=[
cloudfront.Behavior(
allowed_methods=cloudfront.CloudFrontAllowedMethods.ALL,
path_pattern=pp,
forwarded_values={
"headers": ["*"],
"cookies": {"forward": "all"},
"query_string": True,
},
) for pp in path_patterns
]
我有一个带有 s3 源和自定义源的 CloudFront 分配。我希望 /api/*
和 /admin/*
上的所有流量都转到自定义源,所有其他流量都转到 s3 源。目前我只使用 /api/*
:
cloudfront.SourceConfiguration(
custom_origin_source=cloudfront.CustomOriginConfig(
domain_name=alb,
origin_protocol_policy=cloudfront.OriginProtocolPolicy.MATCH_VIEWER,
),
behaviors=[
cloudfront.Behavior(
allowed_methods=cloudfront.CloudFrontAllowedMethods.ALL,
path_pattern="/api/*",
forwarded_values={
"headers": ["*"],
"cookies": {"forward": "all"},
"query_string": True,
},
)
],
),
我可能会用 /api/*
重复这个行为,但我最终会添加一些额外的路径,这些路径需要路由到自定义来源 (ALB),所以我想知道是否有一种更干的方法。
path_pattern
接受 /{api,admin,other}/*
样式模式吗?或者我应该重构行为部分以重用 allowed_methods
和 forwarded_values
,然后用不同的 path_pattern
重复多个行为?
Does path_pattern accept
/{api,admin,other}/*
style patterns?
不,基于 documentation.
不支持此图案样式should I refactor?
是的,你可以简单地将这个自定义来源对应的所有path_pattern
保存到一个列表中,比如path_patterns
。然后使用简单方便的 Python 列表理解,
behaviors=[
cloudfront.Behavior(
allowed_methods=cloudfront.CloudFrontAllowedMethods.ALL,
path_pattern=pp,
forwarded_values={
"headers": ["*"],
"cookies": {"forward": "all"},
"query_string": True,
},
) for pp in path_patterns
]