Кратко объяснена проблема:
Я получаю это AWSSecretsManagerException AccessDenied, когда мое веб-приложение выполняет вызовы API для AWS Secrets Manager для получения секретных ключей / данных.
![enter image description here](https://i.stack.imgur.com/fg7T0.png)
Проблема более подробно:
У меня есть файл войны веб-приложения, развернутый в AWS ElasticBeanstalk , У меня есть приложение React внешнего интерфейса на AWS Amplify, которое отправляет HTTPS-запрос к файлу WAR.
В рамках обработки этого запроса веб-приложение взаимодействует с API PayPal. Для успешного запроса на использование API PayPal мне нужен токен . Чтобы получить этот токен, мое веб-приложение должно отправить в PayPal запрос на получение токена , отправив мой идентификатор клиента Pay Pal и секретный ключ .
Чтобы не вводить это жестко в приложение или иметь локальный конфигурационный файл с этим идентификатором клиента и ключом в виде простого текста, я решил сохранить их в AWS с помощью AWS Secrets Manager. Для доступа к ключам, хранящимся в моем приложении, мне нужно использовать AWS Secrets Manager SDK. Я сделал это, включив эту зависимость в мой pom-файл веб-приложений.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-secretsmanager</artifactId>
<version>1.11.700</version>
</dependency>
Затем я добавил код для получения идентификатора и секретного кода клиента с помощью AWS Secrets Manager SDK API.
Когда я запускаю свое веб-приложение локально на моей машине на сервере Payara, оно работает. Это означает, что на моем компьютере есть локальное приложение React, которое отправляет HTTP-запрос go в мое локальное веб-приложение на Payara (вместо AWS), и веб-приложение успешно извлекает идентификатор клиента и секреты из AWS секретов. Manager.
Однако при развертывании моего веб-приложения в экземпляре Elasti c Beanstalk EC2 я получаю указанное выше исключение из моего приложения React на AWS Amplify.