【发布时间】:2021-01-10 23:09:02
【问题描述】:
我正在关注来自 aws 的官方tutorial 从 S3 Bucket 下载图像。 在 IAM 控制台中,我创建了一个对存储桶具有只读访问权限的新用户。 在 .aws 文件夹中添加凭证并使用 amplify CLI 新的 Cognito 用户池后,创建了 Cognito 身份池和 S3 存储桶。
我在 Swift 应用程序中安装了 Amplify、AmplifyPlugins/AWSS3StoragePlugin、AmplifyPlugins/AWSCognitoAuthPlugin pod。 amplifyconfiguration.json 和 awsconfiguration.json 已在调用放大推送后更新了凭据。
在 AppDelegate 中我设置了以下演示代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
do {
try Amplify.add(plugin: AWSCognitoAuthPlugin())
try Amplify.add(plugin: AWSS3StoragePlugin())
try Amplify.configure()
print("Amplify configured with storage plugin")
} catch {
print("Failed to initialize Amplify with \(error)")
}
self.testUploadData()
return true
}
func testUploadData() {
let dataString = "Example file contents"
let data = dataString.data(using: .utf8)!
Amplify.Storage.uploadData(key: "ExampleKey", data: data,
progressListener: { progress in
print("Progress: \(progress)")
}, resultListener: { (event) in
switch event {
case .success(let data):
print("Completed: \(data)")
case .failure(let storageError):
print("Failed: \(storageError.errorDescription). \(storageError.recoverySuggestion)")
}
})
}
问题是我收到失败:
身份验证错误:
0: String "没有用户登录来检索身份ID"
1:字符串“调用 Auth.signIn 登录用户或在 AWS Cognito 身份池中启用未经身份验证的访问”
使用来自 AWS 的最新放大 SDK 并在具有只读权限的 S3 上安全连接的最佳步骤是什么?理想情况下,我想使用我创建的现有存储桶而不是生成的存储桶。
【问题讨论】:
标签: ios swift amazon-web-services amazon-s3 aws-amplify