亚马逊数据插入
Amazon data insertion
我正在与亚马逊服务合作,通过使用亚马逊 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}
请就此提供您的指导。
我认为最简单的方法是使用 AWS IAM Console 并在您的角色中添加 sts:AssumeRoleWithWebIdentity 操作 "Effect": "Allow"。 查看 http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html 示例。
你的问题中没有足够的细节来帮助你,所以让我们先做一些假设。
根据您提供的 link 文档,我假设您正在尝试从 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