我尝试并成功地使用AWS Amplify快速入门文档上传了一个文件,并使用此示例正确地设置了我的graphql schema、我的解析器和dataSources:https://github.com/aws-samples/aws-amplify-graphql。
我被卡住了很长一段时间,因为当我的图像上传到S3存储桶时,出现了错误响应“访问被拒绝”。我最终转到我的S3控制台,选择了正确的存储桶,转到授权选项卡,单击"Everyone“,最后选择了"Write Object”。完成这些操作后,一切都会正常工作。但我真的不明白为什么它能工作,亚马逊在我的S3控制台上给我显示了一个巨大而可怕的警报,上面写着“我们根本不建议公开一个S3存储桶”。我使用了Amazon Cognito userPool和Appsync,如果我理解正确的话,它在我的解析器中将图像上传到我的S3存储桶中。
那么,什么是正确的配置才能使图像上传正常工作呢?我已经尝试将我的用户放在有权访问S3存储桶的组中,但它不起作用(我猜因为用户实际上并不直接与我的S3存储桶交互,所以是我的解析器与之交互)。
我希望我的用户能够上传图片,并在应用程序上显示图片后让所有人看到(非常经典),所以我只是在寻找正确的方法,因为我的S3控制台上的大警报似乎告诉我,将水桶公之于众是危险的。
谢谢!
发布于 2018-08-09 02:49:53
我猜你是在使用IAM角色将文件上传到S3。您可以设置存储桶策略,允许该角色拥有特定的权限,无论是ReadOnly、WriteOnly等。
看看这里:https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
发布于 2018-08-09 23:34:52
好了,我找到问题出在哪里了。我把我的S3存储桶的地址和aws-exports.js给出的地址放在一起上传。但是,当您转到您的IAM角色策略,并检查您的认知池的授权用户的角色时,您可以看到不同的策略,以及允许将对象放到您的私有存储桶中的策略,这些策略使用文件夹“S3”、"protected“和"private”。因此您必须更改这些路径或将这些文件夹添加到您在前端应用程序上使用存储桶地址的末尾。
希望它能帮助到一些人!
https://stackoverflow.com/questions/51752710
复制相似问题