Amazon web services AWS机密管理器异常访问被拒绝
问题简要说明: 当我的web应用程序对AWS Secrets Manager进行API调用以获取密钥/数据时,我收到此AWSSecretsManagerException AccessDenied 更详细一点的问题: 我在AWS ElasticBeanstalk上部署了一个Web应用程序war文件。我在AWS Amplify上有一个前端React应用程序,它向WAR文件发出HTTPS请求 作为处理此请求的一部分,Web应用程序与PayPal的API接口。要成功请求使用PayPal的API,我需要一个令牌。要获取该令牌,我的web应用程序需要向PayPal发出请求,通过发送我的PayPal客户端ID和密钥来获取该令牌 为了不将其硬编码到应用程序中,或者让本地配置文件具有客户端id和纯文本密钥,我决定使用AWS Secrets Manager将其存储在AWS中。要访问存储在应用程序中的密钥,我需要使用AWS Secrets Manager SDK。通过在我的Web应用程序pom文件中包含此依赖项,我做到了这一点Amazon web services AWS机密管理器异常访问被拒绝,amazon-web-services,web-applications,amazon-elastic-beanstalk,aws-secrets-manager,Amazon Web Services,Web Applications,Amazon Elastic Beanstalk,Aws Secrets Manager,问题简要说明: 当我的web应用程序对AWS Secrets Manager进行API调用以获取密钥/数据时,我收到此AWSSecretsManagerException AccessDenied 更详细一点的问题: 我在AWS ElasticBeanstalk上部署了一个Web应用程序war文件。我在AWS Amplify上有一个前端React应用程序,它向WAR文件发出HTTPS请求 作为处理此请求的一部分,Web应用程序与PayPal的API接口。要成功请求使用PayPal的API,我需
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-secretsmanager</artifactId>
<version>1.11.700</version>
</dependency>
亚马逊网站
aws java sdk secretsmanager
1.11.700
然后,我添加了使用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应用程序中得到了上述异常。几个小时后,问题得到了解决 首先,您必须注意异常中列出的角色(查看粗体文本): com.amazonaws.services.secretsmanager.model.AWSSecretsManagerException: 用户: arn:aws:sts:::假定角色/aws-elasticbeanstalk-ec2-role/ 未被授权在上执行:secretsmanager:GetSecretValue 资源: arn:aws:secretsmanager:us-east-1::机密: (服务:AWSSecretsManager;状态代码:400;错误代码: AccessDeniedException;请求ID: ) 当您在AWS控制台中时,转到AWS->IAM。从那里单击左侧的角色链接。请注意,上面粗体文本中的角色列在那里(红色圆圈文本) 双击那个 在这个屏幕截图中,我已经这样做了,但最初的secretsmanagerradwrite策略(红色圆圈)并不存在 要获取该策略,请单击“附加策略”。然后在下一页中搜索secretsmanagerradwrite,并单击复选框。点击“附加策略”按钮,现在该角色有了它 现在,我从AWS Amplify上的React应用程序发出的HTTPS请求向ElasticBeanstalk上的Web应用程序发出请求,我不再收到AWSSecretsManagerException AccessDenied消息