AWS CodeArtifact
Hands-On
Demo

In this demo, we will:
- Create a CodeArtifact domain and repository
- Configure repository permissions and upstream repositories
- Create and publish a custom Node.js package
- Configure npm to use CodeArtifact as a registry
- Create a consumer application that uses our published package
- Test the setup by installing and using the package
- Clean up resources
Agenda


company-repo

company-domain
Select domain

Additional configuration

Review and create

Step 1: Create repository

Step 2: Select domain

Create repository - 2nd
python-repo
Python package repository

Select domain
company-domain

Review and create

Step 1: Create repository

Step 2: Select domain

Domain

Repositories

company-repo





Create Local Project Structure
mkdir codeartifact-demo
cd codeartifact-demo

Check Local .npmrc
cat ~/.npmrc

Apply repository policy




Edit repository policy

Successfully saved your repository's policy.

Create CodeArtifact-User
codeartifact-user

codeartifact
Set permissions

Review and create

Create access key for codeartifact-user

Alternatives recommended

Set description tag

Retrieve access keys
PAUSE AND CONFIGURE AWS COMMAND LINE

aws configure
aws configure

aws codeartifact login --tool npm --repository company-repo --domain company-domain --region us-east-1 --domain-owner <AWS-ACCOUNT-ID>
aws codeartifact login

cat ~/.npmrc

npm config list

npm ping

npm install lodash

npm list lodash

mkdir my-company-utils
cd my-company-utils

npm init -y

mv package.json package.json.backup

{
"name": "@company/utils",
"version": "1.0.0",
"description": "Company utility functions",
"main": "index.js",
"scripts": {
"co:login": "aws codeartifact login --tool npm --repository company-repo --domain company-domain",
"prepare": "npm run co:login"
},
"keywords": ["utilities", "company"],
"author": "Your Name",
"license": "MIT"
}

// index.js
function formatCurrency(amount, currency = 'USD') {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: currency
}).format(amount);
}
function validateEmail(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
module.exports = {
formatCurrency,
validateEmail
};
index.js

npm publish


Verify company-repo


Connect to repository for python package manager

cd ..

aws codeartifact login --tool pip --repository python-repo --domain company-domain --region us-east-1 --domain-owner


pip config list

pip install requests

mkdir package-test
cd package-test

export CODEARTIFACT_AUTH_TOKEN=$(aws codeartifact get-authorization-token --domain company-domain --query authorizationToken --output text)
echo $CODEARTIFACT_AUTH_TOKEN

npm init -y
npm install @company/utils
code .

test.js
const { formatCurrency, validateEmail } = require('@company/utils');
console.log(formatCurrency(1234.56)); // $1,234.56
console.log(validateEmail('test@example.com')); // true
console.log(validateEmail('invalid-email')); // false

node test.js
Clean Up

npm config delete registry

npm config delete //company-domain-211125437318.d.codeartifact.us-east-1.amazonaws.com/npm/company-repo/:_authToken

pip config unset global.index-url

rm -rf my-company-utils
rm -rf package-test

Delete repository

Delete repository

Delete repository

Delete repository

Delete domain

Delete IAM User


confirm
🙏
Thanks
for
Watching
AWS CodeArtifact - Hands-On Demo
By Deepak Dubey
AWS CodeArtifact - Hands-On Demo
AWS CodeArtifact - Hands-On Demo
- 22