当前位置: 首页 > 知识库问答 >
问题:

承担角色:无法从系统设置中加载凭据

虞俊美
2023-03-14

创建了一个Java应用程序并部署在EC2实例中,将EC2实例配置文件角色与实例相关联

通过AWS调用AWS API时JavaSDK V2以及V1得到以下错误

KmsClient client = KmsClient.builder().region(amazonSessionMapper.getRegion()).build();

无法从系统设置加载凭据。必须通过环境变量(AWS_Access_key_ID)或系统属性(AWS.accessKeyId)指定访问密钥。

是否有任何与权限/设置相关的内容

注意:我不想在应用程序中使用访问密钥和密钥,我想使用STS承担角色

FINEST|1432182/0|Service controller|22-01-20 13:49:37|software.amazon.awssdk.core.exception.SdkClientException: 
Unable to load credentials from system settings. Access key must be specified either via environment variable (AWS_ACCESS_KEY_ID)
 or system property (aws.accessKeyId). FINEST|1432182/0|Service controller|22-01-20 13:49:37|   
 at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:98) ~[software.amazon.awssdk-sdk-core-2.16.84.jar:?] 
 FINEST|1432182/0|Service controller|22-01-20 13:49:37| at software.amazon.awssdk.auth.credentials.internal.SystemSettingsCredentialsProvider.
 resolveCredentials(SystemSettingsCredentialsProvider.java:58) ~[software.amazon.awssdk-auth-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37|  
 at software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain.resolveCredentials(AwsCredentialsProviderChain.java:91) 
 ~[software.amazon.awssdk-auth-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37|    
 at software.amazon.awssdk.auth.credentials.internal.LazyAwsCredentialsProvider.resolveCredentials(LazyAwsCredentialsProvider.java:45) 
 ~[software.amazon.awssdk-auth-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37|    
 at software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider.resolveCredentials(DefaultCredentialsProvider.java:104) 
 ~[software.amazon.awssdk-auth-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37|    
 at software.amazon.awssdk.awscore.client.handler.AwsClientHandlerUtils.createExecutionContext(AwsClientHandlerUtils.java:79) 
 ~[software.amazon.awssdk-aws-core-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37|    
 at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.createExecutionContext(AwsSyncClientHandler.java:68) 
 ~[software.amazon.awssdk-aws-core-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37|    
 at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:99) 
 ~[software.amazon.awssdk-sdk-core-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37|    
 at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:169) 
 [software.amazon.awssdk-sdk-core-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37| 
 at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:95) 
 [software.amazon.awssdk-sdk-core-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37| 
 at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45) 
 [software.amazon.awssdk-sdk-core-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37| 
 at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:55) 
 [software.amazon.awssdk-aws-core-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37| 
 at software.amazon.awssdk.services.kms.DefaultKmsClient.listAliases(DefaultKmsClient.java:4466) 
 [software.amazon.awssdk-kms-2.16.84.jar:?] FINEST|1432182/0|Service controller|22-01-20 13:49:37|  
at software.amazon.awssdk.services.kms.KmsClient.listAliases(KmsClient.java:7885) [software.amazon.awssdk-kms-2.16.84.jar:?]ases(KmsClient.java:7885) [software.amazon.awssdk-kms-2.16.84.jar:?]

共有1个答案

梁丘伟
2023-03-14

您需要创建一个凭据提供者并在您的客户端中使用:

AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain();

然后,您将能够将此提供程序与 .with 证书方法一起使用

 AWSKMS kmsClient = AWSKMSClientBuilder.standard()
                .withCredentials(credentialsProvider)
                .withRegion("us-east-1")
                .build();
 类似资料:
  • 是否可以将IAM角色链接到Cognito用户池中Cognito用户的Cognito组? 我的配置: Cognito用户池: 认知用户属于 认知组已分配给. null null 这段代码允许我对Cognito用户池进行身份验证: 然后从cognito标识池中获取链接到cognito用户池的凭据:

  • 我正在设置一些文件传输脚本,并正在使用boto3来做这件事。 我需要从本地发送一些文件到第三方AWS帐户(跨帐户)。我在另一个帐户上设置了一个角色,具有写入桶的权限,并将此角色分配给了我帐户上的一个用户。 我可以在CLI上做到这一点,但Boto一直在为桶踢出一个AccessDenied错误。 编辑:作为对John的多部分权限评论的回应,我尝试通过put_object方法上传以绕过此操作-但仍然被访

  • 获取错误 引起原因:org.springframework.beans.BeanInstantiationExc0019:未能实例化[software.amazon.awssdk.services.dynamodb.DynamoDbClient]:工厂方法'amazonDynamoDB'抛出异常;嵌套异常java.lang.NullPointerExc0019: STS客户端不得为空。atspri

  • 问题内容: 我有两个AWS账户-假设A和B. 在帐户B中,我定义了一个角色,该角色允许从帐户A中访问另一个角​​色。我们称其为角色B 在帐户A中,我定义了一个角色,该角色允许root用户承担角色。让我们称之为角色A 角色A附加了以下策略 作为帐户A的用户,我担任角色A。现在使用此临时凭据,我想承担角色B并访问帐户B拥有的资源。我有以下代码 该代码适用于我从客户端获得的一组角色,但不适用于我在我有权

  • 在我们的应用程序中,我们使用自定义角色访问aws API。在开发者环境中,我们在app.config中提供访问密钥和秘密密钥,它工作得很好。 在prod环境中,我们设置了一个IAM角色,该角色对自定义角色具有必要的权限,EC2实例将使用该IAM角色启动。当我们尝试使用代码切换角色时,我们会遇到以下错误 消息:用户:arn:aws:sts::XXXXXXXXX:假定角色//i-0490fbbb5ea

  • 系统角色是系统设置的角色,不可以修改角色名称与权限。系统角色分为: 地图管理员:拥有此地图所有权限,角色里邀请成员 图层成员: 拥有该图层的管理权限,包括创建子图层、批量导入数据、删除数据、清空数据、修改数据、分配数据给数据成员 数据成员:管理被指派的数据 游客: 对全部数据只能查看,不能修改、删除等操作 1.查看权限的步骤: 例如查看地图管理员的权限,点击地图管理员那栏的“权限说明”,可以查看权