2017-07-18 65 views
1

我正在使用隊列觸發器傳遞一些有關我想使用Azure函數(我使用python)運行的作業的數據。部分數據是我想從blob存儲中提取的文件的名稱。因此,在輸入綁定中聲明一個文件路徑/名稱似乎不是正確的方向,因爲函數在獲取隊列觸發器之前不會有文件名。訪問沒有綁定的Blob存儲?

我嘗試過的一種方法是使用azure存儲sdk,但我不確定如何處理Azure函數內的身份驗證。

是否有另一種方法來解決這個問題?

回答

1

在Function.json中,blob輸入綁定可引用隊列有效內容中的屬性。隊列有效負載需要是JSON對象 由於這是function.json,它適用於所有語言。

參見官方文檔在https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings

例如,在你function.json,

{ 
    "name": "imageSmall", 
    "type": "blob", 
    "path": "container/{filename}", 
} 

如果你的隊列消息的有效載荷是:

{ 
"filename" : "myfilename" 
} 

然後{文件名}令牌在blob的路徑表達式中會被替換。

+0

這是一些黑魔法天藍色的引擎蓋下。謝謝! – apengwin

0

通常,您將連接字符串/帳戶密鑰存儲在功能應用程序的應用程序設置中,然後通過訪問環境變量來讀取它們。我沒有在Azure中使用Python,但我相信,看起來像

connection = open(os.environ['ConnectionString']).read() 

我發現蟒蛇功能,做你要求什麼的one example:隊列觸發+ BLOB操作。

0

存儲祕密可以(也)使用應用程序設置完成。

在Azure中,轉到Azure功能應用程序服務,然後單擊「應用程序設置」。然後,向下滾動到「應用程序設置」列表。該列表由鍵值對組成。添加您的密鑰,例如MY_CON_STR和實際連接字符串作爲值。

不要忘記點擊此時

保存現在,在您的應用程序(你在這個例子功能),可以加載使用其密鑰存儲的值。例如,在Python中,你可以使用:

os.environ['MY_CON_STR']

注意,由於設置不保存在本地,你必須從內部Azure中執行它。不幸的是,Azure功能應用程序不包含web.config文件。