我正在尝试使用s3的AWSS3TransferManager从sdk上传照片到sdk。
我使用AWS认知开发人员身份验证,在django后端调用,使用boto3并将返回的令牌传递给iOS。我实现了一个从"AWSAbstractIdentityProvider“继承的身份提供程序,并设置了self.token和self.identityID字段,然后将我开发的实例化提供程序传递给"credentialsProvider”参数。
凭据提供程序在我创建的身份提供程序中实例化如下:
AWSCognitoCredentialsProvider *provider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityProvider:self unauthRoleArn:CognitoRoleUnauth authRoleArn:CognitoRoleAuth];
CognitoRoleAuth是我创建的IAM角色的arn,下面进一步显示了权限。下面是配置实例化。
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];
然后,我使用创建的配置来用以下代码实例化"AWSS3TransferManager“对象:
‘`AWSServiceConfiguration *configuration = appDelegate getConfig;
AWSS3TransferManager *transMan = [[AWSS3TransferManager new] initWithConfiguration:configuration identifier:@"poster"];`我在amazon中创建了一个身份池,并按照建议创建了一个具有以下权限的角色:
{
"Version": "2012-10-17",
"Statement": [{
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Effect": "Allow",
"Resource": [
"*"
]
},
{
"Sid": "Stmt15426553753",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::pics/auth"
}
]}它还具有以下信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:identityPoolID" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
每当我试图用传输管理器调用"upload“时,我都会收到以下错误消息:
未授权执行sts:AssumeRoleWithWebIdentity"的
我不知道我做错了什么,但这可能与信任关系有关。有什么建议吗?请帮帮我!
发布于 2014-12-18 18:13:15
我怀疑您正在经历与这个问题中提到的相同的问题。您还可以尝试在您的身份提供程序中重载isAuthenticated法。
https://stackoverflow.com/questions/27538289
复制相似问题