我正在尝试创建一个云功能,该功能将一些数据(来自Firestore的文档)保存到云存储中。
以前曾编写过一些云功能,但对云存储,存储桶等来说是新的。 根据我的读物,我必须将这些数据“流式传输”到存储桶中。
我希望看到一个简短的代码片段:)
答案 0 :(得分:1)
对于您要实现的目标,应该不会太复杂,所以希望能为您提供帮助。
要执行此操作,我将按照文章Backup Firestore data to storage bucket on a schedule in GCP中介绍的示例进行操作-如果您感兴趣,可以完全按照其进行操作-着重从Firestore到Cloud Storage的上传。我将说明要使用哪些部分以及如何使用它们,以达到您的理想状态
创建了Cloud Storage存储桶后-它应在设置中配置Multi-regional
和Nearline
-您需要使用下面的代码,如下所示。
index.js
文件:
const firestore = require('@google-cloud/firestore');
const client = new firestore.v1.FirestoreAdminClient();
// Replace BUCKET_NAME
const bucket = 'gs://<bucket-id>'
exports.scheduledFirestoreBackup = (event, context) => {
const databaseName = client.databasePath(
process.env.GCLOUD_PROJECT,
'(default)'
);
return client
.exportDocuments({
name: databaseName,
outputUriPrefix: bucket,
// Leave collectionIds empty to export all collections
// or define a list of collection IDs:
// collectionIds: ['users', 'posts']
collectionIds: [],
})
.then(responses => {
const response = responses[0];
console.log(`Operation Name: ${response['name']}`);
return response;
})
.catch(err => {
console.error(err);
});
};
package.json
文件:
{
"dependencies": {
"@google-cloud/firestore": "^1.3.0"
}
}
这些文件应使用Cloud Function中的配置创建,如下所示:唯一名称; Cloud Sub/Pub
作为触发器;主题名称类似于或等于initiateFirestoreBackup
;使用Node.js,源代码将是上述文件,其功能是执行scheduledFirestoreBackup
。
上述代码足以让您从Firestore导出到Cloud Storage,因为它会获取所有集合-或者您可以定义详细信息-并将其发送到您已经创建的存储桶。< / p>
此外,如果您需要有关使用Cloud Functions将文件上传到Cloud Storage的更多信息,也可以在此处进行检查:Uploading files from Firebase Cloud Functions to Cloud Storage
让我知道信息是否对您有帮助!
答案 1 :(得分:1)
感谢@gso_gabriel,我能够为我的文档创建部分备份。 对于任何有兴趣的人,这是我的代码的简化版本:
#!/usr/bin/env python3
import cv2
import numpy as np
def useLUT(im, grayList):
"""Make LUT and apply to image"""
LUT = np.arange(256, dtype=np.uint8) # Straight no-op LUT 0..255
LUT[grayList] = 255 # Values in list get changed to 255
res = cv2.LUT(im, LUT) # Apply LUT
return res
def useIsin(im, grayList):
"""Make pixels in grayList into white"""
im[np.isin(im, grayList)] = 255
return im
# Load image as greyscale
im = cv2.imread('image640.png',0)
# Your graylist
grayList = [102,103,104,105,106,107,108,109,110,111,112,113,114,115]
# Time and compare results
%timeit resA = useIsin(im, grayList)
%timeit resB = useLUT(im, grayList)