AWS CodeArtifact

Hands-On

Demo

In this demo, we will:

  1. Create a CodeArtifact domain and repository
  2. Configure repository permissions and upstream repositories
  3. Create and publish a custom Node.js package
  4. Configure npm to use CodeArtifact as a registry
  5. Create a consumer application that uses our published package
  6. Test the setup by installing and using the package
  7. 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