Я использую Amazon Kendra для создания системы семантического поиска. Ниже приведен фрагмент моего кода Python, написанный в блокноте Sagemaker:
kendra = boto3.client("kendra",region_name='us-east-1')
index_id = "05d8defe-e2-a9e3-3534de"
query = "boots please"
response = kendra.query(
QueryText = query1,
IndexId = index_id
)
«ответ» выдает мне ошибку:
AccessDeniedException: An error occurred (AccessDeniedException) when calling the Query operation: User: arn:aws:sts::9174853:assumed-role/AmazonSageMaker-ExecutionRole-2023083103184/SageMaker is not authorized to perform: kendra:Query on resource: arn:aws:kendra:us-east-1:9174853:index/5ba72cde-24e-8736-020a21bce
Вот основные шаги, которые я выполнил: создайте сегмент в S3, загрузите набор данных, создайте индекс в Kendra и назначьте ему роль, подключите индекс к источнику данных (S3) и назначьте ему новую роль (отличную от роль индекса), синхронизируйте данные и выполните вышеупомянутый код.
Некоторые уточнения:
Почему я получаю эту ошибку и как ее исправить?





Согласно сообщению об ошибке, роль индекса Kendra не авторизована для выполнения действия запроса по индексу Kendra. Вы можете явно добавить разрешение и повторить попытку. Или вы можете попытаться создать новый индекс и позволить Kendra создать для вас роль индекса на этапе создания индекса Kendra. Это рекомендуемый подход.
У Кендры есть два типа ролей: роль индекса и роль источника данных. Убедитесь, что вы добавили все соответствующие разрешения для роли индекса.
Кроме того, ваш код принимает на себя роль «AmazonSageMaker-ExecutionRole-2023083103184/SageMaker», вам необходимо предоставить эту роль разрешениям на выполнение «kendra:Query» на ресурсе «arn:aws:kendra:us-east-1:9174853: index/5ba72cde-24e-8736-020a21bce". Вам понадобится что-то вроде ниже: ` { "Эффект": "Разрешить", "Действие": "kendra:Query", "Ресурс": "arn:aws:kendra:region:account-id:index/index-id" } `
Ваш ответ можно улучшить, добавив дополнительную вспомогательную информацию. Пожалуйста, отредактируйте , добавив дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.
Я исправил проблему. Вот как я это сделал:
Я прикрепил политику «AmazonKendraFullAccess» к роли SageMaker (AmazonSageMaker-ExecutionRole-xxxxxxxxx) в консоли AWS Identity and Access Management (IAM).
Я назначил роли Кендры в разделе IAM -> Роли все необходимые разрешения — S3FullAccess, AdministratorAccess, доступ Sgemaker и доступ к другим ролям. Ошибка сохраняется.