如何验证 Google Cloud Endpoints 服务 URL 的所有权?

2023-12-20

我已经设置了 Google Cloud Endpoints 项目,并且可以调用 http/https 请求。 Endpoints 为我提供了可以使用的 MY_API.endpoints.MY_PROJECT.cloud.goog 域名。我正在使用具有 HTTP/JSON 到 gRPC 转码功能的 gRPC Cloud Endpoints。

它部署在Google Kubernetes Engine上(部署yaml脚本附在最后)。

当我尝试使用该 URL 创建推送订阅时,出现下一个错误:

“提供的 HTTP URL 未在订阅的父级中注册 项目(url =“https://MY_API.endpoints.MY_PROJECT.cloud.goog/v1/path”,project_id =“PROJECT_ID”)。

我的 gcloud 通话:

gcloud pubsub subscriptions create SUB_NAME --topic=projects/MY_PROJECT/topics/MY_TOPIC --push-endpoint="https://MY_API.endpoints.MY_PROJECT.cloud.goog/v1/path"

我尝试使用该 DNS 名称创建 Cloud DNS 公共区域并设置相应的记录。但我仍然无法在 Google Search Console 中验证所有权。

问题是如何为 MY_API.endpoints.MY_PROJECT.cloud.goog 域设置 DNS TXT 记录以验证所有权?或者如何以其他方式将 Pubsub 推送订阅与 Cloud Endpoints gRPC 结合使用?

如果我能够更改转换为 HTTP 的 gRPC 响应的元或标头,我可以验证域的所有权。但我怀疑是否有办法。


我用于部署的 Kubernetes 脚本(如果有帮助的话)。

apiVersion: v1
kind: Service
metadata:
  name: GKE_SERVICE_NAME
spec:
  ports:
  # Port that accepts gRPC and JSON/HTTP2 requests over HTTP.
  - port: 80
    targetPort: 9000
    protocol: TCP
    name: http2
  selector:
    app: GKE_SERVICE_NAME
  type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: GKE_SERVICE_NAME
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: GKE_SERVICE_NAME
    spec:
      containers:
      - name: esp
        image: gcr.io/endpoints-release/endpoints-runtime:1
        args: [
          "--http2_port=9000",
          "--service=MY_API.endpoints.MY_PROJECT.cloud.goog",
          "--rollout_strategy=managed",
          "--backend=grpc://127.0.0.1:50051"
        ]
        ports:
          - containerPort: 9000
      - name: MY_CONTAINER_NAME
        image: gcr.io/MY_PROJECT/IMAGE_NAME:v1
        ports:
          - containerPort: 50051

最终,您的目标是将 Cloud Pub/Sub 推送到 GKE 上的容器。有几种方法可以做到这一点

  • Domain ownership validation https://cloud.google.com/pubsub/docs/push#domain_ownership_validation, as you've discovered:
    • 你可以尝试用DNS来做,有一个为 cloud.goog 域配置 DNS 的指南 https://cloud.google.com/endpoints/docs/openapi/cloud-goog-dns-configure.
    • 您可以尝试使用其中之一来完成此操作,其中包括托管来自域的某些类型的 HTML 或 Javascript 片段等方法。不过,这可能很棘手,因为我不知道如何使 Cloud Endpoints 提供静态 HTML 或 Javascript 内容。它提供响应开放API格式 https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md,本质上是 JSON。
    • 您是否尝试过将 Cloud Pub/Sub 订阅和 cloud.goog 域放在同一个项目中?在这种情况下,它可能已被视为经过验证的域。
  • 由于您已经在使用 Google Kubernetes Engine,因此请使用 Cloud Run,或者基于 Google Kubernetes Engine 的 Cloud Run https://cloud.google.com/run/docs/gke/setup。 Cloud Run 和 GKE 上的 Cloud Run 之间存在差异,但两者都将运行 Kubernetes 容器。 Cloud Run 上的推送端点不需要域所有权验证(我不确定这是否也涵盖 GKE 上的 Cloud Run)。您还可能获得其他有趣的好处,因为 Cloud Run 本质上是为了解决从容器提供推送端点的用例而设计的。例如,它会为您进行自动缩放和监控。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何验证 Google Cloud Endpoints 服务 URL 的所有权? 的相关文章

随机推荐

  • 如何求一系列数字的最小公倍数?

    给定一个由两个数字组成的数组 让它们定义一系列数字的开始和结束 例如 2 6 表示范围 2 3 4 5 6 我想编写 javascript 代码来查找范围的最小公倍数 我下面的代码仅适用于小范围 而不是类似的 1 13 即范围 1 2 3
  • SSH 握手抱怨缺少主机密钥

    我正在尝试连接到远程主机并检查文件是否存在 在这个阶段 我只是尝试连接 但出现错误 2017 08 01 18 16 39 unable to connect ssh handshake failed ssh required host k
  • 如何并行化 Azure ML 服务计算集群上的工作?

    我可以使用计算集群将作业提交到 Azure ML 服务 它运行良好 并且自动缩放与自定义环境的良好灵活性相结合似乎正是我所需要的 然而 到目前为止 所有这些作业似乎只使用集群的一个计算节点 理想情况下 我希望使用多个节点进行计算 但我看到的
  • 当我在 android 中使用哈希映射时显示警告(使用新的 SparseArray

    我是 Android 开发新手 在我使用的 Android 应用程序中HashMap 但我收到警告 Use new SparseArray
  • URL 中的段落字符?

    我刚刚遇到了这个Google 应用引擎文章 http code google com googleapps appsscript articles appengine html在某些 URL 中使用有趣的反向 P 字符 查看第一个代码框顶部
  • 使用 FastObjImporter 在场景中加载并显示 obj 模型

    在我的 Unity 项目中 我想使用在互联网上找到的 FastObjImporter 类将 obj 放入场景中 我是否必须创建一个空的 GameObject 并将已处理的 obj 分配给它 尝试使用空的游戏对象 GameObject go
  • 如何使用 Flutter 在 Android 和 iOS 上实现振动?

    我正在尝试使用 Flutter 在单击按钮时实现振动 我发现说实话非常困难 我尝试使用以下软件包但未成功 振动 https pub dev packages vibration and vibrate https pub dev packa
  • 无法使用 Jekyll 生成任何内容

    当我运行 Jekyll 时 它不会生成任何内容 我看到的输出 Configuration from home mbsheikh techtraits techtraits blog config yml Auto regenerating
  • 调用纯虚函数[重复]

    这个问题在这里已经有答案了 可能的重复 在构造函数中调用虚函数 https stackoverflow com questions 962132 calling virtual functions inside constructors 看
  • JAXB 是否存在内存利用率问题?

    我使用 JAXB 进行 xml 解析 是否存在任何性能或内存利用率问题 需要注意的一件事是JAXBContext newInstance 是一个非常慢的操作 这是发生大量反射和类生成的地方 导致 duffymo 提到的烫发空间问题 值得庆幸
  • 如果我仅使用 JSON.Net,我可以安全地删除 C# 模型类中指定后缀的字段和属性吗

    我有一个 C 应用程序 我有一个从 xsd 生成的类 该类如下所示 public class Transaction public bool amountSpecified get set public double amount get
  • Ocaml 中查找树深度的尾递归函数

    我有一个类型tree定义如下 type a tree Leaf of a Node of a a tree a tree 我有一个函数可以找到树的深度 如下所示 let rec depth function Leaf x gt 0 Node
  • 并行化 tf.data.Dataset.from_generator

    我有一个不平凡的输入管道from generator非常适合 dataset tf data Dataset from generator complex img label generator tf int32 tf string dat
  • 我可以在 Excel VBA 中捕获并模拟 KeyDown 事件吗?

    阿伦 辛格 Arun Singh 对类似问题给出了很好的答案 编辑单元格时按下按键时是否会触发任何事件 https stackoverflow com questions 11153995 is there any event that f
  • 自动居中 vim 搜索结果

    当我使用 vim 或 gvim 进行搜索时 光标在窗口内的最终定位有些随机 经常落在窗口的最后一行 或第一行 搜索突出显示有所帮助 但必须在屏幕上四处寻找才能找到光标仍然很麻烦 而且有点讽刺的是 在 vim 在一些兆字节长的日志文件中找到下
  • IE11 阻止 ActiveX 运行

    我们的网络浏览器插件在 IE9 和 IE10 中工作正常 但在 IE11 中该插件既不被识别为附加组件 也不被允许运行 就好像IE11不再支持ActiveX一样 当然有解决方法 但是我们需要改变什么 注意 这个问题是作为插件的开发者提出的
  • Phonegap 相机返回带有黑条的照片

    我正在使用 Phonegap 3 4 当我在 iPhone 上拍摄风景照片时 我得到的照片顶部和底部有黑条 这是我的相机配置选项 var cameraOptions correctOrientation true quality 90 de
  • 如何更改电子邮件的 html5 模式错误消息

    Html5 required 属性通常会添加错误消息 请填写此字段 并且可以使用以下代码轻松更改它 oninvalid setCustomValidity Custom text in another language oninput se
  • 如何将记录插入到sql server express数据库表中?

    我正在尝试将文本框值插入到名为的数据库表中site list The site list表包含两列id and site name id设置为自动递增 这是我正在尝试的代码 执行时没有错误 但数据未显示在表中 SqlConnection c
  • 如何验证 Google Cloud Endpoints 服务 URL 的所有权?

    我已经设置了 Google Cloud Endpoints 项目 并且可以调用 http https 请求 Endpoints 为我提供了可以使用的 MY API endpoints MY PROJECT cloud goog 域名 我正在