我正在研究Google课堂发布/订阅通知。我的任务是使用Rest API创建发布/订阅主题和订阅。我已经成功创建了发布/订阅主题,但是当我为创建的主题设置IAM策略/权限时,我会收到错误消息。
API URL:- https://pubsub.googleapis.com/v1/projects/project-abc/topics/xyz-topic-101:setIamPolicy API方法:- POST API请求正文:-
{
"policy": {
"bindings": [
{
"role": "roles/owner",
"members": [
"abc@domain.com",
"classroom-notifications@system.gserviceaccount.com"
]
},
{
"role": "roles/pubsub.admin",
"members": [
"abc@domain.com",
"classroom-notifications@system.gserviceaccount.com"
]
},
{
"role": "roles/pubsub.editor",
"members": [
"abc@domain.com",
"classroom-notifications@system.gserviceaccount.com"
]
},
{
"role": "roles/pubsub.publisher",
"members": [
"abc@domain.com",
"classroom-notifications@system.gserviceaccount.com"
]
},
{
"role": "roles/pubsub.subscriber",
"members": [
"abc@domain.com",
"classroom-notifications@system.gserviceaccount.com"
]
}
],
"version": 1
}
}
API响应:- { “错误”:{ “代码”:400, “ message”:“成员abc@domain.com的类型未知。请为该成员设置有效的类型前缀。”, “状态”:“ INVALID_ARGUMENT” } }
我已遵循以下Google文档 链接:- https://cloud.google.com/pubsub/docs/reference/rest/v1/Policy#Binding 我不明白为什么这条消息来了。请分享您的建议和反馈。
答案 0 :(得分:0)
不确定这是否有帮助,但是我发现您需要set the member type才能起作用。
来自文档:
格式应为user | group | serviceAccount:email或domain:domain。
因此,请尝试按以下前缀添加前缀:serviceAccount:abc@domain.com
,或您的成员类型是什么。
答案 1 :(得分:0)
不幸的是,我目前无法发表评论,但 Voy 的回答解决了这个问题。您必须添加成员的类型。以下部分摘自谷歌云文档:
示例:user:test-user@gmail.com、group:admins@example.com、serviceAccount:test123@example.domain.com 或 domain:example.domain.com。 也可以是以下特殊值之一: allUsers - 代表互联网上任何人的特殊标识符,无论是否拥有 Google 帐户。 allAuthenticatedUsers - 代表使用 Google 帐户或服务帐户进行身份验证的任何人的特殊标识符。
答案 2 :(得分:0)
就我而言,我尝试使用服务帐户名称,但它希望在前缀中看到帐户类型。
我用过的:
xyz@gcp-airflow-k8s.iam.gserviceaccount.com
预期:
serviceaccount:xyz@gcp-airflow-k8s.iam.gserviceaccount.com