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

ftp到azure存储blob(已触发处理),azure,ftp,azure-storage,azure-functions,azure-logic-apps,Azure,Ftp,Azure Storage,Azure Functions,Azure Logic Apps,我想将加密文件从ftp服务器传输到`azure blob存储容器 以下是有问题的工作: CSVFtp服务器上的加密文件----------------->触发器(示例:关于添加文件)---------------->调用 一些处理解密的本地程序或api 然后在blob容器中创建输出csv文件 这些文件的结构如下所示: Input CSV file: column1;column2;column3; encryptedvalue1;encryptedvalue

我想将加密文件从
ftp服务器
传输到`azure blob存储容器

以下是有问题的工作:

CSV
Ftp服务器上的加密文件----------------->
触发器
(示例:关于添加文件)---------------->调用 一些处理解密的本地程序或api 然后在blob容器中创建输出
csv
文件

这些文件的结构如下所示:

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

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

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

我试图创建一个
Logic应用程序
,并创建了
ftp触发器
,作为第一步,但我无法找到最适合我的第二步

我看到很多建议,比如使用web作业,其他的用于azure功能和azure应用程序服务

因为我对azure的这些结构有点陌生,所以我来这里是想问一下这样做的最佳方式,以及为什么

使用
Web作业
是否更好?或者
azure函数
?或者只是做一个
HttpRequest
?为什么会这样

我是否已经走上了正确的道路?
logic应用程序
是允许我这样做的最佳方式吗

注意:编辑

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


任何帮助都将不胜感激

在选择Azure Webjobs和Azure功能时,您应该考虑以下几个关键因素

Azure功能有两种类型的计费方案: 消费计划和应用服务计划

在消费模式下,您只需在函数运行时支付一段时间,但在消费计划下,您的函数不能运行超过10分钟。这意味着,如果你的工作运行超过10分钟,那么你的消费计划就不适合你了

应用程序服务计划与Azure Web作业使用的计划相同,此处没有时间限制(根据文档)


一般来说,当您需要具有不同触发器等的灵活逻辑时,Azure函数是很好的。您可以通过逻辑应用程序和函数应用程序实现这一点,如下所示:

  • 创建ftp触发器(当文件到达时)
  • 如果是简单的编码-解码,您可以使用相应的形状,或者您可以在消费计划下创建一个Azure函数(根据使用情况定价),该函数具有加密、解密功能,其中数据将从FTP触发器形状传递。 这需要编码,您可以使用VS代码或Visual studio进行开发
  • 然后,您可以使用parse从Azure函数的输出进行解析,或者您可以对数据格式(XML、JSON等)使用transform shape,您可以使用上面编写的Azure函数再次使用decrypt,在同一函数中使用不同的方法
  • 最后,使用Blob形状将解密输出推送到Blob存储容器
  • Logic apps为您提供了连接器的广泛使用,使您能够轻松连接到不同的人工制品和工作流方法。您还可以使用XSLT转换,如果需要,使用集成帐户

    希望这有助于干杯

    不要过度设计它

    使用逻辑应用程序轮询FTP服务器并检测新文件,将它们放入blob存储中

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


    可选在生成的blob和电子邮件/文本通知上有第二个逻辑应用程序触发器。

    我建议使用(Azure功能)或(Web作业)

    以下是两种模式: -使用Docker容器执行转换(在本例中为复制): -在blob创建事件后使用函数执行操作:


    如果您有任何其他问题,请告诉我。

    经过一些研究,并根据
    evilSnobu
    的答案和
    Johns-305
    的评论,我发现最好的方法是如下所示

    注意:我开发了一个
    Azure Api应用程序
    来进行内容解密

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

    在我的逻辑应用程序中

  • 创建ftp触发器:在ftp上添加
    文件时->
    在Azure存储上创建blob
    从ftp中删除文件
  • 创建一个
    Azure函数

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

    基于
    blob创建触发器
    ,创建blob时调用解密api应用程序

  • 出于粒度的原因,并且为了使azure函数只做一项基本工作,我 必须创建第二个Azure函数来执行文件解析和 根据
    版本字段创建
    版本文件夹
    文件内容
  • 根据下面的网格,我们可以知道为什么在我的例子中azure函数比web作业更适合


    最后,总结一下,我可以说,在我的例子中,我需要有一个开发人员对我的解决方案的看法,这就是为什么我主要需要logic应用程序,然后我必须做两个基本任务,基于触发器的不连续的,这样更适合
    Azure函数
    更便宜的(因为文件不大,处理速度会很快)

    文件是什么格式,有多大?我忘了提一下,小文件(有些)
    Output csv file:
        column1;column2;column3;
        value1;value2;value3;