环境变量不接受 azure



我在终端中为 azure 定义了环境变量,如下所示,

SET AZURE_STORAGE_ACCOUNT=accountname
SET SAS_TOKEN="sr=c&sp=rwl&sig=signatureKey%3D&sv=2017-04-17&se=2018-03-10"

定义变量后,我在 azure blob 存储函数中调用了这些变量,如下所示:

AZURE_STORAGE_ACCOUNT= process.env.AZURE_STORAGE_ACCOUNT;
SAS_TOKEN = process.env.SAS_TOKEN;
var blobUri = "http://"+AZURE_STORAGE_ACCOUNT+".blob.core.windows.net";
var blobService = azureStorage.createBlobServiceWithSas(blobUri, SAS_TOKEN).withFilter(new azureStorage.ExponentialRetryPolicyFilter());
blobService.createBlockBlobFromLocalFile('mycontainer', 'sparks-events-data', fileToWrite, function(error, result, response) {
if (!error) {
    console.log("upload successful..");
} else {
    console.log(error);
}});

当我在文件上面运行时,我收到类似错误

存储错误:服务器无法对请求进行身份验证。确保 授权标头的值格式正确,包括 签名。

但是当我直接在代码中调用 SAS 令牌时,它工作正常。我像这样使用

var sasKey = "sr=c&sp=rwl&sig=signatureKey%3D&sv=2017-04-17&se=2018-03-10";
var blobService = azureStorage.createBlobServiceWithSas(blobUri, sasKey ).withFilter(new azureStorage.ExponentialRetryPolicyFilter());

它对我来说效果很好。我需要将 SAS 令牌设置为环境变量。这是我错过的。请有人建议我解决这个问题。提前致谢,

export那些环境变量。导出变量会导致该变量被在该 shell 中启动的后续进程继承。

export SAS_TOKEN="..."  

在滚动自己的 env var 机密处理逻辑之前,您可能需要查看此 npm 包。作为一个民族,我们已经破解了这一点——
https://github.com/motdotla/dotenv

在 Windowsland 中,只需使用 set ,但请确保您的 Node 进程在同一终端窗口中启动:

C:lab> set KEY="secret"
C:lab> type app.js
let key = process.env.KEY;
console.log('KEY is ' + key);
C:lab> node app.js
KEY is "secret"

注意那些报价!

最新更新