serverless/lib/plugins/aws/lib/checkIfEcrRepositoryExists.js

37 lines
1.3 KiB
JavaScript

'use strict';
const { legacy, log } = require('@serverless/utils/log');
module.exports = {
async checkIfEcrRepositoryExists() {
const registryId = await this.provider.getAccountId();
const repositoryName = this.provider.naming.getEcrRepositoryName();
try {
await this.provider.request('ECR', 'describeRepositories', {
repositoryNames: [repositoryName],
registryId,
});
return true;
} catch (err) {
if (err.providerError && err.providerError.code === 'RepositoryNotFoundException') {
return false;
}
if (err.providerError && err.providerError.code === 'AccessDeniedException') {
if (this.serverless.service.provider.ecr && this.serverless.service.provider.ecr.images) {
legacy.log(
'WARNING: Could not access ECR repository due to denied access, but there are images defined in "provider.ecr". ECR repository removal will be skipped.',
'Serverless',
{ color: 'orange' }
);
log.warning(
'Could not access ECR repository due to denied access, but there are images defined in "provider.ecr". ECR repository removal will be skipped.'
);
}
// Check if user has images defined and issue warning that we could not
return false;
}
throw err;
}
},
};