Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在AWS s3中保存图像_Angular_Amazon S3_Lambda_Aws Lambda - Fatal编程技术网

Angular 在AWS s3中保存图像

Angular 在AWS s3中保存图像,angular,amazon-s3,lambda,aws-lambda,Angular,Amazon S3,Lambda,Aws Lambda,我计划让我的应用程序在AWS中保存图像和一些表单数据。我已经知道如何通过API网关和lambda在DynamoDB中保存角度表单数据。但是我还没有找到一个好方法来保存图像并将图像存储在DynamoDB中。有人能告诉我什么是最佳实践吗?如果您有任何参考,将不胜感激 我想可能会直接从Angular将图像保存到S3,然后让lambda监听事件并将图像S3位置保存在DynamoDB中。但是还没有找到一种直接从存储到S3的好方法 棱角分明 另一种方法是让lambda在DynamoDB中存储数据以保存图像,

我计划让我的应用程序在AWS中保存图像和一些表单数据。我已经知道如何通过API网关和lambda在DynamoDB中保存角度表单数据。但是我还没有找到一个好方法来保存图像并将图像存储在DynamoDB中。有人能告诉我什么是最佳实践吗?如果您有任何参考,将不胜感激

我想可能会直接从Angular将图像保存到S3,然后让lambda监听事件并将图像S3位置保存在DynamoDB中。但是还没有找到一种直接从存储到S3的好方法 棱角分明

另一种方法是让lambda在DynamoDB中存储数据以保存图像,然后使用S3位置保存DB。但是还没有找到这样的例子


也许有更好的办法。请告知。谢谢大家!

首先,重要的是要有一个直接上传机制,将图像上传到S3,而无需通过API网关。因为我们也不想让S3存储桶公开,所以您可以使用以下选项之一在适当的访问控制下上传图像

  • 使用或(如果使用CloudFront)从API端点生成SignedUrl
  • 使用IAM临时访问凭据将文件上载到S3,可以使用API端点生成这些文件,也可以使用(如果使用Cognito Userpools作为IDP,则更简单)
这样你就可以直接从Angular应用程序上传到S3。然后让我们看看如何在DynamoDB中保存S3文件路径

  • 同步:在S3上传回调之后,使用API调用将URL(可以使用bucket name+path+file name生成URL)保存在DynamoDB中
  • 异步:将带有S3触发器的事件驱动管道保存到Lambda,以保存到DynamoDB
通常,在Angular应用程序中,您需要在上传时立即显示图像。为此,如果您使用异步方法,您可以构造图像URL并在Angular App中显示(如果您有屏幕或组件来显示它),同时希望Lambda将其添加并存储在DynamoDB中


注意:在这里,我没有提到任何比其他方法更好的方法,因为每种方法都有各自的优缺点。

谢谢Ashan!你的建议很彻底。我搜索了签名的URL和cognito用户池,找到了这个。从这个角度看,这两种需求似乎都存在。您能帮助我更好地理解如何实现签名URL和/或cognito吗?