A wev plugin to support Amazon Web Services CodeArtifact authorisation on the command line
wev-awscodeartifact:
- βοΈ Plugin for wev (with environment variables).
- π Requests and caches CodeArtifact authorisation tokens.
- π©πΌβπ» Great for freelancers working with multiple clients hosting CodeArtifact repositories.
π₯ The Problem
Say your Pipfile
is configured to pull packages from a private Amazon Web Services CodeArtifact repository:
[[source]]
name = "private"
url = "https://aws:$CODEARTIFACT_AUTH_TOKEN@corp-012345678901.d.codeartifact.eu-west-1.amazonaws.com/pypi/pypi-mirror/simple/"
verify_ssl = true
[packages]
tupper = "*"
[requires]
python = "3.9"
Your Pipfile
expects the CODEARTIFACT_AUTH_TOKEN
environment variable to be set to your authorisation token.
wev-awscodeartifact
extends wev to handle your CodeArtifact authorisation token for you.
π Installation
wev-awscodeartifact
requires Python 3.8 or later and wev.
wev
and wev
plugins are usually happy to run within virtual environments, but that's tricky if your project's Pipfile
has only private sources that require a token. wev-awscodeartifact
cannot generate a token before it's installed.
I recommend installing wev
and wev-awscodeartifact
globally, outside of your virtual environment.
python -m pip install wev
python -m pip install wev-awscodeartifact
βοΈ Configuration
Filename and location
See wevcli.app/configuration for a detailed guide to wev
configuration files.
If in doubt, create your configuration file as wev.yml
in your project directory.
Properties
Property | Required | Description | Default |
---|---|---|---|
account | AWS account ID | Your profile's account | |
domain | βοΈ | CodeArtifact domain name1 | |
profile | AWS named profile to use for authentication | Your default profile | |
region | AWS region hosting the CodeArtifact domain | Your profile's region |
1 The CodeArtifact domain is not the same as the repository's domain name. Given the domain name corp-000000000000.d.codeartifact.eu-west-1.amazonaws.com
, the CodeArtifact domain is corp
.
Examples
Minimal configuration
CODEARTIFACT_AUTH_TOKEN:
plugin:
id: wev-awscodeartifact
domain: corp
Team + personal configuration
You probably don't want to add the profile
property to .wev.yml
if you plan to commit and share it with your team mates. Profile names are personal, and you don't want to force everyone to use the same as you.
If you do need to set profile
, I suggest you create it in .wev.user.yml
(which should not be shared) and let wev
merge it in.
For example:
# .wev.yml
CODEARTIFACT_AUTH_TOKEN:
plugin:
id: wev-awscodeartifact
account: "012345678901"
domain: corp
region: eu-west-1
# .wev.user.yml
CODEARTIFACT_AUTH_TOKEN:
plugin:
profile: work
π» Usage
Run wev
with any command that requires a CodeArtifact authorisation token.
For example, to run pipenv install
with a CodeArtifact authorisation token:
wev pipenv install
More examples:
πββοΈ FAQs
Can I change the environment variable from CODEARTIFACT_AUTH_TOKEN?
Yes! Call it anything you like.
Does wev-awscodeartifact work with other package managers?
Yes! wev-awscodeartifact
will work with any command line tool that needs CodeArtifact authorisation tokens in environment variables.
π Thank you!
My name is Cariad, and I'm an independent freelance DevOps engineer.
I'd love to spend more time working on projects like this, but--as a freelancer--my income is sporadic and I need to chase gigs that pay the rent.
If this project has value to you, please consider βοΈ sponsoring me. Sponsorships grant me time to work on your wants rather than someone else's.
Thank you! β€οΈ