Estoy tratando de leer los parámetros de AWS del almacén de parámetros usando Java, he creado los parámetros usando una clave de cifrado personalizada. No veo un código de muestra en Internet donde está usando una clave KMS personalizada, el siguiente es el código que tengo actualmente que está funcionando (aquí estamos usando la clave KMS predeterminada).
AWSSimpleSystemsManagement client= AWSSimpleSystemsManagementClientBuilder.defaultClient(); GetParametersRequest request= new GetParametersRequest(); request.withNames("test.username","test.password") .setWithDecryption(true);Esto dará los resultados con la clave KMS predeterminada. ¿Alguien sabe cómo manejar esto si tenemos una clave KMS personalizada?
por si acaso, si alguien busca esto (con clave de cifrado predeterminada)
protected Parameter getParameterFromSSMByName(String parameterKey) { AWSCredentialsProvider credentials = InstanceProfileCredentialsProvider.getInstance(); AWSSimpleSystemsManagement simpleSystemsManagementClient = (AWSSimpleSystemsManagement)((AWSSimpleSystemsManagementClientBuilder)((AWSSimpleSystemsManagementClientBuilder)AWSSimpleSystemsManagementClientBuilder.standard().withCredentials(credentials)).withRegion("us-east-1")).build(); GetParameterRequest parameterRequest = new GetParameterRequest(); parameterRequest.withName(parameterKey).setWithDecryption(Boolean.valueOf(true)); GetParameterResult parameterResult = simpleSystemsManagementClient.getParameter(parameterRequest); return parameterResult.getParameter(); }Aquí está la respuesta de @Extreme como clase con importaciones y un poco de limpieza:
import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.InstanceProfileCredentialsProvider; import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagement; import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClientBuilder; import com.amazonaws.services.simplesystemsmanagement.model.GetParameterRequest; import com.amazonaws.services.simplesystemsmanagement.model.GetParameterResult; public class AWSSsmHelper { private AWSCredentialsProvider credentials = InstanceProfileCredentialsProvider.getInstance(); private AWSSimpleSystemsManagement simpleSystemsManagementClient = AWSSimpleSystemsManagementClientBuilder.standard().withCredentials(credentials)).withRegion("us-east-1")).build(); public String getParameterFromSSMByName(String parameterKey) { GetParameterRequest parameterRequest = new GetParameterRequest(); parameterRequest.withName(parameterKey).setWithDecryption(Boolean.valueOf(true)); GetParameterResult parameterResult = simpleSystemsManagementClient.getParameter(parameterRequest); return parameterResult.getParameter().getValue(); } }Para la API GetParameters , no hay diferencia entre usar la clave KMS predeterminada o la clave KMS personalizada. Siempre funciona como su código. Solo asegúrese de que el permiso para la credencial incluya la clave personalizada.
La diferencia solo en la API PutParameter , cuando usa una clave KMS predeterminada, no necesita especificarla, cuando usa una clave KMS personalizada, establece su KeyId en la clave personalizada. El KeyId puede ser uno de los siguientes ejemplos: