wev-awscodeartifact:
A wev plugin to support Amazon Web Services CodeArtifact authorisation on the command line
- ⚙️ Plugin for wev (with environment variables).
- 📋 Requests and caches CodeArtifact authorisation tokens.
- 👩🏼💻 Great for freelancers working with multiple clients hosting CodeArtifact repositories.
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.
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
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.
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
.
CODEARTIFACT_AUTH_TOKEN:
plugin:
id: wev-awscodeartifact
domain: corp
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
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:
Yes! Call it anything you like.
Yes! wev-awscodeartifact
will work with any command line tool that needs CodeArtifact authorisation tokens in environment variables.
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! ❤️