0

这是我的 getSecret 函数,用于从 AWSSecretsManager 获取名称和密码

public static void getSecret() {

        String secretName = "test-eg-gtp-tax-engine-adapter-mvp";
        String region = "us-west-2";

        // Create a Secrets Manager client
        AWSSecretsManager client  = AWSSecretsManagerClientBuilder.standard().withRegion(region).build();
        GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest().withSecretId(secretName);
        GetSecretValueResult getSecretValueResult = null;

        getSecretValueResult = client.getSecretValue(getSecretValueRequest);
        System.out.println("name  " + getSecretValueResult.getName());
        System.out.println("secret:  " + getSecretValueResult.getSecretString());
    }

我想将这两个值传递给另一个函数的相应变量(名称,秘密),我该怎么做,我应该如何更改 getSecret() 函数的返回类型?

4

4 回答 4

2

最好的方法是创建一个代表name和的类secret

class SecretInfo  {

    String name;
    String secret;
}

然后你可以从你的方法中返回。


正如评论中提到的@Typhon,您也可以只返回一个数组,但这似乎不太明确和安全。

于 2021-03-12T18:58:59.033 回答
0

正如我在评论中提到的,如果要返回多个值,可以将方法的返回类型更改为数组

public static String [] getSecret() {

        String secretName = "test-eg-gtp-tax-engine-adapter-mvp";
        String region = "us-west-2";

        // Create a Secrets Manager client
        AWSSecretsManager client  = AWSSecretsManagerClientBuilder.standard().withRegion(region).build();
        GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest().withSecretId(secretName);
        GetSecretValueResult getSecretValueResult = null;

        getSecretValueResult = client.getSecretValue(getSecretValueRequest);
        System.out.println("name  " + getSecretValueResult.getName());
        System.out.println("secret:  " + getSecretValueResult.getSecretString());
        
        return new String[]{getSecretValueRequest.getName(),getSecretValueRequest.getSecretString};
    }

或者正如@Henry 所说

class SecretInfo  {

    String name;
    String secret;
}

然后在你的方法中

public static SecretInfo getSecret() {

        String secretName = "test-eg-gtp-tax-engine-adapter-mvp";
        String region = "us-west-2";

        // Create a Secrets Manager client
        AWSSecretsManager client  = AWSSecretsManagerClientBuilder.standard().withRegion(region).build();
        GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest().withSecretId(secretName);
        GetSecretValueResult getSecretValueResult = null;

        getSecretValueResult = client.getSecretValue(getSecretValueRequest);
        System.out.println("name  " + getSecretValueResult.getName());
        System.out.println("secret:  " + getSecretValueResult.getSecretString());

        return new SecretInfo(getSecretValueResult.getName(),getSecretValueResult.getSecretString());
    }
于 2021-03-12T19:08:19.320 回答
0
// Model class having required properties

public class Secret {
    
        private String name;
        private String secretString;
        
        public Secret(String name,String secretString){
            this.name=name;
            this.secretString=secretString;
        }
        // setter getter
    }
    
    // Return type is of Secret

    public static Secret getSecret() {
    
            String secretName = "test-eg-gtp-tax-engine-adapter-mvp";
            String region = "us-west-2";
    
            // Create a Secrets Manager client
            AWSSecretsManager client  = AWSSecretsManagerClientBuilder.standard().withRegion(region).build();
            GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest().withSecretId(secretName);
            GetSecretValueResult getSecretValueResult = null;
    
            getSecretValueResult = client.getSecretValue(getSecretValueRequest);
            System.out.println("name  " + getSecretValueResult.getName());
            System.out.println("secret:  " + getSecretValueResult.getSecretString());
    
            // return new object of Secret
            return new Secret(getSecretValueResult.getName(),getSecretValueResult.getSecretString());
        }
于 2021-03-12T19:32:02.787 回答
0

我不确定您是否正在使用 kotlin,但如果您是,您可以按照@Alex.T 的建议使用,并且可以通过使用类型别名Pair<String, String>来提高代码的可读性 :

typealias SecretData = Pair<String, String>

fun getSecret(): SecretData {
    //...//
    return getSecretValueResult.getName() to getSecretValueResult.getSecretString()
}

但我更喜欢数据类:

data class SecretData(val name: String, val secret: String)
于 2021-03-12T22:54:15.120 回答