

# 将请求路由到离 CloudFront Functions 查看器请求事件中的查看器更近的来源
<a name="example_cloudfront_functions_select_origin_based_on_country_section"></a>

以下代码示例演示将请求路由到离 CloudFront Functions 查看器请求事件中的查看器更近的来源。

------
#### [ JavaScript ]

**适用于 CloudFront Functions 的 JavaScript 运行时 2.0**  
 查看 GitHub，了解更多信息。查找完整示例，并了解如何在 [CloudFront Functions examples](https://github.com/aws-samples/amazon-cloudfront-functions/tree/main/select-origin-based-on-country) 存储库中进行设置和运行。

```
import cf from 'cloudfront';

function handler(event) {
    const request = event.request;
    const headers = request.headers;
    const country = headers['cloudfront-viewer-country'] &&
        headers['cloudfront-viewer-country'].value;

    //List of Regions with S3 buckets containing content
    const countryToRegion = {
        'DE': 'eu-central-1',
        'IE': 'eu-west-1',
        'GB': 'eu-west-2',
        'FR': 'eu-west-3',
        'JP': 'ap-northeast-1',
        'IN': 'ap-south-1'
    };

    const DEFAULT_REGION = 'us-east-1';

    const selectedRegion = (country && countryToRegion[country]) || DEFAULT_REGION;

    const domainName =
        `cloudfront-functions-demo-bucket-in-${selectedRegion}.s3.${selectedRegion}.amazonaws.com`;

    cf.updateRequestOrigin({
        "domainName": domainName,
        "originAccessControlConfig": {
            "enabled": true,
            "region": selectedRegion,
            "signingBehavior": "always",
            "signingProtocol": "sigv4",
            "originType": "s3"
        },
    });

    return request;
}
```

------

有关 Amazon SDK 开发人员指南和代码示例的完整列表，请参阅 [将 CloudFront 与 Amazon SDK 配合使用](sdk-general-information-section.md) 本主题还包括有关入门的信息以及有关先前的 SDK 版本的详细信息。