iOS 应用程序:如何访问其他用户保存在认知身份 ID 文件夹下的 S3 对象



在我的iOS应用程序中,我已经完成了AWS Cognito用户身份验证。经过身份验证的用户能够将图像上传到受保护的文件夹,即在受保护的/{cognito user_identitiy_id}下。经过身份验证的用户只能访问保存在其user_identity_id文件夹下的对象。一个用户如何访问其他用户的对象。S3 文档说:-

公共:应用的所有用户都可以访问。 文件存储在 S3 存储桶中的 public/路径下。

受保护:所有用户均可读取,但只能由创建用户写入。文件存储在受保护/{user_identity_id}/下,其中user_identity_id对应于该用户的唯一 Amazon Cognito 身份 ID。

私密:仅供个人用户访问。文件存储在private/{user_identity_id}/下,其中user_identity_id对应于该用户的唯一Amazon Cognito身份ID。

如果您使用的是 Amplify,请使用受保护。所有者具有写入权限,而其他人只能读取文件。

请帮助确保:

  1. 您的 S3 存储桶策略类似于"受保护"文件夹,用于限制用户访问:https://docs.amazonaws.cn/en_us/IAM/latest/UserGuide/reference_policies_examples_s3_cognito-bucket.html

  2. 在iOS上,假设您使用的是Amplify,请遵循以下内容:https://aws-amplify.github.io/docs/ios/storage。请记住,在使用存储 API 之前,必须先进行身份验证并交换到凭据。

另一个想要读取该文件的用户可以指定创建该文件的用户:

let options = StorageDownloadDataRequest.Options(accessLevel:.protected, targetIdentityId: "OtherUserId")

最新更新