use of software.amazon.awssdk.services.ecr.EcrClient in project aws-greengrass-nucleus by aws-greengrass.
the class EcrAccessor method getCredentials.
/**
* Get credentials(auth token) for a private docker registry in ECR.
*
* @param registryId Registry id
* @return Registry.Credentials - Registry's authorization information
* @throws RegistryAuthException When authentication fails
*/
@SuppressWarnings("PMD.AvoidRethrowingException")
public Registry.Credentials getCredentials(String registryId) throws RegistryAuthException {
try (EcrClient client = getClient()) {
AuthorizationData authorizationData = client.getAuthorizationToken(GetAuthorizationTokenRequest.builder().registryIds(Collections.singletonList(registryId)).build()).authorizationData().get(0);
// Decoded auth token is of the format <username>:<password>
String[] authTokenParts = new String(Base64.getDecoder().decode(authorizationData.authorizationToken()), StandardCharsets.UTF_8).split(":");
return new Registry.Credentials(authTokenParts[0], authTokenParts[1], authorizationData.expiresAt());
} catch (ServerException | SdkClientException e) {
// Errors we can retry on
throw e;
} catch (EcrException e) {
throw new RegistryAuthException(String.format("Failed to get credentials for ECR registry - %s", registryId), e);
}
}
Aggregations