要使用 AWS UserAgent 的 StringLike 或条件,可以使用 AWS CloudFormation 模板中的 'Condition' 功能。具体做法如下:
"Conditions": {
"isMobile": { "Fn::Or": [
{ "Fn::Contains": [ { "Ref": "UserAgent" }, "iPhone" ] },
{ "Fn::Contains": [ { "Ref": "UserAgent" }, "Android" ] }
]}
}
"Resources": {
"ExampleResource": {
"Type": "AWS::CloudFront::Distribution",
"Properties": {
"DistributionConfig": {
"Origins": [
{
"Id": "exampleOrigin",
"DomainName": "example.com",
"CustomOriginConfig": {
"HTTPPort": 80,
"HTTPSPort": 443,
"OriginProtocolPolicy": "https-only"
}
}
],
"Enabled": "true",
"ViewerCertificate": {
"CloudFrontDefaultCertificate": "true"
},
"DefaultCacheBehavior": {
"AllowedMethods": [
"HEAD",
"GET"
],
"TargetOriginId": "exampleOrigin",
"ForwardedValues": {
"QueryString": "false",
"Cookies": {
"Forward": "none"
},
"Headers": [
"User-Agent"
]
},
"ViewerProtocolPolicy": "allow-all"
}
}
},
"Condition": "isMobile"
}
}
以上代码将在模板使用 'Condition' 条件来判断 'UserAgent' 字符串是否包含“iPhone”或“Android”。如果是,将会应用到 'ExampleResource' 资源中。
注意:如果您需要在多个资源中判断 'UserAgent' 值,您可以在 'Conditions' 部分定义多个条件,并在资源中引用不同的 'Condition' 名称。