【问题标题】:How to invoke secrets from AWS Secrets Manager into code to get the data from an Amazon DyanmoDB table如何将 AWS Secrets Manager 中的密钥调用到代码中以从 Amazon DyanmoDB 表中获取数据
【发布时间】:2021-09-02 08:13:42
【问题描述】:

我已将 AWS IAM 用户访问密钥和密钥存储在 AWS Secrets Manager 的密钥中。

此密钥有助于从 Amazon DynamoDB 表中获取数据,并且密钥对 Amazon DynamoDB 表具有完全访问权限。我需要在 java/.Net 代码中使用这个秘密来从 DynamoDB 表中检索数据。

秘密名称:dynamodbtesting

以下是我在创建密钥时使用的示例密钥名称。

{
 "aws_access_key_id": "value",
 "aws_secret_access_key": "secret value"
}

如何在 java/.Net 代码中使用 secret 从 DynamoDB 表中获取日期?

注意:在秘密管理器中创建秘密后,我可以看到一个示例代码,有用吗?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-secrets-manager


    【解决方案1】:

    使用 AWS Java SDK 时,当您构建访问 dynamodb 的客户端时,您可以显式传递凭证:

    https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-explicit

    例如:

    BasicAWSCredentials awsCreds = new BasicAWSCredentials("access_key_id", "secret_key_id");
    AmazonS3 dynamodbClient = AmazonDynamoDBClientBuilder.standard()
                        .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
                        .build();
    

    【讨论】:

      【解决方案2】:

      回答您的问题:“如何在 java 中使用秘密”

      您可以使用 Secrets Manager Java API V2 检索密钥。以下 Java 代码向您展示了如何执行此用例:

      import software.amazon.awssdk.regions.Region;
      import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
      import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
      import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse;
      import software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException;
      //snippet-end:[secretsmanager.java2.get_secret.import]
      
      /**
       * To run this AWS code example, ensure that you have setup your development environment, including your AWS credentials.
       *
       * For information, see this documentation topic:
       *
       *https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
       */
      
      public class GetSecretValue {
      
          public static void main(String[] args) {
      
              final String USAGE = "\n" +
                      "Usage:\n" +
                      "    GetSecretValue  <secretName> \n\n" +
                      "Where:\n" +
                      "    secretName - the name of the secret (for example, tutorials/MyFirstSecret). \n";
      
              if (args.length != 1) {
                  System.out.println(USAGE);
                  System.exit(1);
              }
      
              String secretName = args[0];
              Region region = Region.US_EAST_1;
              SecretsManagerClient secretsClient = SecretsManagerClient.builder()
                      .region(region)
                      .build();
      
              getValue(secretsClient, secretName);
              secretsClient.close();
          }
      
          //snippet-start:[secretsmanager.java2.get_secret.main]
          public static void getValue(SecretsManagerClient secretsClient,String secretName) {
      
              try {
                  GetSecretValueRequest valueRequest = GetSecretValueRequest.builder()
                      .secretId(secretName)
                      .build();
      
                  GetSecretValueResponse valueResponse = secretsClient.getSecretValue(valueRequest);
                  String secret = valueResponse.secretString();
                  System.out.println(secret);
      
              } catch (SecretsManagerException e) {
                  System.err.println(e.awsErrorDetails().errorMessage());
                  System.exit(1);
              }
          }
          //snippet-end:[secretsmanager.java2.get_secret.main]
      }
      

      您可以在此处找到此 AWS 服务的此示例和其他示例:

      https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/example_code/secretsmanager

      【讨论】:

        猜你喜欢
        • 2023-02-14
        • 2021-10-29
        • 2021-09-18
        • 2020-09-29
        • 2021-06-25
        • 1970-01-01
        • 2020-08-14
        • 2020-07-23
        • 2020-02-27
        相关资源
        最近更新 更多