如何解决如何指定VS代码绑定以将文件从/ tmp上传到Azure函数中的Blob存储
我有一个用Python 3.8编写的Azure函数,该函数在/ tmp中创建一个文本文件。我想将其上传到Blob存储。我被迫在VS Code中进行本地开发,并且需要在function.json中进行绑定。问题是绑定需要我指定一个表示blob的数据项,并且由于我是通过将文本文件上载到Storage帐户中的Container从头开始创建blob的,所以我没有任何此类数据项码。所以我总是出错。
具体地说,我的存储帐户中有一个名为“ swsw-2020”的容器。这是我用来将文件从/ tmp上传到该容器的代码。
try:
from azure.storage.blob import BlobServiceClient,BlobClient # noqa
# Create the BlobServiceClient that is used to call the Blob service for the storage account
blob_service_client = BlobServiceClient.from_connection_string(conn_str=connection_string)
# Upload the output file,use destination for the blob name
blob_client = blob_service_client.get_blob_client(
container=container_name,blob=destination)
with open(filename,"rb") as data:
blob_client.upload_blob(data)
except Exception as err:
log_error(f"Failed to upload '{filename}' to Azure Blob Storage: {err}")
这是我的function.json代码段,这显然是错误的,但我完全不知道如何正确设置。
{
"type": "blob","direction": "out","name": "data","path": "swsw-2020","connection": "AzureWebJobsStorage"
}
我完全愿意采用更好的方法来做到这一点。我只想将/ tmp中的TXT文件上传到存储帐户中“ swsw-2020”容器中的Blob中。谢谢!
解决方法
更新:
您可以使用一种简单的方法来动态设置Blob名称:
这是function.json:
{
"scriptFile": "__init__.py","bindings": [
{
"authLevel": "anonymous","type": "httpTrigger","direction": "in","name": "req","route": "{test}","methods": [
"get","post"
]
},{
"type": "http","direction": "out","name": "$return"
},{
"name": "outputblob","type": "blob","path": "test1/{test}.txt","connection": "str","direction": "out"
}
]
}
然后,例如,如果您要创建一个名为1.txt的blob,则可以按如下所示执行函数:http://localhost:7071/api/1
原始答案:
您可以先上传文件,然后再将其存储在某个文件夹中。(这是因为可能会遇到一些有关访问权限的问题。)
似乎您没有使用输出绑定,只是手动连接到存储。
应该这样使用输出绑定:
_init_.py
import logging
import azure.functions as func
def main(req: func.HttpRequest,outputblob: func.Out[func.InputStream],) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
testdata = 'this is test.'
outputblob.set(testdata)
name = req.params.get('name')
return func.HttpResponse(f"This is output binding test,"+name)
function.json
{
"scriptFile": "__init__.py","path": "test1/test.txt","direction": "out"
}
]
}
让我知道是否还有更多疑问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。