ftp到azure存储blob(触发处理)

时间:2019-04-19 12:39:16

标签: azure ftp azure-storage azure-functions azure-logic-apps

我想将加密文件从ftp server转移到“ azure blob存储容器”

这是有问题的工作流:

  Ftp服务器上的

CSV加密文件----------> Trigger(例如:添加文件时)------- --->呼叫   一些本地程序或api处理解密   然后在Blob容器中创建输出csv文件

文件的结构如下:

   Input CSV file:
        column1;column2;column3;
        encryptedvalue1;encryptedvalue2;encryptedvalue3;

Output csv file:
    column1;column2;column3;
    value1;value2;value3;

这里没有文件内容转换,但是还有一件事我不知道它是否可行:

例如,我想根据column1的值在特定文件夹下添加新的blob。 (例如,通过代码管理Blob容器的层次结构)

我试图创建一个Logic App并创建了ftp trigger作为第一步,但是我不知道哪种方法最适合我的情况。

我看到了很多建议,例如使用Web作业,其他建议用于azure功能和azure应用程序服务...

由于这些天蓝色结构是一种新事物,所以我来这里询问这样做的最佳方法以及原因?

使用Web Job更好吗?还是azure function?或者只是制作一个HttpRequest?为什么呢?

我已经采用正确的方法了吗? logic app是允许我这样做的最好方法吗?

注意:编辑

文件大小大约为Mb(不是很大)CSV个文件,带有“;”作为分隔符 输入是ftp服务器上的csv文件,输出是在天蓝色blob存储上特定“文件夹”下的解密的csv文件

任何帮助将不胜感激

5 个答案:

答案 0 :(得分:0)

在Azure Webjobs和Azure Function之间进行选择时,应考虑一些关键因素。

Azure函数具有两种计费方案: 消费计划和应用服务计划。

在消耗中,您只为函数运行时付费,但是在消耗计划下,函数不能运行超过10分钟。这意味着,如果您的工作时间超过10分钟,那么您就不适合使用消费计划了。

App Service计划与Azure Web Jobs使用的计划相同,此处没有时间限制(根据文档)。

通常,当您需要具有不同触发器等的灵活逻辑时,Azure Functions会很好。

答案 1 :(得分:0)

您可以通过逻辑应用程序和功能应用程序实现以下目的:

  1. 创建ftp触发器(文件到达时)
  2. 如果它是简单的“编码解码”,则可以使用相应的形状,也可以根据消耗计划(根据使用情况定价)创建一个具有加密,解密功能的Azure功能,该功能将从FTP触发器形状传递数据。 这需要编码,您可以通过VS Code或Visual Studio开发它。
  3. 然后,您可以使用解析从Azure函数的输出进行解析,也可以对数据格式(XML,JSON等)使用变换形状,还可以使用上面编写的Azure函数再次使用解密,该函数只是内部的不同方法相同的功能。
  4. 最后使用Blob形状将解密的输出推送到Blob存储容器。

Logic应用程序使您可以广泛使用连接器,从而可以轻松连接到不同的工件和工作流程方法,还可以对XSLT进行转换,并在需要时使用集成帐户进行转换。

希望这有助于干杯!

答案 2 :(得分:0)

不要过度设计它。

使用Logic App轮询FTP服务器并检测新文件,然后将其放置在Blob存储中。

创建一个由Blob触发的Azure函数(消费计划,v2运行时),并在代码中进行数据转换(在v2中,您可以在TypeScript,JavaScript,C#和Python之间进行选择)。使用blob输出绑定将结果写入blob存储。

可选,在生成的Blob和电子邮件/文本通知中再添加一个Logic App触发器。

答案 3 :(得分:0)

我建议使用(Azure Function)或(Web Job)

这是两种模式: -使用Docker容器执行转换(在这种情况下为复制):https://azure.microsoft.com/en-us/blog/microsoft-azure-block-blob-storage-backup/ -在创建Blob事件后使用函数执行操作:https://cmatskas.com/copy-azure-blob-data-between-storage-accounts-using-functions/

如果您还有其他疑问,请告诉我。

答案 4 :(得分:0)

经过一些研究,并根据evilSnobu的答案和Johns-305的评论,我发现执行此操作的最佳方法如下:...

注意:我开发了Azure Api App来进行内容解密

基于此网格,最好的选择显然是用于设计我的工作流程的逻辑应用程序:

logic App vs MS Flow

在我的逻辑应用程序内部

  1. 创建ftp触发器:当ftp上的files is added-> ftp上Azure存储Create a blob &上的Delete file
  2. 创建一个Azure function

      

    (Azure功能与下面网格中的Web作业)

    基于blob creation trigger,当创建Blob时,调用解密API应用。

  3. 出于粒度的原因并且为了使azure函数仅执行一项基本工作,我 必须创建第二个Azure函数来进行文件解析, 根据{{​​1}}创建by version-folders 文件内容

根据下面的网格,我们可以判断为什么在我的情况下,天蓝色函数比Web作业更适合

Azure functions vs Web jobs

最后,总结一下,我可以说,就我而言,我需要对我的解决方案有一个开发人员观点,这就是为什么我主要需要逻辑应用程序的原因,然后我必须执行两个基本任务,这些任务是触发的基于非连续性,因此更适合version field,并且便宜得多(因为文件不大,处理速度很快)