2

我开始使用 mongolab 和 AWS 的解析服务器,一切正常,但是没有检索到图像,我在某个地方读到了我需要设置“fileKey”的地方。我尝试将其添加到 AWS 控制台,如下图所示。但是它仍然无法正常工作?我做错什么了吗,我是否需要将它也添加到我的 IOS Swift 项目中的 appDelegate 中?我该怎么做?

在此处输入图像描述

4

2 回答 2

4

更清醒,

更新:截至 2016 年 3 月 9 日太平洋标准时间下午 12 点,“ AWS Elastic Beanstalk 上的解析服务器”解决方案包括 FILE_KEY 环境属性并由应用程序解析。因此,无需执行下面的此过程,但它对于您将来需要进行的任何其他应用程序更新仍然有用。/END 更新

只是为了澄清您的问题,我假设您无法访问任何“旧”解析文件(在迁移之前上传到您的应用程序)并且您在访问新上传的文件时没有问题?如果是这样,请继续阅读。

问题:无法检索在迁移到 AWS Elastic Beanstalk 上的 Parse Server 之前上传到您的应用程序的任何文件。

问题:由于路径不正确,缺少您的 Parse 文件密钥,迁移的 Parse Sever 无法检索旧文件(托管在 Parse 拥有的 S3 存储桶上)。例如,如果您对与文件关联的对象执行简单的 GET,您将获得以下信息:

“网址”: http: //files.parsetfss.com/invalid-file-key/tfss-0a209bb7-8497-4e4f-8cdf-a5d4190a48c4-myTwins.jpg

URL 参数是缺少的/invalid-file-key/成分,如果未提供文件密钥,则解析服务器将其作为默认占位符放置。在进行以下建议的更改后,相同的请求将返回正确的 url,并/invalid-file-key/替换为您的 /actual File Key/。

要了解有关 Parse Files 的更多信息,请在此处查看我关于迁移前/后 Parse Files的其他 Stack Overflow 回复。

解决方案:在 EB 环境属性中设置 FILE_KEY 属性名称是正确的,但不幸的是,您需要对 Parse 服务器上的 index.js 文件进行额外更改才能实际读取文件密钥属性。有两种方法可以更新 Parse Server 应用程序。Elastic Beanstalk 控制台或使用 Elastic Beanstalk CLI (EB CLI)。下面提供了两种解决方案:

将您的 Parse 文件“文件密钥”添加到 AWS Elastic Beanstalk 上的现有 Parse 服务器。

(控制台)使用 AWS Elastic Beanstalk 管理控制台更新应用程序版本:

此解决方案包括下载 Parse Server 的现有 EB 应用程序版本(作为 .zip 存档),在本地修改 index.js 文件,将其压缩备份,最后将更改上传到相同的应用程序版本页面作为新版本应用程序。下载和编辑当前 Parse Server EB 应用程序版本:

  • 打开 Elastic Beanstalk 控制台。
  • 从区域列表中,选择包含您要使用的应用程序的区域。
  • 在 Elastic Beanstalk 控制台应用程序页面中,单击要添加新应用程序版本的应用程序的名称。
  • 在导航窗格中,单击应用程序版本。

    在此处输入图像描述

  • 单击源下的 .zip 文件链接以在本地下载应用程序。

  • 解压缩应用程序
  • 编辑应用程序根目录中的 index.js 文件并添加以黄色突出显示的行。 在此处输入图像描述
  • 保存 index.js 文件。
  • 压缩应用程序(注意仅压缩解压缩文件夹中的根对象,而不是包含对象的文件夹。)

上传新版本的 Parse Server 应用程序:

  • 在 Parse Server 应用程序的 Application Versions EB 页面中,单击 Upload。

  • 提供版本标签和说明,选择您更新的 .zip 应用程序并单击上传

  • 这将在旧版本仍在运行时上传您的应用程序的“新版本”。

部署新版本的 Parse Server 应用程序:

  • 选择新上传的版本,然后单击部署。

  • 从下拉列表中选择您的环境,然后单击部署。

最后一步:添加 FILE_KEY 环境属性,如屏幕截图所示。单击应用。

如果您在使用此解决方案时遇到任何问题,请遵循以下 EB 部署说明:http ://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.deployment.html

(CLI) 使用 Elastic Beanstalk 命令行界面 ( EB CLI ):

此解决方案使用 EB CLI 下载、编辑和部署 Parse Server 应用程序的新版本。

  • mkdir tmp-app-文件夹
  • cd tmp-app-文件夹
  • eb init(选择运行代码的区域、应用和环境)
  • eb labs 下载(从 EB 环境下载代码)
  • 对 index.js 文件进行必要的更改
  • eb deploy(应用程序重建)
  • eb setenv FILE_KEY=(应用程序再次重建) 完成。

获取 Parse 文件密钥:Parse 托管的文件密钥可以从 Parse.com 控制台获取。登录 Parse.com,选择您的应用并复制“应用设置”>“安全和密钥”下的“文件密钥”。注意:Parse 仅在“beta”仪表板中提供“文件密钥”。

我知道这对于一个简单的解决方案来说似乎是一个冗长的详细说明,但它也应该有助于其他 Parse 开发人员将来需要在他们的 Elastic Beanstalk 环境中更新他们的 Parse Server 应用程序。例如,如果您想在迁移后将文件存储到您自己的 S3 存储桶

于 2016-03-05T00:23:00.967 回答
1

它看起来你错过了 index.js 文件中的 fileKey 。

从解析仪表板获取文件密钥

在此处输入图像描述

转到解析服务器的 index.js 文件并设置 filekey 值。

var api = new ParseServer({ databaseURI: databaseUri || 'mongodb://localhost:27017/dev', appId: 'xxx', clientKey: 'xxx', masterKey: 'xxx', fileKey: 'xxx' });

于 2016-03-17T06:48:46.103 回答