Creating an AWS CodeCommit Repository.
For more information on Code Commit, visit https://aws.amazon.com/codecommit/
CodeCommit Description
This tutorial will walk through the steps required to create your first CodeCommit Repository, and then make your first commit and push to that new repository.
CodeCommit Pre-Requisites
1. Active AWS Account:
You will need to have an active AWS account, as this lab will cover setting up an AWS CodeCommit Repository.
2. IAM User:
You will need an IAM user created with the appropriate permissions (Admin access for this demo). The user should have console access, and access to the CodeCommit service.
IAM User Required:
Code Commit will not allow commits over SSH using the root user.
3. GIT:
You must have GIT installed on your local workstation. For instructions on how to install GIT for your local workstation, go to the Git site, and follow the appropriate instructions for your platform. https://git-scm.com/downloads
IAM User SSH Key
In order to use Code Commit, you will need to have an IAM user with a configured SSH key to access and push to the repository once it has been created. Perform the following steps in order to ensure that the IAM user that you will use, has an SSH key configured for use with the Code Commit service.
1. Open IAM console:
First, logged in as an IAM user, we need to upload an SSH Key that will allow us to push commits to our codecommit repository once it's created. In order to do this go to the IAM console from the list of Services in the main navigational menu drop list. From the top left side of the navigational menu bar, click on the Services menu, and then choose IAM by either navigating to the section of the listed services, or by typing the first few letters of the service name in the search box, and then choosing it from the filtered list.
2. Select User Account:
From the right side menu in the IAM console, select the Users section, and then click on the user that will be creating and committing to the repository.
3. Upload SSH Key:
Next, from the IAM user profile, scroll toward the bottom of the profile, and click the button labeled: Upload SSH public key
In the pop up dialog box, copy your SSH key from your workstation and paste it into the dialog box, and click the Upload SSH public key button.
4. Verify SSH Key:
Once completed, you will return back to your user profile. Again, scroll down to the SSH Key section, and verify that your key is now present in your profile.
Create the Repository
Because we will use CodeCommit as the GIT repository that will store our project code, we must first create a repository where our code will live using the CodeCommit Service.
1. Open CodeCommit Console:
From the top left side of the navigational menu bar, click on the Services menu, and then choose CodeCommit by either navigating to the section of the listed services, or by typing the first few letters of the service name in the search box, and then choosing it from the filtered list.
2. Create Repository:
From within the CodeCommit console screen, Click the Create repository button at the top, in order to create our first repository.
3. Name the Repository:
In the dialog box, choose a name for the repository, and then type out a description. Once you have entered the repository details properly, then click the Create repository button.
4. Email Notifications:
The next screen will allow us to set up any email notifications that we would like. CodeCommit can integrate with SNS in order to send these notifications. If you have a pre-existing SNS topic that you would like to use to send notifications on commit events such as comments, commits, or merge actions, then choose the topic now. You also have the option of creating a new SNS topic directly. To keep this tutorial simple, we are not going to set up notifiations at this time, and instead will just hit the Skip button to proceed.
Configure Repository Connections
1. Get Connection Details:
Once the repository has been created, a dialog box on the left side of the console will appear showing you how to configure your workstation to connect to the new repository. Choose your connection type (SSH) and operating system, and then copy the SSH config details from the Steps to clone your repository section.
IAM User Required:
If you are logged in as the root user, you will NOT be able to get SSH connection details. It is strongly advised that you log out of the root user account, and log in with a valid IAM user that has the appropriate permissions to allow the user to interact with the CodeCommit Service
2. Configure Workstation:
Next, we need to go to our workstation, and open our SSH config file. Once the file has been opened, simply paste the connection config into the file and save the file.
vim ~/.ssh/config
:wq!
3. Create Project Directory:
Next, if we don't have an existing project, then we need to make a local directory on our local workstation where our GIT project can be constructed. Follow the steps for your platform to create a directory named SimpleAPI on our workstation and open a command shell, to navigate to the newly created directory.
mkdir -p ~/Documents/Projects/SimpleAPI
cd ~/Documents/Projects/SimpleAPI
4. Initialize GIT:
Once in the new directory, we will want to initialize the directory to start tracking file changes that will be included in our git commits. In order to initialize a directory, simply type the following command.
Command:
git init
Command Console Output:
Initialized empty Git repository in /Users/awsdocs/Documents/Projects/SimpleAPI/.git/
5. Add Git Repository:
Now that we have GIT initialized, now we need to tell the local git repository what remote GIT repository to push to. We do this with the git remote add
command, using the URL that we copied to our clipboard previously.
Remote Repo Designation:
The word origin between our command and the repository URL is the arbitrary name of the upstream remote repository. We name the remote repository locally, in the event that we want to add multiple upstream repositories to the local repository.
Command:
git remote add origin ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/simpleAPI
Repository URL:
The repository URL can be found on the CodeCommit repository connection details screen. If you have closed the console view already, you can find this information by clicking on your repository and then clicking either the Clone URL button, or the Connect button to show full connection details.
You can verify that the remote repository URL is set properly by looking at all remotely configured remote repositories for your local repository:
Command:
git remote -v
Command Console Output:
origin ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/simpleAPI (fetch) origin ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/simpleAPI (push)
Create the Code Base
Now that we have Git and our repositories all set up, we are ready to construct a code base, that will be pushed to the new repository.
1. Create API Python File:
Using the editor of your choice, create a file named simpleAPI.py and paste the following code content into the file.
# ******************************************************************* # Bottle Example API # Authors/Maintainers: Rich Nason (rnason@awsdocs.com) # ******************************************************************* # Required Modules: # ================= # Install Requirements via PIP from bottle import Bottle, HTTPResponse # Web server # Bottle Parameters: # =================== VERSION = '0.0.1' # API Version BOTTLEIP = '0.0.0.0' # The IP that Bottle will listen on to serve the API BOTTLEPORT = '80' # The TCP port that bottle will use to serve the API # Setup the Bottle WebServer Instance: # ==================================== APP = Bottle(__name__) # Index Route @APP.route('/', method=['OPTIONS', 'GET']) def index(): try: resp_msg = "All systems reporting go for launch!!" body = {'version': VERSION, 'message': resp_msg} response = HTTPResponse(status=200, body=body) return response except Exception as err: print(err) body = {'version': VERSION, 'message': err} response = HTTPResponse(status=400, body=body) return response # Start the Web Server # ===================== if __name__ == '__main__': try: SERVER = APP.run(host=BOTTLEIP, port=BOTTLEPORT, debug=True) except KeyboardInterrupt: pass print('exiting...') SERVER.stop()
Commit the Codes!
Now that we have the directory, repositories and code file all set, its time to make our first commit.
1. Commit:
From the command line, simply use the git add --all
command to add all files in the current directory to the commit, and then use git commit -m "Message"
command to make our commit.
Command:
git add --all; git commit -m "Initial Code Commit"
Command Console Output:
[master (root-commit) d79b1f8] Initial Code Commit 1 files changed, 54 insertions(+) create mode 100644 simpleAPI.py
2. Push your Commit:
Last we need to simply push our commit(s) (Multiple commits can be pushed together). We do this simply by using git push
command.
GIT Command:
when using the git push
command, we need to supply 2 parameters.
- The name of the remote repository that we configured when we added the remote repository to the local repository.
- The branch name that we want to push to.
Command:
git push origin master
Command Console Output:
Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 4.14 KiB | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/simpleAPI * [new branch] master -> master
3. Verify, and Do a Little Dance!:
Once the push has completed, you can log back into CodeCommit, click the repository, and you should see your new commit. Congratulations, you have successfully pushed your first commit to Gitlab!
CodeCommit Conclusion
In this walk through, we configured a CodeCommit repository, we configured the repository and workstation for proper access, we created a code base, and we successfully pushed that code base to our new repository. Using CodeCommit to track code changes for multiple repositories and multiple branches in each repository is simple and easy. The same steps and procedures that apply to other SCM's such as Gitlab, BitBucket, Github, etc.. will also apply to CodeCommit.
CodeCommit Additional Resources
No Additional Resources.
CodeCommit Site/Information References
No Additional References.