使用 Sendgrid 的 Cloud Composer;电子邮件 API 请求产生 401 禁止错误

问题描述

电子邮件运营商总是返回 401 forbidden。

版本:

composer-1-14-2-airflow-1-10-12

环境变量是提前创建的:

SENDGRID_MAIL_FROM=x@x.com

SENDGRID_API_KEY="SG.****"

总结:作为开始,我使用最宽松的环境。创建 Composer 的网络允许所有入口和出口。

使用 Cloud Shell

curl --request POST \
  --url https://api.sendgrid.com/v3/mail/send \
  --header "Authorization: Bearer SG.****" \
  --header 'Content-Type: application/json' \
  --data '{"personalizations": [{"to": [{"email": "x@x.com"}]}],"from": {"email": "y@x.com"},"subject": "Hello,World!","content": [{"type": "text/plain","value": "hey!"}]}'

执行上述 curl 命令后,邮件已正确发送。

但是,来自 Composer 环境的电子邮件操作员返回 401 错误

在 Bash Operator 中使用 curl 命令会产生完全相同的 401 错误,只是确认了电子邮件 Operator 的连接问题。

此外,当我通过 SSH 连接到运行 Composer 的 Kubernetes 集群的其中一个工作人员时,我可以毫无问题地发送电子邮件

将 NetworkPolicy 添加到 Kubernetes 集群以允许来自集群的所有出口也没有区别。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
Metadata:
  name: allow-all-egress
spec:
  podSelector: {}
  egress:
  - {}
  policyTypes:
  - Egress

那么可能是什么问题?

毕竟,这应该很简单,因为它是 GCP 推荐的用于从 Composer 发送电子邮件的服务,并且可能应该更彻底地记录下来。

非常感谢您的所有建议/帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)