• 【Azure 应用服务】Storage Queue触发Azure Function时报错 The input is not a valid Base64 string


    问题描述

    创建一个PowerShell脚本的Azure Function,触发方式为 Storage Queue。但执行函数结果一直失败 (Failed).

    错误消息为:

    Executed 'Functions.QueueTrigger1' (Failed, Id=..., Duration=30ms) The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.

    Funciton 代码:

    # Input bindings are passed in via param block.
    param([string] $QueueItem, $TriggerMetadata)
    
    # Write out the queue message and metadata to the information log.
    Write-Host "PowerShell queue trigger function processed work item: $QueueItem"
    Write-Host "Queue item expiration time: $($TriggerMetadata.ExpirationTime)"
    Write-Host "Queue item insertion time: $($TriggerMetadata.InsertionTime)"
    Write-Host "Queue item next visible time: $($TriggerMetadata.NextVisibleTime)"
    Write-Host "ID: $($TriggerMetadata.Id)"
    Write-Host "Pop receipt: $($TriggerMetadata.PopReceipt)"
    Write-Host "Dequeue count: $($TriggerMetadata.DequeueCount)"

    通过向Storage Queue中添加消息时候触发:

    az storage message put --content "This is a function test message" 

    问题分析

    根据错误消息,Function (Storage Queue)触发的消息需要 Base64编码,如发送 "This is a function test message"  这段消息,需要在发送消息时候转换为base64编码。

    在CMD中调用PowerShell进行类型转换:

    powershell "[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(\"This is a function test message\"))"

    在Powershell中直接转换:

    [convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("This is a function test message"))

    所以,修改后的向Storage Queue中添加消息的命令为:

    $queuemsg = [convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("This is a function test message"))
    
    az storage message put --content $queuemsg 

    参考资料

    适用于 Azure Functions 的 Azure 队列存储触发器: https://docs.azure.cn/zh-cn/azure-functions/functions-bindings-storage-queue-trigger?tabs=powershell#encoding

  • 相关阅读:
    html 按钮跳转问题(及其相关)
    用JS写的一个简单的时钟
    JS里面function和Function的区别
    Sharepoint常见概念
    整理个人学习方向,技术列表,通过这个来明确方向
    关于SqlServer的内连接,外链接以及left join,right join之间的一些问题与区别。
    display:none与visibility:hidden的区别
    给自己立下一个flag先
    linux 打包和压缩的概念和区别
    Hadoop和Spark的比较区别
  • 原文地址:https://www.cnblogs.com/lulight/p/15951483.html
Copyright © 2020-2023  润新知