C. *_*rto 6 amazon-s3 amazon-web-services ios amazon-iam amazon-cognito
我正在尝试将S3和Cognito集成到我的iOS应用程序中,到目前为止还没有成功.我相信错误与我的Autah和Unauth用户的IAM策略有关.所以这是我的政策:
{
"Version": "2012-10-17",
"Statement":
[{
"Effect":"Allow",
"Action":"cognito-sync:*",
"Resource":["arn:aws:cognito-sync:us-east-1:XXXXXXXXXXXX:identitypool/${cognito-identity.amazonaws.com:aud}/identity/${cognito-identity.amazonaws.com:sub}/*"]
},
{
"Effect":"Allow",
"Action": "s3:*",
"Resource": ["arn:aws:s3:::my_bucket",
"arn:aws:s3:::my_bucket/*"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我称之为S3的地方:
AWSS3GetObjectRequest *getObjectRequest = [[AWSS3GetObjectRequest alloc] init];
getObjectRequest.key = KEY;
getObjectRequest.bucket = BUCKET;
//default service has been configured previously
AWSS3 *s3 = [[AWSS3 new] initWithConfiguration:[AWSServiceManager defaultServiceManager].defaultServiceConfiguration];
[[s3 getObject:getObjectRequest] continueWithBlock:^id(BFTask *task) {
if(task.error)
{
NSLog(@"Error: %@",task.error);
}
else
{
NSLog(@"Got File");
NSData *data = [task.result body];
NSString *urlString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSURL *url = [[NSURL alloc] initWithString:urlString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
}
return nil;
}];
Run Code Online (Sandbox Code Playgroud)
这是错误:
错误:错误域= com.amazonaws.AWSSTSErrorDomain代码= 0"AccessDenied - 未授权执行sts:AssumeRoleWithWebIdentity"UserInfo = 0x10a23e0a0 {NSLocalizedDescription = AccessDenied - 未授权执行sts:AssumeRoleWithWebIdentity}
那么,我做错了什么?
您遇到的错误
Not authorized to perform sts:AssumeRoleWithWebIdentity
Run Code Online (Sandbox Code Playgroud)
是由于您的信任策略错误,而不是您的访问策略错误。
这是作为 Cognito 设置向导的一部分创建的角色吗?您对角色进行过任何修改吗?Cognito 控制台创建的角色固定到创建它所使用的特定身份池。确保您使用的角色是通过您在应用程序中使用的身份池创建的。
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |