使用AWS Lambda将文件从AWS S3传输到OneDrive

时间:2017-08-20 17:59:21

标签: amazon-web-services amazon-s3 aws-lambda microsoft-graph onedrive

我们的客户要求我们在 AWS S3 OneDrive 上都有他们文件的副本。

通常的MO:文件从iOS应用程序发送到 AWS S3 存储桶。这会触发 AWS Lambda函数,它将文件附加到电子邮件并将副本发送到客户端,然后再将它们存储在 OneDrive 上。现在,我们要跳过电子邮件部分并将文件直接传输到 OneDrive

到目前为止,我所有的研究都指向 Zapier CloudRail MS Graph REST Api 。我遇到的问题是我们希望自动使用 AWS Lambda函数(Java8)传输文件。几乎所有关于 MS Graph 的教程和示例都需要客户端手动登录。主要是客户端逻辑。其他方法有更多的开销,我们不会(不必要地)想让我们的堆栈比现在更复杂。

我意识到这是一个非常具体的案例。我们正在系统地更换客户端的文件管理系统,而不会过多地破坏他们的日常运营。

任何确凿的指针/示例/教程来完成这个服务器端将非常感激。

4 个答案:

答案 0 :(得分:1)

同样使用CloudRail,必须对用户进行身份验证,但有一些方法可以存储和使用访问令牌。

服务有两个方法,loadAsString和saveAsString,它们用于存储和加载凭据。您可以使用访问令牌调用loadAsString,字符串可以与服务不同,但看起来像这样:[{“access_token”:“您的访问权限”}}

答案 1 :(得分:0)

我不确定S3与OneDrive的对比情况如何,它们是完全不同的型号。 OneDrive是由用户提供的,它提出了一个问题,您想要复制哪个用户?我认为Azure Storage会更好,因为它使用与S3类似的模型。

您可以使用Microsoft Graph API将文件上传到用户的OneDrive。您需要authenticate the user才能获得访问和刷新令牌。完成此过程后,您可以存储刷新令牌并根据需要检索更新的访问令牌。

答案 2 :(得分:0)

此外,Microsoft现在拥有一个云迁移工具www.mover.io,该工具可让您将大多数云中的文件和文件夹直接同步到Azure blob,Sharepoint或OneDrive中,而无需下载/上传到客户端计算机。

个人仅将其用于一次同步,但留作后代使用。

答案 3 :(得分:0)

客户端只需登录一次,因此如果您已经拥有客户端和密钥,您可以执行一次手动流程,然后将生成的令牌文件与您的代码文件一起保存在 AWS 中。下次运行代码时,它使用刷新令牌。上次我这样做时,我能够将刷新令牌设置为永不过期,但我认为 Microsoft 已随机删除了该选项,现在该令牌最多只能使用 2 或 3 年