我一直试图在iOS上使用AWS 2天。我从这里下载了示例项目:https://github.com/awslabs/aws-sdk-ios-samples
我完全按照步骤说,我用cocoapods链接所有库。
我还创建了一个存储桶,然后再按照如何获取ID的步骤在代码中进行更改,如下所示:
AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider
credentialsWithRegionType:AWSRegionUSEast1
accountId:AWSAccountID
identityPoolId:CognitoPoolID
unauthRoleArn:CognitoRoleUnauth
authRoleArn:nil];
所以基本上当我试图上传一些图像/文件时(在亚马逊使用S3存储服务的示例中,我收到错误:
2014-09-04 15:11:57.475 S3TransferManagerSample[5437:400b] AWSiOSSDKv2 [Error] AWSCredentialsProvider.m
line:356 | __40-[AWSCognitoCredentialsProvider refresh]_block_invoke299 | Unable to refresh.
Error is [Error Domain=com.amazonaws.AWSSTSErrorDomain Code=0 "The operation couldn’t be completed. (com.amazonaws.AWSSTSErrorDomain error 0.)"
UserInfo=0x14d17770 {Type=Sender, Message=Not authorized to perform sts:AssumeRoleWithWebIdentity, __text=(
"\n ",
"\n ",
"\n ",
"\n "
), Code=AccessDenied}]
为了清楚起见,我已经创建了一个角色并给了它一个策略:AdministratorAccess并使用角色ARN来设置
unauthRoleArn:CognitoRoleUnauth
我已阅读文档,似乎无法在任何地方找到问题。我觉得它与角色和赋予角色的政策有关。
我非常感谢有关如何入门或如何解决此问题的任何提示。
谢谢,如果您需要有关该问题的更多详细信息,请随时发表评论,我会给予更多,因为问题有点冗长。
答案 0 :(得分:5)
您遇到的错误是由于您的角色中的信任关系,而不是该角色的凭据的权限。
您必须确保您的角色的信任关系:
修改在设置向导期间创建的角色或重用角色时要小心,因为这两个值可能不匹配并生成上述错误。
您可能还会发现this blog post有助于了解Cognito身份验证的工作原理。