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

如何通过Python的boto3客户端验证Route 53注册域名适配AWS SES

SES域名验证Pending问题解决与代码示例

是的,你确实遗漏了关键步骤——调用verify_domain_identity接口只会生成DNS验证所需的记录信息,不会自动将记录添加到Route53托管区,而AWS控制台GUI操作会自动帮你完成这一步关联,这就是两者的核心差异。

完整操作步骤与代码示例

1. 调用SES接口获取验证记录

首先通过boto3调用SES的verify_domain_identity,获取验证所需的TXT记录信息:

import boto3

# 初始化SES客户端(域名验证建议用us-east-1区域)
ses_client = boto3.client('ses', region_name='us-east-1')

domain = "your-domain.com"
response = ses_client.verify_domain_identity(Domain=domain)

# 提取验证信息并构造DNS记录模板
verification_token = response['VerificationToken']
dns_record = {
    'Name': f'_amazonses.{domain}',
    'Type': 'TXT',
    'TTL': 300,
    'ResourceRecords': [{'Value': f'"{verification_token}"'}]
}

2. 通过Route53 API添加验证记录到托管区

接下来需要将构造好的TXT记录添加到对应域名的Route53托管区:

# 初始化Route53客户端
route53_client = boto3.client('route53')

# 获取域名对应的托管区ID(已知ID可直接填写)
def get_hosted_zone_id(domain):
    response = route53_client.list_hosted_zones_by_name(DNSName=domain)
    for zone in response['HostedZones']:
        # 匹配精确域名(托管区域名末尾带点)
        if zone['Name'] == f"{domain}.":
            return zone['Id']
    raise ValueError(f"找不到域名{domain}对应的Route53托管区")

hosted_zone_id = get_hosted_zone_id(domain)

# 提交DNS记录变更
change_response = route53_client.change_resource_record_sets(
    HostedZoneId=hosted_zone_id,
    ChangeBatch={
        'Comment': '添加SES域名验证TXT记录',
        'Changes': [
            {
                'Action': 'UPSERT',  # 存在则更新,不存在则添加
                'ResourceRecordSet': dns_record
            }
        ]
    }
)

print(f"记录提交成功,变更ID:{change_response['ChangeInfo']['Id']}")

关键注意事项

  • 权限:确保执行代码的AWS身份(IAM用户/角色)拥有ses:VerifyDomainIdentity和route53:ChangeResourceRecordSets权限
  • DNS格式:TXT记录的值必须用双引号包裹,这是DNS规范要求,否则验证会失败
  • 生效时间:DNS记录生效通常需要5-15分钟,无需等待72小时,若长时间未验证通过,可通过nslookup或dig命令检查TXT记录是否正确解析
  • 区域选择:SES域名验证优先使用us-east-1区域,部分核心功能依赖该区域

内容的提问来源于stack exchange,提问作者J.Todd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:10:20