swift - 如何使用 AWS 移动中心创建的 s3 存储桶将文件从 Swift 上传到受保护的 s3 存储桶?
问题描述
我有一个 AWS 移动集线器项目,正在尝试将文件上传到自动生成的存储桶的受保护文件夹中。
S3 存储桶
- 私人的
- 受保护
- 上市
- 上传
在我的用户通过身份验证后,我目前正在使用 AWSS3TransferUtility 上传文件。我查看了创建时留在文件夹中的文档和网站。他们已设置权限以以不同方式保护不同文件夹中的数据。我能够毫无问题地将文件上传到上传文件夹。然后我尝试上传到私有和受保护的文件夹,并从 API 调用中收到授权的 403。我通过 IAM 检查了存储桶的权限。
来自 IAM 的示例
桶名 | 字符串如 | appname-userfiles-mobilehub-1213213213, ObjectPath | 字符串如 | 私人的/${cognito-identity.amazonaws.com:sub}/*
所以我推断上传的密钥必须在密钥中包含认知身份。如何获取当前用户的认知身份,使其匹配并允许我将文件上传到 S3,同时确保其数据保护完整性?
解决方案
我有 AWSIdentifyManager 来提取用户 ID。
// start of upload code
let transferUtility = AWSS3TransferUtility.default()
let user = AWSIdentityManager.default().identityId
let newKey = "protected/"+user!+"/"+fileURL.lastPathComponent
transferUtility.uploadData(
data,
bucket: "appbucket-name",
key: newKey,
contentType: "text/plain",
...
//rest of code from the docs
推荐阅读
- pdf - Ghostscript 将 cmyk-PDF 转换为 rgb-PNG 并保留正确的颜色
- python - 在 Python 的 SQL 语句中传递列名?
- html - 如何使下拉菜单的宽度与每个菜单相同
- 在导航?
- php - 使用 WP WC CLI 将产品批量导入 Woocommerce
- javascript - 如何将一个元素隐藏在一个较小的元素后面?
- visual-studio - VS Code (Flutter, dart) 错误在注释或删除代码后不会消失
- javascript - 如何重新格式化嵌套的数据数组?
- javascript - 开玩笑等待 express 的默认错误处理程序
- android - BitmapFactory.decodeFile e/bitmapfactory 无法解码流 java.io.filenotfoundexception EACCES(权限被拒绝)
- c# - 调用创建对象的函数会导致内存泄漏吗?