NodeJS 如何将curl输出直接发送到Azure存储?

piok6c0g  于 2023-01-30  发布在  Node.js
关注(0)|答案(2)|浏览(141)

我尝试使用bash使用curl请求发送下载的文件:

for secao in $tipo_dou;
do
    download="curl -k --silent -fL -b cookies.iakim 'https://inlabs.in.gov.br/index.php?p=$ano-$mes-$dia&dl=$ano-$mes-$dia-$secao.zip' -H 'origem: 736372697074' -o

    " 
    echo $download > $ano-$mes-$dia-$secao.sh
    sh $ano-$mes-$dia-$secao.sh
    rm -rf $ano-$mes-$dia-$secao.sh
done

通过这样做,我能够检索到我的本地机器的数据。
问题是:我必须检索该数据并将其发送到Azure存储,为此,我一直在尝试制作一个管道,例如:

filename=$ano-$mes-$dia&dl=$ano-$mes-$dia-$secao.zip
for secao in $tipo_dou;
do
    download="curl -k --silent -fL -b cookies.iakim 'https://inlabs.in.gov.br/index.php?p=$ano-$mes-$dia&dl=$ano-$mes-$dia-$secao.zip' -H 'origem: 736372697074' 
                 |
                curl -X PUT -T - -H x-ms-blob-type:BlockBlob 'https://server.blob.core.windows.net/ape/filename?st=2023-01-25T18:41:00Z&se=2025-12-01T02:41:00Z&spr=https&sv=2021-06-08&sr=c&sig=SIGNATUREID'

    " 
    echo $download > $ano-$mes-$dia-$secao.sh
    sh $ano-$mes-$dia-$secao.sh
    rm -rf $ano-$mes-$dia-$secao.sh
done

到目前为止,我只能登录到系统,我试图下载它,但我得到了这样的错误:

<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:6b17fae3-601e-0065-5483-31ec49000000
Time:2023-01-26T12:43:31.1912380Z</Message>

为了执行这个脚本,我使用Node:

const { exec } = require('child_process');
 const fs = require('fs');
 const zlib = require('zlib');
 
 const directoryFiles = fs.readdirSync('.');

 const download = exec('sh xml-downloader.sh', (error, stdout, stderr ) => {
     console.log('stdout: ', stdout);
        console.log('stderr: ', stderr);
        if (error !== null) {
            console.log('exec error: ', error);
        }
 })

有没有别的办法让我做到这一点?
感谢您的帮助!

blmhpbnm

blmhpbnm1#

@FabioFaria如前所述,您需要配置SAS令牌以使您的应用能够访问blob存储。
或者,由于您已经使用node运行应用程序,因此可以为node应用程序创建应用程序注册并直接使用blob客户端。

cczfrluj

cczfrluj2#

我很感激你们的帮助。
然而,我采取了不同的方法来解决这个问题,现在我使用我创建的NodeJS函数,现在我直接将这些文件发送到API。
非常感谢你的帮助。

相关问题