-
Book Overview & Buying
-
Table Of Contents
-
Feedback & Rating

Machine Learning with Amazon SageMaker Cookbook
By :

In the previous recipe, we have prepared and built the custom container image using the docker build
command. In this recipe, we will push the custom container image to an Amazon ECR repository. If this is your first time hearing about Amazon ECR, it is simply a fully managed container registry that helps us manage our container images.
After pushing the container image to an Amazon ECR repository, we can use this image for training and deployment in the Using the custom Python algorithm container image for training and inference with Amazon SageMaker Local Mode recipe.
Here are the prerequisites for this recipe:
The initial steps in this recipe focus on creating the ECR repository. Let's get started:
Figure 2.62 – Navigating to the ECR console
As you can see, we can use the search bar to quickly navigate to the Elastic Container Registry service. If we type in ecr
, the Elastic Container Registry service in the search results may come up in third or fourth place.
Figure 2.63 – Create repository button
Here, the Create repository button is at the top right of the screen.
$IMAGE_NAME
from the Building and testing the custom Python algorithm container image recipe. In this case, we will use chap02_python
:Figure 2.64 – Create repository form
Here, we have the Create repository form. For Visibility settings, we will choose Private and set the Tag immutability configuration to Disabled.
Figure 2.65 – Create repository button
As we can see, the Create repository button is at the bottom of the page.
Figure 2.66 – Link to the ECR repository page
Here, we have a link under the Repository name column. Clicking this link should redirect us to the repository's details page.
Figure 2.67 – View push commands button (upper right)
As we can see, the View push commands button is at the top right of the page, beside the Edit button.
aws ecr get-login-password …
, from the dialog box.Figure 2.68 – Push commands dialog box
Here, we can see multiple commands that we can use. We will only need the first one (aws ecr get-login-password …
). Click the icon with two overlapping boxes on the right-hand side of the code box to copy the entire line to the clipboard.
Figure 2.69 – New Terminal
The preceding screenshot shows us how to create a new Terminal. Click the green plus button and then select New Terminal from the list of options. Note that the green plus button is directly under the Editor pane.
ml-python
directory:cd /home/ubuntu/environment/opt/ml-python
ACCOUNT_ID=$(aws sts get-caller-identity | jq -r ".Account") echo $ACCOUNT_ID
IMAGE_URI
value and use the ECR repository name we specified while creating the repository in this recipe. In this case, we will run IMAGE_URI="chap02_python"
:IMAGE_URI="<insert ECR Repository URI>" TAG="1"
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com
Important note
Note that we have assumed that our repository is in the us-east-1
region. Feel free to modify the region in the command if needed. This applies to all the commands in this chapter.
docker tag
command:docker tag $IMAGE_URI:$TAG $ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/$IMAGE_URI:$TAG
docker push
command:docker push $ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/$IMAGE_URI:$TAG
At this point, our custom container image should now be successfully pushed into the ECR repository.
Now that we have completed this recipe, we can proceed with using this custom container image for training and inference with SageMaker in the next recipe. But before that, let's see how this works!
In the previous recipe, we used the docker build
command to prepare the custom container image. In this recipe, we created an Amazon ECR repository and pushed our custom container image to the repository. With Amazon ECR, we can store, manage, share, and run custom container images anywhere. This includes using these container images in SageMaker during training and deployment.
When pushing the custom container image to the Amazon ECR repository, we need the account ID, region, repository name, and tag. Once we have these, the docker push
command will look something like this:
docker push <ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/<REPOSITORY NAME>:<TAG>
When working with container image versions, make sure to change the version number every time you modify this Dockerfile
and push a new version to the ECR repository. This will be helpful when you need to use a previous version of a container image.