Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication AWS Cognito开发者身份验证并上传到S3_Authentication_Amazon S3_Aws Cognito - Fatal编程技术网

Authentication AWS Cognito开发者身份验证并上传到S3

Authentication AWS Cognito开发者身份验证并上传到S3,authentication,amazon-s3,aws-cognito,Authentication,Amazon S3,Aws Cognito,我试图验证AWS Cognito服务以将图像上载到S3存储桶。我试图遵循“”,但我感到困惑。我想使用开发者身份进行身份验证,因为我没有使用Cognito服务进行登录。 我用于身份验证的类如下所示: import AWSCore class DeveloperAuthenticatedIdentityProvider : AWSCognitoCredentialsProviderHelper { override func token() -> AWSTask<NSStrin

我试图验证AWS Cognito服务以将图像上载到S3存储桶。我试图遵循“”,但我感到困惑。我想使用开发者身份进行身份验证,因为我没有使用Cognito服务进行登录。 我用于身份验证的类如下所示:

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
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
和Im上传至S3,如下所示:

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
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
let uploadRequest=AWSS3TransferManagerUploadRequest()
uploadRequest?.body=文件URL作为URL
让awsImageName=“1002_u3;”+UUID().uuiString
uploadRequest?.key=awsImageName+“+ext
uploadRequest?.bucket=S3BucketName
uploadRequest?.contentType=“image/”+ext
让transferManager=AWSS3TransferManager.default()
//执行上传
上传(uploadRequest!)。在

它在没有身份验证的情况下可以正常工作,但我想将其与身份验证一起使用。有人能告诉我该怎么做吗?我是swift和AWS Cognito服务的新手。

我想你正在将Cogniti与IAM切换。 Cognito被用作您自己的应用程序或移动应用程序的身份提供商。它是一个云身份提供商,您可以将其用作服务。您可以允许其他用户通过您自己的UI注册,并将其与Facebook、Google等相结合

IAM用于确定谁可以使用这些云服务,如Cognito、S3、EC2。使用S3等需要哪些角色

它在没有身份验证的情况下工作的原因是您可能已安装了存储此IAM信息的AWS SDK或cli。您的应用程序将使用它作为回退

看看IAM,创建一个可以访问S3的开发人员角色,并承担该角色。获取您帐户的密钥和访问密钥,您现在可以忘记Cognito了