亚马逊网络服务SDK iOS

RJi*_*yes 5 amazon-s3 amazon-web-services ios amazon-cognito

我一直坚持尝试将iOS与iOS一起使用2天.我从这里下载了示例项目:https://github.com/awslabs/aws-sdk-ios-samples

我完全按照步骤说,我用cocoapods链接所有库.

我还创建了一个存储桶,然后再按照如何获取ID的步骤在代码中进行更改,如下所示:

AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider
                                                      credentialsWithRegionType:AWSRegionUSEast1
                                                      accountId:AWSAccountID
                                                      identityPoolId:CognitoPoolID
                                                      unauthRoleArn:CognitoRoleUnauth
                                                      authRoleArn:nil];
Run Code Online (Sandbox Code Playgroud)

所以基本上当我试图上传一些图像/文件时(在亚马逊使用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}]
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我已经创建了一个角色并为其提供了一个策略:AdministratorAccess并使用角色ARN来设置

unauthRoleArn:CognitoRoleUnauth   
Run Code Online (Sandbox Code Playgroud)

我已阅读文档,似乎无法在任何地方找到问题.我觉得它与角色和赋予角色的政策有关.

我非常感谢有关如何入门或如何解决此问题的任何提示.

谢谢,如果你需要关于这个问题的更多细节,请随意评论,我会给予更多,因为这个问题有点冗长.

Bob*_*ney 5

您遇到的错误是由于您角色中的信任关系,而不是角色凭据的权限.

您必须确保您的角色的信任关系:

  1. 信任您正在使用的身份池(aud匹配身份池ID).
  2. 使用提供的身份验证信任身份(amr根据您的用例匹配未经身份验证身份验证).

修改在设置向导期间创建的角色或重用角色时要小心,因为这两个值可能不匹配并生成上述错误.

您可能还会发现此博客文章有助于了解Cognito身份验证的工作原理.