gpt4 book ai didi

ios - Cognito/IAM 策略和 S3 获取对象

转载 作者:可可西里 更新时间:2023-11-01 03:59:11 24 4
gpt4 key购买 nike

我正在尝试将 S3 和 Cognito 集成到我的 iOS 应用程序中,但到目前为止还没有成功。我认为该错误与我的 Auth 和 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/*"]
}
]
}

这里是我调用 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;
}];

这里是错误:

错误:错误域=com.amazonaws.AWSTSErrorDomain 代码=0“AccessDenied -- 无权执行 sts:AssumeRoleWithWebIdentity” UserInfo=0x10a23e0a0 {NSLocalizedDescription=AccessDenied -- 无权执行 sts:AssumeRoleWithWebIdentity}

那么,我做错了什么?

最佳答案

您遇到的错误

Not authorized to perform sts:AssumeRoleWithWebIdentity

是由于您的信任策略错误,而不是您的访问策略。

这是作为 Cognito 设置向导的一部分创建的角色吗?您是否以任何方式修改了角色? Cognito 控制台创建的角色固定到创建它时使用的特定身份池。确保您使用的角色是通过您在应用程序中使用的身份池创建的。

关于ios - Cognito/IAM 策略和 S3 获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25309516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com