GCP Cloud Composer配置SMTP邮件时仍调用SendGrid报错401如何解决
问题原因及修正方案
你目前仍然调用SendGrid发邮件的核心原因是自定义的email_backend配置未生效,Cloud Composer默认内置的邮件后端就是SendGrid,因此才会返回401未授权报错。按以下步骤修正即可:
1. 修正Airflow配置的设置方式
Cloud Composer环境不支持直接修改airflow.cfg文件,所有自定义配置必须通过GCP控制台的Cloud Composer环境详情页的「Airflow 配置覆盖」功能添加:
- 新增配置项:节(Section)选择
email,键(Key)填写email_backend,值(Value)填写airflow.utils.email.send_email_smtp - 补充完整SMTP配置,你之前遗漏了Office365必须的TLS相关配置:
[smtp] smtp_port = 587 smtp_user = 你的Office365邮箱地址 smtp_mail_from = 你的Office365邮箱地址 smtp_password_secret = smtp-password smtp_host = smtp.office365.com smtp_starttls = True smtp_ssl = False
2. 修正Secret Manager相关配置
- 确认Secret Manager中存储SMTP密码的密钥名称为
airflow-config-smtp-password,密钥值直接填写你的邮箱密码即可,不需要额外格式 - 确认你授予「Secret Accessor」角色的服务账号是Cloud Composer的工作负载服务账号,格式为
composer-<你的环境ID>@<你的项目ID>.iam.gserviceaccount.com,不要授予给个人账号或其他无关服务账号 - 如果你没有自定义过Secret Manager后端的前缀配置,不需要额外修改
[secrets]节的内容,Cloud Composer默认已经内置了Cloud Secret Manager后端的配置
3. 等待配置生效后测试
修改完配置覆盖后,Cloud Composer会自动触发环境更新,等待环境状态变为「运行中」(绿色对勾标识)后再运行测试DAG,不要在环境更新过程中测试,此时配置还未同步到所有工作节点。
如果上述配置都正确仍然发送失败,检查你的Office365邮箱是否开启了「允许SMTP客户端发送邮件」的权限,部分企业管理员会默认关闭该权限。
内容的提问来源于stack exchange,提问作者Satty
相关产品推荐
相关产品推荐

