У меня есть две учетные записи AWS.Учетная запись A имеет пул удостоверений Cognito, настроенный с ролями для Аутентифицированной и Неаутентифицированной.
Политика надежных отношений для Аутентифицированной роли выглядит следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "<identity_pool_id>"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com:amr": "authenticated"
}
}
}
]
}
Существуеттакже политика для Аутентифицированной роли, которая выглядит следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::users-pictures/public/*",
"arn:aws:s3:::users-pictures/protected/${cognito-identity.amazonaws.com:sub}/*",
"arn:aws:s3:::users-pictures/private/${cognito-identity.amazonaws.com:sub}/*"
],
"Effect": "Allow"
},
{
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::users-pictures/uploads/*"
],
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::users-pictures/protected/*"
],
"Effect": "Allow"
},
{
"Condition": {
"StringLike": {
"s3:prefix": [
"public/",
"public/*",
"protected/",
"protected/*",
"private/${cognito-identity.amazonaws.com:sub}/",
"private/${cognito-identity.amazonaws.com:sub}/*"
]
}
},
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::users-pictures"
],
"Effect": "Allow"
}
]
}
На учетной записи BI есть приложение, которое должно проходить проверку подлинности на Cognito из учетной записи A, но ему необходим доступ к корзине для учетной записи B.
Это приложение использует хранилище из Amplify.
Структура корзины должна выглядеть примерно так:
users-pictures/private/${cognito-identity.amazonaws.com:sub}/*
Когда Amplify аутентифицируется на учетной записи Aи пытается получить доступ к этому сегменту учетной записи B, он получает отказано в доступе (403).
Возможно, ему не хватает какой-либо конфигурации для учетной записи A и / или учетной записи B.
Не могли бы вы мне помочь,пожалуйста