【问题标题】:Is it Possible to Use AWS Amplify Without Using Amazon Cognito?是否可以在不使用 Amazon Cognito 的情况下使用 AWS Amplify?
【发布时间】:2019-06-24 19:36:37
【问题描述】:

我有 Android 和 iOS 应用程序。我需要允许他们在 S3 上下载和上传资产,并且有时想要将数据发送到移动设备而不必使用 Amazon Cognito,因为这需要花费很多钱。我有密钥和访问密钥,我希望移动用户使用这些密钥,而不必使用 Amazon Cognito。

那么是否可以在没有 Amazon Cognito 的情况下使用 AWS Amplify?

【问题讨论】:

  • 确定.. 为什么不呢?
  • 请给点详细的答案。
  • 您可以直接在您的 iOS 应用程序中利用 AWS STS API 调用。 Cognito 身份池在后端使用 AWS STS 为资源提供临时 AWS 凭证。

标签: amazon-cognito aws-amplify


【解决方案1】:

是的,这是可能的。您无需用户身份验证即可使用 AWS Amplify。

【讨论】:

  • 那么我可以使用后端发送的密钥和访问密钥开始使用 AWS 服务吗?
【解决方案2】:

这个答案只针对 iOS,但我猜你可以在 Android 上做类似的事情。只需将“协议”替换为“接口”:-)

要使用 Amplify,您需要为 SDK 提供 AWSCredentialsProvider。幸运的是,这只是一个协议,而不是具体的类,并且可以直接实现您自己的:

// MyCredentialsProvider.swift

import AWSCore
import Foundation

class MyCredentialsProvider: NSObject, AWSCredentialsProvider {
    func credentials() -> AWSTask<AWSCredentials> {
        let credentials = AWSCredentials(accessKey: "AAAAAAAAAAAAAAAAAAA",
                                         secretKey: "zzzzzzzzzzzzzzzzzzz",
                                         sessionKey: nil,
                                         expiration: nil)
        return AWSTask(result: credentials)
    }

    func invalidateCachedTemporaryCredentials() {
         // I'm not entirely sure what this method is supposed to do, but it
         // seems to be okay to leave it as a no-op.
    }
}

你可以像这样使用你的类:

let provider: AWSCredentialsProvider = MyCredentialsProvider()
let serviceConfig = AWSServiceConfiguration(region: .USWest2,
                                            credentialsProvider: provider)
AWSServiceManager.default().defaultServiceConfiguration = serviceConfig

// ...actually use AWS Amplify...

当然,您可能希望以某种方式让您的凭据提供程序挂钩到您自己的身份验证系统,但这至少让您了解如何将自己的访问密钥和秘密密钥传递给 SDK。

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2021-06-16
    • 2020-07-07
    • 1970-01-01
    • 2015-04-26
    • 2023-03-20
    • 2020-12-21
    • 1970-01-01
    • 2018-04-12
    相关资源
    最近更新 更多