【发布时间】:2020-04-24 14:08:32
【问题描述】:
问题简要说明:
当我的 Web 应用程序对 AWS Secrets Manager 进行 API 调用以获取密钥/数据时,我收到此 AWSSecretsManagerException AccessDenied。
更详细的问题:
我有一个 Web 应用程序战争文件部署到 AWS ElasticBeanstalk。我在 AWS Amplify 上有一个前端 React 应用程序,它向 WAR 文件发出 HTTPS 请求。
作为处理此请求的一部分,Web 应用程序连接到 PayPal 的 API。要成功请求使用 PayPal 的 API,我需要一个 token。要获取该令牌,我的网络应用程序需要通过发送我的 Pay Pal 客户 ID 和 密钥 向 PayPal 发出请求以获取该令牌。
为了不将其硬编码到应用程序中,或者拥有一个带有该客户端 ID 和纯文本密钥的本地配置文件,我决定使用 AWS Secrets Manager 将它们存储在 AWS 中。要访问存储在我的应用程序中的密钥,我需要使用 AWS Secrets Manager SDK。我通过在我的 Web 应用程序 pom 文件中包含此依赖项来做到这一点。
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-secretsmanager</artifactId>
<version>1.11.700</version>
</dependency>
然后我添加了代码以使用 AWS Secrets Manager SDK API 检索客户端 ID 和密钥。
当我在 Payara 服务器上的机器上本地运行我的 Web 应用程序时,它可以工作。这意味着我的机器上有一个本地 React 应用程序,它的 HTTP 请求转到我在 Payara(而不是 AWS)上的本地 Web 应用程序,并且 Web 应用程序成功地从 AWS Secrets Manager 中提取了客户端 ID 和密钥。
但是,当我将 Web 应用程序部署到 Elastic Beanstalk EC2 实例时,我从 AWS Amplify 上的前端 React 应用程序收到上述异常。
【问题讨论】:
标签: amazon-web-services web-applications amazon-elastic-beanstalk aws-secrets-manager