亚马逊网络服务 SDK iOS

Posted

技术标签:

【中文标题】亚马逊网络服务 SDK iOS【英文标题】:Amazon Web Service SDK iOS 【发布时间】:2014-10-29 05:17:00 【问题描述】:

2 天以来,我一直在尝试将 AWS 与 ios 一起使用。我从这里下载了示例项目: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 并使用 Role ARN 来设置

unauthRoleArn:CognitoRoleUnauth   

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

我非常感谢有关如何开始或如何解决此问题的任何提示。

谢谢,如果您需要有关该问题的更多详细信息,请随时发表评论,我会提供更多信息,因为问题有点冗长。

【问题讨论】:

【参考方案1】:

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

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

    信任您正在使用的身份池(aud 与身份池 ID 匹配)。 使用提供的身份验证信任身份(amr 匹配 unauthenticatedauthenticated,具体取决于您的用例)。

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

您还可能会发现 this blog post 有助于了解 Cognito 身份验证的工作原理。

【讨论】:

当我创建角色时,我只是将该角色的权限更改为管理员访问权限,我没有更改任何其他内容。我应该改变角色的信任关系吗?我真的不知道该怎么设置。 另外,如果是“为了这个身份池”,你是什么意思?我创建了身份池作为 Cognito 服务的一部分,而角色是在 IAM 管理控制台中设置的。我已经阅读了很多关于 AWS 的内容,我想我有点困惑。对不起,如果我似乎有点不清楚。谢谢。 我继续删除了我当前的身份池并创建了一个新的身份池,我得到的错误消失了。但是现在它没有上传文件,我现在在尝试上传时遇到另一个错误: _error NSError * 域:@"com.amazonaws.AWSS3ErrorDomain" - 代码:1 0x16786df0 @RJiryes 请创建一个新问题并发布您的代码和任何显示完整错误的调试日志。

以上是关于亚马逊网络服务 SDK iOS的主要内容,如果未能解决你的问题,请参考以下文章

是否有可用的亚马逊网络服务 (aws) 模拟/仿真?

从服务器向AWS JS SDK发送签名,而不是使用纯文本密钥

无法使用 iOS 的 XMPP 框架连接亚马逊上的 ejabberd 服务器

如何为 iOS 实现亚马逊的产品广告 API?

适用于 Web 应用程序的亚马逊简单通知服务

小米推送服务端JAVA HTTP2 SDK/iOS客户端SDK版本发布