Search in sources :

Example 1 with ServerException

use of software.amazon.awssdk.services.ecr.model.ServerException 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);
    }
}
Also used : RegistryAuthException(com.aws.greengrass.componentmanager.plugins.docker.exceptions.RegistryAuthException) EcrException(software.amazon.awssdk.services.ecr.model.EcrException) ServerException(software.amazon.awssdk.services.ecr.model.ServerException) AuthorizationData(software.amazon.awssdk.services.ecr.model.AuthorizationData) SdkClientException(software.amazon.awssdk.core.exception.SdkClientException) EcrClient(software.amazon.awssdk.services.ecr.EcrClient)

Aggregations

RegistryAuthException (com.aws.greengrass.componentmanager.plugins.docker.exceptions.RegistryAuthException)1 SdkClientException (software.amazon.awssdk.core.exception.SdkClientException)1 EcrClient (software.amazon.awssdk.services.ecr.EcrClient)1 AuthorizationData (software.amazon.awssdk.services.ecr.model.AuthorizationData)1 EcrException (software.amazon.awssdk.services.ecr.model.EcrException)1 ServerException (software.amazon.awssdk.services.ecr.model.ServerException)1