У меня есть корзина S3, которую я настроил для управления доступом с помощью пула пользователей Cognito, как описано здесь [https://docs.amazonaws.cn/en_us/IAM/latest/UserGuide/reference_policies_examples_s3_cognito-bucket.html]:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<bucket-name>",
"Condition": {
"StringLike": {
"s3:prefix": "cognito/<app-name>/"
}
}
},
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::<bucket-name>/cognito/<app-name>/${cognito-identity.amazonaws.com:sub}*",
"arn:aws:s3:::<bucket-name>/cognito/<app-name>/${cognito-identity.amazonaws.com:sub}/*"
]
}
]
}
У меня есть угловое веб-приложение, которое аутентифицирует пользователей с помощью пула пользователей Cognito, и я 'используя клиент S3 для получения объекта.Я вижу, что вызов службы Cognito (https://cognito -identity.eu-central-1.amazonaws.com / ) выполнен успешно, и в качестве ответа возвращается идентификационная информация, но после этого происходит немедленный вызовОшибка s3 с кодом состояния 403:
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>AAC2B5FC5C74C971</RequestId><HostId>l8AOygYbUT+Y1QhTjHydRJ9Uxc97ElSZ+l6H2RQlNglpQuZrqQPW532U6Pixil7YPZ4ugpreoSs=</HostId></Error>
Вот мой код настройки AWS creds:
buildCognitoCreds(idTokenJwt: string) {
let url = 'cognito-idp.' + CognitoUtil._REGION.toLowerCase() + '.amazonaws.com/' + CognitoUtil._USER_POOL_ID;
if (environment.cognito_idp_endpoint) {
url = environment.cognito_idp_endpoint + '/' + CognitoUtil._USER_POOL_ID;
}
let logins: CognitoIdentity.LoginsMap = {};
logins[url] = idTokenJwt;
let params = {
IdentityPoolId: CognitoUtil._IDENTITY_POOL_ID, /* required */
Logins: logins
};
let serviceConfigs = <awsservice.ServiceConfigurationOptions>{};
if (environment.cognito_identity_endpoint) {
serviceConfigs.endpoint = environment.cognito_identity_endpoint;
}
let creds = new AWS.CognitoIdentityCredentials(params, serviceConfigs);
this.setCognitoCreds(creds);
return creds;
}
Чего мне не хватает?Независимо от того, что я пытаюсь, я получаю отказано в доступе.