AWS加载客户端凭据

时间:2020-08-20 19:17:59

标签: amazon-web-services scala amazon-ec2

我正在尝试编写我的第一个Scala lambda,并在尝试加载我的Phoenix Db查询凭据时遇到问题。

我正在使用以下内容(其他开发人员已使用过)自动加载凭据。

    libraryDependencies += "org.scalikejdbc" %% "scalikejdbc" % "3.4.0"

    import software.amazon.awssdk.services.ec2.Ec2Client._

    val client = Ec2Client.builder()
              .region(Region.US_EAST_1)
              .build()
    val response = Try(client.describeInstances(request))

无论如何尝试引用客户端,都会得到以下错误:

DEBUG software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain - Unable to load credentials from SystemPropertyCredentialsProvider(): 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).
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).
    at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:97)
    at software.amazon.awssdk.auth.credentials.internal.SystemSettingsCredentialsProvider.resolveCredentials(SystemSettingsCredentialsProvider.java:58)
    at software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain.resolveCredentials(AwsCredentialsProviderChain.java:91)
    at software.amazon.awssdk.auth.credentials.internal.LazyAwsCredentialsProvider.resolveCredentials(LazyAwsCredentialsProvider.java:52)
    at software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider.resolveCredentials(DefaultCredentialsProvider.java:98)
    at software.amazon.awssdk.awscore.client.handler.AwsClientHandlerUtils.createExecutionContext(AwsClientHandlerUtils.java:70)
    at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.createExecutionContext(AwsSyncClientHandler.java:68)
    at software.amazon.awssdk.core.client.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:68)
    at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:44)
    at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:55)
    at software.amazon.awssdk.services.ec2.DefaultEc2Client.describeInstances(DefaultEc2Client.java:9557)
...
...
...

现在,奇怪的是我可以为DynamoDb加载它并进行查询。

  val client: AmazonDynamoDB = AmazonDynamoDBClientBuilder.standard().build()
  val dynamoDB = new DynamoDB(client)  //this works just fine.

谁能建议我可能缺少要加载的凭据?

谢谢

1 个答案:

答案 0 :(得分:1)

这不是错误,它是来自AWS开发工具包的内部调试消息。它被记录为here,如果您在上方看几行,将会看到以下注释:

// Ignore any exceptions and move onto the next provider

不一定是最佳编码实践,但您不必担心。我建议为software.amazon.awssdk禁用DEBUG级别的日志记录。

现在,奇怪的是,我可以为DynamoDb加载它并进行查询

这是因为SDK在创建EC2客户端时找到了凭据提供程序,并将其重新用于创建DynamoDB客户端。