6

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;
    }];

ここにエラーがあります:

エラー: エラー Domain=com.amazonaws.AWSSTSErrorDomain Code=0 "AccessDenied -- sts:AssumeRoleWithWebIdentity を実行する権限がありません" UserInfo=0x10a23e0a0 {NSLocalizedDescription=AccessDenied -- sts:AssumeRoleWithWebIdentity を実行する権限がありません}

それで、私は何を間違っていますか?

4

1 に答える 1

1

発生しているエラー

Not authorized to perform sts:AssumeRoleWithWebIdentity

アクセス ポリシーではなく、信頼ポリシーのエラーが原因です。

これは、Cognito セットアップ ウィザードの一部として作成されたロールですか? 何らかの形で役割を変更しましたか? Cognito コンソールによって作成されたロールは、それが作成された特定の ID プールに固定されます。アプリケーションで使用している ID プールで作成されたロールを使用していることを確認してください。

于 2014-08-18T16:23:48.653 に答える