Google cloud platform 如何为不同的google云项目/组织创建pubsub日志接收器?

Google cloud platform 如何为不同的google云项目/组织创建pubsub日志接收器?,google-cloud-platform,gcloud,google-cloud-pubsub,stackdriver,google-cloud-stackdriver,Google Cloud Platform,Gcloud,Google Cloud Pubsub,Stackdriver,Google Cloud Stackdriver,我想定义将pubsub日志导出接收器从一个项目导出到另一个项目的步骤。作为第二个目标,我希望水槽能够架起组织间的桥梁。到目前为止,我已经按照gcloud帮助页面和中概述的步骤进行了操作 首先,我创建了一个水槽: # from project A gcloud logging sinks create \ <sink_name> \ pubsub.googleapis.com/projects/<project_B>/topics/<topic_nam

我想定义将pubsub日志导出接收器从一个项目导出到另一个项目的步骤。作为第二个目标,我希望水槽能够架起组织间的桥梁。到目前为止,我已经按照
gcloud
帮助页面和中概述的步骤进行了操作

首先,我创建了一个水槽:

# from project A
gcloud logging sinks create \
    <sink_name> \
    pubsub.googleapis.com/projects/<project_B>/topics/<topic_name> \
    --log-filter <filter>
来自项目A的
#
gcloud日志记录接收器创建\
\
pubsub.googleapis.com/projects//topics/\
--日志过滤器
CLI将成功返回,并提供一些有关为其创建的服务帐户设置权限的建议:

Created [https://logging.googleapis.com/v2/projects/<project_A>/sinks/<sink_name>].
Please remember to grant `serviceAccount:<new_user>@logging-<project_A_account_number>.iam.gserviceaccount.com` Pub/Sub Publisher role to the topic.
More information about sinks can be found at https://cloud.google.com/logging/docs/export/configure_export
已创建[https://logging.googleapis.com/v2/projects//sinks/].
请记住向主题授予`serviceAccount:@logging-.iam.gserviceaccount.com`发布/订阅发布者角色。
有关接收器的更多信息,请访问https://cloud.google.com/logging/docs/export/configure_export
按照这个建议,我为新服务帐户提供了该主题的相应权限

gcloud projects add-iam-policy-binding <project_B> \
    --member serviceAccount:<new_user>@logging-<project_A_account_numbe_id>.iam.gserviceaccount.com \
    --role roles/pubsub.publisher
gcloud项目添加iam策略绑定\
--成员服务帐户:@logging-.iam.gserviceaccount.com\
--角色/pubsub.publisher
此命令返回时没有问题

尽管看起来一切正常,但水槽中没有圆木流过

以下是一些线索:日志查看器上的导出选项卡报告接收器中的权限错误。“项目活动”选项卡报告权限问题


有什么办法可以让这一切顺利进行吗?是否可以将此概括为从其他gcloud组织将日志发送到此项目中的接收器?

我已经能够重现您想要的场景。让我为场景描述设置基础:

  • 项目A(存储我的日志的地方):项目A
  • 项目B(其中我的发布/子主题和订阅为):项目B
  • 主题:项目/project-b/topics/myTopic
  • 订阅:mySub
  • 接收器:测试接收器
然后,这是我遵循的处理方法:

  • 在项目A中:在谷歌云控制台的日志记录>日志选项卡中创建日志过滤器
  • 使用下图中的元素创建导出(记住将pubsub.googleapis.com/附加到其他项目中的主题名称中):

  • 移动到导出选项卡,复制编写器标识,该标识应具有格式测试-sink@XXXXXXXX.iam.gserviceaccount.com

  • 在项目B中:转到控制台中的IAM&admin>IAM选项卡,添加一个新成员,该成员是在步骤3中启用角色发布/订阅编辑器时获得的上一个服务帐户

  • 使用命令
    gcloud beta pubsub subscriptions Create--topic myTopic mySub

  • 执行一些操作,使您在项目A中指定的筛选器读取日志

  • 使用命令
    gcloud beta pubsub subscriptions pull mySub
    ,使用订阅写入主题的日志

  • 在那里,您将在项目B中找到从项目A写入tropic的日志。我从一个简单的应用程序引擎应用程序(因此使用适当的日志过滤器搜索应用程序引擎日志)中复制了相同的场景,当我向应用程序引擎应用程序发出请求时,一些日志被创建并写入myTopic,我可以使用mySub阅读


    关于你的第二个问题,我不能确定这个过程是否适用于跨组织场景,但我看不出有任何问题。

    我已经能够重现你想要的场景。让我为场景描述设置基础:

    • 项目A(存储我的日志的地方):项目A
    • 项目B(其中我的发布/子主题和订阅为):项目B
    • 主题:项目/project-b/topics/myTopic
    • 订阅:mySub
    • 接收器:测试接收器
    然后,这是我遵循的处理方法:

  • 在项目A中:在谷歌云控制台的日志记录>日志选项卡中创建日志过滤器
  • 使用下图中的元素创建导出(记住将pubsub.googleapis.com/附加到其他项目中的主题名称中):

  • 移动到导出选项卡,复制编写器标识,该标识应具有格式测试-sink@XXXXXXXX.iam.gserviceaccount.com

  • 在项目B中:转到控制台中的IAM&admin>IAM选项卡,添加一个新成员,该成员是在步骤3中启用角色发布/订阅编辑器时获得的上一个服务帐户

  • 使用命令
    gcloud beta pubsub subscriptions Create--topic myTopic mySub

  • 执行一些操作,使您在项目A中指定的筛选器读取日志

  • 使用命令
    gcloud beta pubsub subscriptions pull mySub
    ,使用订阅写入主题的日志

  • 在那里,您将在项目B中找到从项目A写入tropic的日志。我从一个简单的应用程序引擎应用程序(因此使用适当的日志过滤器搜索应用程序引擎日志)中复制了相同的场景,当我向应用程序引擎应用程序发出请求时,一些日志被创建并写入myTopic,我可以使用mySub阅读


    关于你的第二个问题,我无法确定这个过程是否适用于跨组织场景,但我看不出有任何问题。

    Matt,你的gcloud命令创建一个接收器并将发布者角色授予接收器使用的服务帐户看起来是正确的。你犯的错误是错误的