我想使用Python中的Azure函数将JSON数据作为. json文件上传到Azure存储Blob。
因为我使用的是Azure函数,而不是实际的服务器,所以我不想(也可能无法)在本地内存中创建一个临时文件,并使用Azure blob存储客户端库v2将该文件上载到Azure blob存储。1对于Python(这里有参考链接)。因此,我想为Azure函数使用输出blob存储绑定(这里有参考链接)。
我正在一个带有HTTP触发器的Azure函数中测试此功能。我通过输入blob存储绑定(工作正常)接收Azure blob,处理它,并通过上传一个覆盖它的新Azure blob来更新它(这就是我需要的帮助)。我的function.json文件是这样的:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"name": "inputblob",
"type": "blob",
"path": "{containerName}/{blobName}.json",
"connection": "MyStorageConnectionAppSetting",
"direction": "in"
},
{
"name": "outputblob",
"type": "blob",
"path": "{containerName}/{blobName}.json",
"connection": "MyStorageConnectionAppSetting",
"direction": "out"
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
我的Python代码是这样的:
import logging
import azure.functions as func
import azure.storage.blob
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
import json, os
def main(req: func.HttpRequest, inputblob: func.InputStream, outputblob: func.Out[func.InputStream]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
# Initialize variable for tracking any changes
anyChanges= False
# Read JSON file
jsonData= json.loads(inputblob.read())
# Make changes to jsonData (omitted for simplicity) and update anyChanges
# Upload new JSON file
if anyChanges:
outputblob.set(jsonData)
return func.HttpResponse(f"Input data: {jsonData}. Any changes: {anyChanges}.")
然而,这根本不起作用,抛出以下错误(截图):
价值函数。“退出”是不可订阅的
我错过了什么?
您想要的是字节
或str
,而不是输入流
,如下所示:
def main(inputblob: func.InputStream, outputblob: func.Out[bytes], context: func.Context):
...
# Write to output blob
outputblob.set(jsonData)
InputStream
表示一个输入Blob。
查看str
的此示例,以及bytes
的此示例。
后期更新:
调用json。loads()
返回一个字典,出于某种原因,输出blob。set()
吓了一跳,需要一些把手,比如:
def main(req: func.HttpRequest,
inputblob: func.InputStream,
outputblob: func.Out[bytes]) -> func.HttpResponse:
jsonData = json.loads(inputblob.read())
outputblob.set(str(jsonData))
return func.HttpResponse(f"Input JSON: {jsonData}")
这应该行得通(至少在func
version2.7.1948
上可以)。
我是Azure Databricks的新手,我的导师建议我在 https://aischool.microsoft.com/en-us/machine-learning/learning-paths/AI-platform-engineering-bootcamps/custom-machine-learning-bootcamp 据我所知,Azure Blob存储还没有设置,因此我运行的代码(以
我正在尝试创建一个Azure Function(. NET核心)以从存储帐户检索SaS,并且难以理解为什么我无法访问存储。 函数签名: 索引方法“GetBlobSaS”Microsoft时出错。蔚蓝色的网络作业。主机:无法将参数“storage”绑定到类型StorageAccount。确保绑定支持参数类型。如果您使用的是绑定扩展(例如Azure Storage、ServiceBus、Timers等
我需要将特定的Postgres表定期自动备份到Azure blob存储中。< br >我使用“Azure database for Postgres”作为数据库。< br >在这种情况下,我有一个包含数百万时间序列数据的表。因此,我按天对数据进行了分区。现在,我只想保留最近几天的分区并分离 对于正常的数据库操作,我使用的是用C#编写的azure函数(使用NPgsql nuget包)。 有没有办法以
我正在创建多个 Azure 函数(HTTP 触发器)来从 blob 存储中获取内容,获取单个 blob 的几个元数据值,并获取特定 blob 类型的所有元数据属性。 我对使用绑定与使用blob存储的rest API与azure-storage sdk感到困惑。 创建azure函数时使用哪种方法最好?如果您能给我指出一些此类示例留档,那也会很有帮助。谢谢你。
告诉我如何在Azure存储帐户中存储PostgreSQL数据库数据。PostgreSQL部署到Azure容器实例。当我重新启动Azure容器实例时,所有数据都会消失。Dockerfile 来自Timescale/Timescaledb:Latest-PG12 az容器创建--resource-group test-env--name test-env--image test-env.azureca
我已经定义了一个Azure函数,它使用Azure存储队列触发器和Blob输入绑定。我已经为队列触发器准备了一个POCO,但是如何在blob输入绑定中将该POCO与绑定表达式一起使用呢? 建筑: Azure功能2。x POCO: Azure功能: 队列消息: 错误消息: 系统私有的CoreLib:执行函数profileImageUpload时发生异常。微软蔚蓝色的WebJobs。主机:异常绑定参数“