【发布时间】:2022-07-04 21:23:58
【问题描述】:
我在 Google Cloud Run 上部署了一个 gRPC 服务,我想从 Composer 调用它。
我已将 roles/iam.serviceAccountTokenCreator 角色分配给我的 composer 工作节点正在运行的服务帐户,并且我没有挂载任何自定义服务密钥文件或设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量。
在气流 gRPC 挂钩中使用 JWT_GOOGLE authentication option 我收到以下错误:
[2022-05-31 14:20:16,082] {grpc.py:90} INFO - Calling gRPC service
[2022-05-31 14:20:16,097] {taskinstance.py:1152} ERROR - 'Credentials' object has no attribute 'signer_email'
Traceback (most recent call last):
File "/usr/local/lib/airflow/airflow/models/taskinstance.py", line 985, in _run_raw_task
result = task_copy.execute(context=context)
File "/usr/local/lib/airflow/airflow/providers/grpc/operators/grpc.py", line 95, in execute
for response in responses:
File "/usr/local/lib/airflow/airflow/providers/grpc/hooks/grpc.py", line 136, in run
with self.get_conn() as channel:
File "/usr/local/lib/airflow/airflow/providers/grpc/hooks/grpc.py", line 104, in get_conn
jwt_creds = google_auth_jwt.OnDemandCredentials.from_signing_credentials(credentials)
File "/opt/python3.6/lib/python3.6/site-packages/google/auth/jwt.py", line 695, in from_signing_credentials
kwargs.setdefault("issuer", credentials.signer_email)
AttributeError: 'Credentials' object has no attribute 'signer_email'
[2022-05-31 14:20:16,100] {taskinstance.py:1196} INFO - Marking task as FAILED. dag_id=example_dag, task_id=example_task, execution_date=20220531T135709, start_date=20220531T142015, end_date=20220531T142016
[2022-05-31 14:20:23,826] {local_task_job.py:102} INFO - Task exited with return code 1
有人知道我的凭据如何/为什么不包括我需要的字段吗?
【问题讨论】:
-
您可以手动将服务帐户附加到 Cloud Run 和authenticate。让我知道这是否有帮助。
-
我不确定这种方法是否相关 - 我们在 GCP Composer 中运行,因此气流工作人员可以访问理论上在此处具有正确权限的服务帐户
-
好像是认证的问题。如果您尝试使用服务帐户向 IAP 中的 Cloud Composer API 进行身份验证,则需要获取 OIDC 令牌以进行身份验证,此link 中给出了步骤@ 如果有帮助,请告诉我。
-
请查看我在问题中包含的链接 - 这就是 Airflow 的 gRPC 挂钩尝试获取帐户的方式,我希望他们的代码适用于我正在使用的服务帐户 - 我没有除此以外,不需要进行任何额外的身份验证,因为这就是气流连接和挂钩的用途
-
您好 TCB,看来这个问题需要进一步调查,所以如果您有支持计划,请创建一个新的GCP support case。
标签: google-cloud-platform airflow google-cloud-composer google-iam