AWS Cognito 开发人员身份验证并上传到 S3
AWS Cognito Developer Authenticated Identities and Upload to S3
我正在尝试验证 AWS Cognito 服务以将图像上传到 S3 bucket.I 试图遵循“http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html”,但我感到困惑。我想使用开发人员身份进行身份验证,因为我没有使用 Cognito 服务进行登录。
我用于验证的class如下:
import AWSCore
class DeveloperAuthenticatedIdentityProvider : AWSCognitoCredentialsProviderHelper {
override func token() -> AWSTask<NSString> {
//I have no clue what it returns and there also an error here
self.identityId = response.identityId
return AWSTask(result: response.token)
}
}
我正在使用我的凭据如下:
let devAuth = DeveloperAuthenticatedIdentityProvider(regionType: .USWest2, identityPoolId: "pool-id", useEnhancedFlow: true, identityProviderManager:nil)
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USWest2, identityProvider:devAuth)
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
我正在上传到 S3,如下所示:
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest?.body = fileURL as URL
let awsImageName = "1002_" + UUID().uuidString
uploadRequest?.key = awsImageName + "." + ext
uploadRequest?.bucket = S3BucketName
uploadRequest?.contentType = "image/" + ext
let transferManager = AWSS3TransferManager.default()
// Perform Upload
transferManager.upload(uploadRequest!).continueWith(block: { (task:AWSTask<AnyObject>) -> AnyObject! in
它在没有身份验证的情况下工作正常,但我想在身份验证的情况下使用它。有人能告诉我应该怎么做吗?我是 swift 和 AWS Cognito Services 的新手。
我认为您正在使用 IAM 切换认知。
Cognito 用作您自己的应用程序或移动应用程序的身份提供者。它是一个云身份提供者,您可以将其用作服务。您可以允许其他用户在您自己的 UI 内注册,并将其与 Facebook、Google、...
相结合
IAM 用于识别谁可以使用这些云服务,如 Cognito、S3、EC2。使用 s3 等需要哪些角色
它在没有身份验证的情况下工作的原因是您可能已经安装了存储此 IAM 信息的 AWS SDK 或 cli。您的应用程序会将其用作后备。
看看 IAM,创建一个可以访问 S3 的开发人员角色并承担该角色。获取您帐户的秘密和访问密钥,您现在可以忘记 Cognito
更多信息:
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html
http://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html
我正在尝试验证 AWS Cognito 服务以将图像上传到 S3 bucket.I 试图遵循“http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html”,但我感到困惑。我想使用开发人员身份进行身份验证,因为我没有使用 Cognito 服务进行登录。 我用于验证的class如下:
import AWSCore
class DeveloperAuthenticatedIdentityProvider : AWSCognitoCredentialsProviderHelper {
override func token() -> AWSTask<NSString> {
//I have no clue what it returns and there also an error here
self.identityId = response.identityId
return AWSTask(result: response.token)
}
}
我正在使用我的凭据如下:
let devAuth = DeveloperAuthenticatedIdentityProvider(regionType: .USWest2, identityPoolId: "pool-id", useEnhancedFlow: true, identityProviderManager:nil)
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USWest2, identityProvider:devAuth)
let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
我正在上传到 S3,如下所示:
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest?.body = fileURL as URL
let awsImageName = "1002_" + UUID().uuidString
uploadRequest?.key = awsImageName + "." + ext
uploadRequest?.bucket = S3BucketName
uploadRequest?.contentType = "image/" + ext
let transferManager = AWSS3TransferManager.default()
// Perform Upload
transferManager.upload(uploadRequest!).continueWith(block: { (task:AWSTask<AnyObject>) -> AnyObject! in
它在没有身份验证的情况下工作正常,但我想在身份验证的情况下使用它。有人能告诉我应该怎么做吗?我是 swift 和 AWS Cognito Services 的新手。
我认为您正在使用 IAM 切换认知。 Cognito 用作您自己的应用程序或移动应用程序的身份提供者。它是一个云身份提供者,您可以将其用作服务。您可以允许其他用户在您自己的 UI 内注册,并将其与 Facebook、Google、...
相结合IAM 用于识别谁可以使用这些云服务,如 Cognito、S3、EC2。使用 s3 等需要哪些角色
它在没有身份验证的情况下工作的原因是您可能已经安装了存储此 IAM 信息的 AWS SDK 或 cli。您的应用程序会将其用作后备。
看看 IAM,创建一个可以访问 S3 的开发人员角色并承担该角色。获取您帐户的秘密和访问密钥,您现在可以忘记 Cognito
更多信息:
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html
http://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html