You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Serverless Framework中为CloudFront S3源配置自定义OriginCustomHeader

在Serverless Framework中配置CloudFront源自定义User-Agent头以限制S3访问

给CloudFront源添加自定义User-Agent头

你只需在CloudFront的Origin配置块中加入OriginCustomHeaders字段,定义要发送到S3的User-Agent头即可。修改后的完整配置如下:

Origins:
  - DomainName: mybucketsite.com
    Id: bucketsitepath
    # 添加自定义User-Agent头配置
    OriginCustomHeaders:
      - HeaderName: User-Agent
        HeaderValue: "SecretHash"
    CustomOriginConfig:
      HTTPPort: 80
      HTTPSPort: 443
      OriginProtocolPolicy: 'http-only'

优化建议:避免硬编码密钥

直接在配置里写死SecretHash存在安全风险,推荐用Serverless Framework的参数引用功能,从AWS SSM参数存储或Secrets Manager读取密钥:

从SSM参数存储读取的示例

CloudFront源配置:

OriginCustomHeaders:
  - HeaderName: User-Agent
    HeaderValue: ${ssm:/myapp/cloudfront-s3-user-agent~true}

对应的S3桶策略同步引用该参数,保持配置一致性:

Statement:
  - Sid: PublicReadForGetBucketObjects
    Effect: Allow
    Principal: '*'
    Action: s3:GetObject
    Resource: arn:aws:s3:::mybucketname/*
    Condition: 
      StringEquals: 
        aws:UserAgent: ${ssm:/myapp/cloudfront-s3-user-agent~true}

额外提示

如果你的S3静态网站使用AWS原生的S3网站域名(例如mybucketname.s3-website-us-east-1.amazonaws.com),建议改用S3OriginConfig替代CustomOriginConfig,配置逻辑完全一致,同样添加OriginCustomHeaders即可:

Origins:
  - DomainName: mybucketname.s3-website-us-east-1.amazonaws.com
    Id: bucketsitepath
    OriginCustomHeaders:
      - HeaderName: User-Agent
        HeaderValue: ${ssm:/myapp/cloudfront-s3-user-agent~true}
    S3OriginConfig:
      OriginAccessIdentity: ''

内容的提问来源于stack exchange,提问作者CO2 Software

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 00:48:32