亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 PubSub 訪問 AutoML 的 403 權限被拒絕

從 PubSub 訪問 AutoML 的 403 權限被拒絕

慕絲7291255 2021-06-01 17:49:30
我正在嘗試使用Google Cloud Platform AutoMLusing構建應用程序Python。我的整體代碼流程如下所示:用戶交互--> 發送到 PubSub 的數據--> 回調調用我的 AutoML--> 結果調用的代碼段pubsub如下所示:blob=blob+bytes(doc_type,'utf-8')        publisher.publish(topic,blob)        future=subscriber.subscribe(subscription,callback=callback)        #flash("The object is "+future,'info')        try:            future.result()        except Exception as ex:            subscriber.close()在PubSub回調中:def callback(message):     new_message=message.data     display_name,score=predict_value(new_message,"modelID","projectid",'us-central1')     message.ack()我predict_value得到model_id,project id并計算region并執行預測。當我直接調用predict_value而不使用PubSub它時工作正常。如果我這樣做,我會收到以下錯誤:google.api_core.exceptions.PermissionDenied: 403 Permission 'automl.models.predict' denied on resource 'projects/projectID/locations/us-central1/models/' (or it may not exist).請幫我解決問題
查看完整描述

2 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

非常感謝您的所有回復。我剛剛使用下面的代碼片段示例解決了這個問題


def receive_messages_synchronously(project, subscription_name):

"""Pulling messages synchronously."""

# [START pubsub_subscriber_sync_pull]

# project           = "Your Google Cloud Project ID"

# subscription_name = "Your Pubsub subscription name"

subscriber = pubsub_v1.SubscriberClient()

subscription_path = subscriber.subscription_path(

    project, subscription_name)


# Builds a pull request with a specific number of messages to return.

# `return_immediately` is set to False so that the system waits (for a

# bounded amount of time) until at lease one message is available.

response = subscriber.pull(

    subscription_path,

    max_messages=3,

    return_immediately=False)


ack_ids = []

for received_message in response.received_messages:

    print("Received: {}".format(received_message.message.data))

    ack_ids.append(received_message.ack_id)


# Acknowledges the received messages so they will not be sent again.

subscriber.acknowledge(subscription_path, ack_ids)

# [END pubsub_subscriber_sync_pull]

原因是創建的訂閱使用拉取請求。我猜使用的回調方法概念主要是為了“推送”,這可能是因為我沒有提供端點和令牌來發布消息。希望我的猜測是正確的。也讓我知道你的看法。


查看完整回答
反對 回復 2021-06-09
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

這可能是由于以下兩個因素之一造成的:

  • 向 AutoML API 發送請求時使用的憑據無效 - pubsub 很可能在其他上下文中執行并且無法獲取默認憑據

  • 無效的模型資源名稱(確保它是正確的) - 它應該是這樣的:“projects/12423534/locations/us-central1/models/23432423”


查看完整回答
反對 回復 2021-06-09
  • 2 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號