不使用Amazon Cognito就能使用AWS Amplify吗?

时间:2019-01-31 10:53:37

标签: amazon-cognito aws-amplify

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

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

2 个答案:

答案 0 :(得分:0)

是的,有可能。您不需要用户身份验证即可使用AWS Amplify。

答案 1 :(得分:0)

此答案仅适用于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的想法。