亚马逊数据插入

时间:2015-01-02 12:18:41

标签: ios iphone amazon-web-services amazon-s3

我正在使用amazon服务,使用amazon ios sdk插入图像,视频和音频数据。 http://docs.aws.amazon.com/mobile/sdkforios/developerguide/s3transfermanager.html

但无法这样做。我正在执行所有步骤,但无法理解我们如何为用户设置角色。以下是我们在上传时遇到的错误:

Error Domain=com.amazonaws.AWSSTSErrorDomain Code=0 "The operation couldn’t be completed. (com.amazonaws.AWSSTSErrorDomain error 0.)" UserInfo=0x175673b0 {Type=Sender, Message=Not authorized to perform sts:AssumeRoleWithWebIdentity, __text=(
    "\n    ",
    "\n    ",
    "\n    ",
    "\n  "
), Code=AccessDenied}

请提供相同的指导。

2 个答案:

答案 0 :(得分:1)

我认为最简单的方法是使用AWS IAM Console并添加sts:AssumeRoleWithWebIdentity Action并将“Effect”:“Allow”添加到您的角色中。 请查看http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html示例。

答案 1 :(得分:0)

您的问题中没有足够的详细信息可以帮助您,所以我们先做一些假设。

根据您为文档提供的链接,我假设您正在尝试从iOS移动应用程序将文件上传到S3。

您如何获得申请表的凭据?我假设您使用的是Cognito Identity(http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-auth.html

如果我的两个假设是正确的,那么您的错误消息的一个非常常见的原因是您的Cognito角色的信任策略中的错误。

角色有两个部分,首先是此角色授予的权限集。第二个信托政策,描述谁(或什么)被授权承担这一角色。

对于具有经过身份验证的用户的Cognito角色,信任策略应如下所示:

{
  "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:12345678-abcd-abcd-abcd-123456790ab"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "unauthenticated"
        }
      }
    }
  ]
}

有关如何修改现有角色的说明,请查看http://docs.aws.amazon.com/IAM/latest/UserGuide/modifying-role.html