2017-05-10 5 views
1

J'essaie d'utiliser l'opération "listObjects" sur un compartiment. Ceci est accessible via un WebService et je ne veux pas donner accès à la console utilisateur.Obtenir "AccessDenied" lors de l'accès à S3 à l'aide de Cognito Token

Politique de rôle

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "mobileanalytics:PutEvents", 
       "cognito-sync:*", 
       "cognito-identity:*" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     }, 
     { 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::BucketName" 
      ], 
      "Condition": { 
       "StringLike": { 
        "s3:prefix": [ 
         "${cognito-identity.amazonaws.com:sub}/*" 
        ] 
       } 
      } 
     } 
    ] 
} 

Politique confiance

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "Federated": "cognito-identity.amazonaws.com" 
     }, 
     "Action": "sts:AssumeRoleWithWebIdentity", 
     "Condition": { 
     "StringEquals": { 
      "cognito-identity.amazonaws.com:aud": "somevalue" 
     }, 
     "ForAnyValue:StringLike": { 
      "cognito-identity.amazonaws.com:amr": "authenticated" 
     } 
     } 
    } 
    ] 
} 

Si je remplace "$ {} cognito-identity.amazonaws.com:sub" avec la valeur réelle, il fonctionne, sinon il donne Erreur AccessDenied On dirait qu'il me manque quelque chose de très simple. S'il vous plaît aider.

Erreur:

cfId:undefined 
code:"AccessDenied" 
extendedRequestId:undefined 
message:"Access Denied" 
region:null 
requestId:null 
retryDelay:14.650563118124381 
retryable:false 
statusCode:403 
time:Sun May 14 2017 23:11:57 GMT+0530 
name:"AccessDenied" 
stack:"AccessDenied: Access Denied↵ at constructor.extractError (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:24:11663)↵ at constructor.callListeners (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:23:27756)↵ at constructor.emit (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:23:27465)↵ at constructor.emitEvent (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:23:15469)↵ at constructor.e (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:23:11925)↵ at a.runTo (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:24:27302)↵ at http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:24:27509↵ at constructor.<anonymous> (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:23:12135)↵ at constructor.<anonymous> (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:23:15524)↵ at constructor.callListeners (http://localhost:8081/aws-cognito/aws-sdk-2.3.5.min.js:23:27862)" 
__proto__:Object 
+0

Cela peut sembler stupide mais, pouvez-vous copier le message d'erreur complet dans la question s'il vous plaît? –

Répondre

1

En fait, ce fut une erreur stupide de ma part. Sub est toujours sous la forme: us-east-1: 12345678-1234-1234-1234-123456790ab.

Je copiais le SUB à partir de Cognito-idp qui était faux. C'est le mauvais SUB. Le SUB est IdentityId que nous recevons du pool Cognito Identity.

Merci de votre visite.