Amazon web services AWS机密管理器异常访问被拒绝

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,我需

问题简要说明:

当我的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文件中包含此依赖项,我做到了这一点

<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消息