首页 > 解决方案 > 由数据存储实体插入触发的 Google Cloud Function Storage

问题描述

我有一个数据存储实体。我想将它链接到存储桶(云存储),以便在每次插入数据存储实体后触发存储功能。我希望函数控制台记录插入的值。文档真的很轻,我没有找到任何教程。

我们如何做到这一点?谢谢

标签: google-cloud-platformgoogle-cloud-datastoregoogle-cloud-storagegoogle-cloud-functions

解决方案


首先,确保 Cloud Storage 存储桶与 Cloud Datastore 数据库位于同一区域内;否则,它将无法正常工作。Datastore 数据库的位置是项目的默认位置。

1.进入计算 > 云函数 > 创建函数以创建和部署将记录数据存储实体导出元数据的云函数。为函数命名,将触发器设置为Cloud Storage,并将事件类型设置为Finalize/Create

使用内联编辑器为您偏好的运行时编写源代码。我将使用 Node.JS 6 运行时和以下代码来记录 Datastore 实体导出:

exports.myfunction = (event, callback) => {
  const file = event.data;

  console.log(`  Event: ${event.eventId}`);
  console.log(`  Event Type: ${event.eventType}`);
  console.log(`  Bucket: ${file.bucket}`);
  console.log(`  File: ${file.name}`);
  console.log(`  Metageneration: ${file.metageneration}`);
  console.log(`  Created: ${file.timeCreated}`);
  console.log(`  Updated: ${file.updated}`);

  callback();
};

您可以在此处找到更多使用不同运行时的示例。

2.使用以下gcloud命令将默认命名空间中的 Cloud Datastore 实体导出到 Cloud Storage 存储桶。

gcloud datastore export --namespaces="(default)" gs://my-bucket

3.转到 Stackdriver > Logging > Logs,然后从第一个下拉列表中选择您创建的 Cloud Function。您应该会看到与此类似的输出:

Event: undefined   
Event Type: undefined   
Bucket: my-bucket  
File: 2018-12-02T15:15:59_98240/2018-12-02T15:15:59_98240.overall_export_metadata
Metageneration: 1 
Created: 2018-12-02T15:16:06.460Z  
Updated: 2018-12-02T15:16:06.460Z  
Function execution took 16 ms, finished with> status: 'ok'

推荐阅读