A small Serverless plugin to enable dynamic ECR image naming
npm install serverless-ecr-aliases  
This repository contains a small Serverless plugin
to allow for dynamically named ECR image names.
This allows for dynamically naming your images in ECR with variables, such
as including the Git hash or Serverless Build ID inside your image tag.
This plugin is available via npm, so it can be installed as usual:
``bash`
$ npm i --save-dev serverless-ecr-aliases
There's no need to include it in your production bundle, so make sure it's saved
inside the development dependencies. Once installed, make sure to add it to your
Serverless plugins list:
`yaml`
plugins:
- serverless-ecr-aliases
Try to place this near the start of your plugin list; the sooner this plugin
executes, the less chance there is of any side effects within other plugins.
By default image names are defined via the properties in YAML, which means that
we cannot use variables to accomplish something like this:
`yaml`
ecr:
images:
build_${sls:instanceId}:
path: .
This plugin enables this by allowing an alias field inside image definitions,
which is swapped out prior to templates being created to enable this pattern:
`yaml`
ecr:
images:
placeholder:
path: .
alias: build_${sls:instanceId}
This happens almost immediately, which means that any references should use the
dynamic name rather than the placeholder:
`yaml``
functions:
hello:
image:
name: build_${sls:instanceId}
Everything else will work exactly as before, just referencing and deploying
under the new image name. This is useful for keeping images tagged in ECR via
things like Git hash, etc.
This plugin has been tested against the Serverless v4 release, but will likely
work with many Serverless versions as it mainly uses the AWS CLI exposed by the
framework. If you have any issues, please do file an issue!