Introductory session to AWS CodeCommit
The AWS CodeCommit service allows organizations to securely import and host scalable private Git code repositories. All open source git clients can integrate and work with CodeCommit repositories via the CLI.
CodeCommit also supports several Git commands and works with Jenkins, an open-source tool for continuous integration. There is no size limit with repositories hosted with AWS CodeCommit and can be up to 2GB
AWS CodeCommit stores data in Amazon S3 and Amazon DynamoDB. CodeCommit automatically encrypts files and repositories at rest through AWS Key
Greater security measures can be implemented by integrating CodeCommit with AWS IAM (Identity and Access Management), which enables Admins to assign user-access rights (policies) and establish MFA. Connection to CodeCommit can be achieved via HTTPS or SSH.
Create a Repository on AWS CodeCommit
– Navigate to this Url and select your desired region https://eu-central-1.console.aws.amazon.com/codecommit
Then click on Create Repository
Step 2: Configure the email notification
Here, you can either select an existing SNS Topic or create a new Topic
Now, on the same page a new dialog window pops up and here, you can subscribe users
Enter the email and save
You should get an email, to confirm the subscription to the Topic and close the Subscribe window and save.
Create IAM policies and attach these Policies to the users
– For Admins: Attached AWSCodeCommitFullAccess to the users
- For normal users: Attached AWSCodeCommitPowerUser
Note: Without having these policies assigned to the IAM user(s), you will never be able to clone the repository nor perform any related task.
Now you can select your connection types to get tips
For the HTTP connection to the Repository, I will discuss this in the next article.
Step 3: For SSH connection
To connect using SSh, please follow these steps
Download git for windows from here
Note: Since you are using git, the .ssh file would be located in install path e.g., for me C:\Program Files\Git\etc\ssh
My path, your might be different <installPath>\Git\etc\ssh\ssh_config
Generate your Public and Private Keys for Git and AWS CodeCommit
Run the Git Bash program
– Enter ssh-keygen as shown below to generate your public and private key files and follow the directions to save the file to the .ssh directory for your profile.
Note: This generates the public and private key files
- Navigate to the path .ssh to get the public key and copy the content
- Sign in to AWS Console
note: You must have the right policies assigned in order to perform this.
- In the IAM console, in the navigation pane, choose Users, and from the list of users, choose your IAM user.
- On the user details page, choose the Security Credentials tab, and then choose Upload SSH public key.
- Paste the contents of your SSH public key into the field, and then choose Upload SSH public key.
- Copy or save the information in SSH Key ID (for example, AxxxxxxxxxxxxxxxxxE).
- Navigate to .ssh/config
- Add the following lines to the file, where the user is the SSH Key ID generated after uploading the Public Key.
and the value for IdentityFile is the path to and name of the private key file:
Note: Ensure you give the right name and path of the private key for the IdentityFile and
- Save the file as config
Note: not with any extension but just config and close the notepad. If you use an extension, the ssh connection will fail.
You can test your SSH configuration by running this syntax:
– ssh git-codecommit.us-east-2.amazonaws.com
Step 4: Connect to the AWS CodeCommit Console and Clone the Repository
To connect to an AWS CodeCommit repository
- Open the AWS CodeCommit console at https://console.aws.amazon.com/codecommit.
- In the region selector, choose the right region where the repository was created. Repositories are specific to an AWS region
- Choose the repository and this will open the code page for the specific repository
- Choose Clone URL, and then copy the SSH URL
In the git bash programe (In the Bash emulator), run the git clone command followed by the copied url to clone the repository.
This command will clone and create a local repo in a sundirectory of the directory where this command is run.