top | item 23484270

AWS CodeArtifact: A fully managed software artifact repository service

167 points| rawrenstein | 5 years ago |aws.amazon.com

86 comments

order

WatchDog|5 years ago

This has been a fairly obvious service that has been missing for a while, nice to see them provide a solution.

Most dependency management tools have some kind of hacky support for using S3 directly.

Full fledged artifact management tools like Artifactory and Nexus support S3 backed storage.

Interesting to see that the pricing is approximately double that of S3, for what I imagine is not much more than a thin layer on top of it.

ludjer|5 years ago

Considering the price of Nexus and Artifactory this is way cheaper for a SAAS offering with SLA's. I imagine Artifactory is really going to have to up their product offering or at least lower their entry prices.

mcrute|5 years ago

> Interesting to see that the pricing is approximately double that of S3, for what I imagine is not much more than a thin layer on top of it.

There's a lot of necessary complexity in the backing platform. Encrypted package blobs are stored in S3 but there are a bunch of other distributed systems for doing things like package metadata tracking and indexing, upstream repository management, encryption, auditing, access control, package manager front-ends, etc... that are not immediately obvious and add cost. The platform that backs CodeArtifact is far from what I'd call a thin layer on top of S3. There is also a team of humans that operate and expand the platform.

Source: I lead the technical design for the product as well as a chunk of the implementation but left the team around mid-2018.

djhaskin987|5 years ago

To add to your list of Artifactory and Nexus, Pulp[1] is also a cool project in this space, and is fully open source.

Honestly the fact that they only support javascript, Python and Java is pretty bare bones compared to what the others on the above list support, and again as you say, for a fairly high price.

1: https://pulpproject.org/

StreamBright|5 years ago

We have used S3 successfully several times. You can create a Maven repository, use it as RPM repo and many other use cases to host artifacts. I am not sure what functionality is missing that cannot be implemented on the top of S3 and requires CodeArtifact.

entee|5 years ago

> Interesting to see that the pricing is approximately double that of S3, for what I imagine is not much more than a thin layer on top of it.

Haven’t looked carefully, but is there a difference in the guarantees it provides? Might be a performance or SLA difference.

antoncohen|5 years ago

The login credentials expire after 12 hours (or less)[1], just like with their Docker registry (ECR). That makes it pretty annoying to use, especially on developer laptops.

GCP has a similar offering[2]. And GitHub[3].

[1] https://docs.aws.amazon.com/codeartifact/latest/ug/python-co...

[2] https://cloud.google.com/artifact-registry

[3] https://github.com/features/packages

blaisio|5 years ago

I could not disagree more re. the expiring credentials. It is a bad practice to have credentials that never expire, especially on developer laptops, especially credentials of this nature. Developers frequently store this stuff in plain text in their home directory or as environment variables. That's a huge security risk! This service manages the process of generating and expiring credentials automatically, which is awesome.

toomuchtodo|5 years ago

You should have a shell alias to rapidly top up your auth token, just like with the Docker ECR. Short lived tokens are best practice, and a 12 hour TTL is reasonable. That’s no more than two auths in a day as a dev.

code4tee|5 years ago

Can’t imagine any serious tech environment still allowing non-temporary creds. If they do, good luck when the security audit happens.

kccqzy|5 years ago

Why so? You just log in once a day at the beginning of your work day. I don't think you'll work a 12-hour day so that should be good for the entire day.

pskinner|5 years ago

Is it just me or is this missing plain artifacts - those that are not packaged for a specific tool? I'm thinking of plain binaries and resources required for things like db build tools and automated testing tools - just files really. How do I publish a tarball up to this, for example?

Also the lack of nuget is a major issue.

greyskull|5 years ago

I think CodeArtifact loses value when you aren't using a package manager; the benefit is an api-compatible service with various controls and audits built on top.

Out of curiosity, what would you want from this service for the "plain binary" use-case when S3 already exists?

tkinz27|5 years ago

It’s frustrating to not see more system package management (deb, rpm) from these new services (github and gitlab for instance).

Are others not packaging their code in intermediate packages before packing them into containers?

manigandham|5 years ago

What's the purpose of intermediate packages if you're already using containers?

asguy|5 years ago

We've been going that direction. Packages integrate better into multiple use cases (e.g. VM images, containers). Running a properly signed apt repo is easy these days, so why not?

For people that disagree with this model: where do you think the the software comes from when you apt/apk install things inside your Dockerfile?

blaisio|5 years ago

Most people don't need to do that. You can build things you need as part of the image build. No need to setup a deb or rpm package unless you're also installing it that way somewhere else.

secondcoming|5 years ago

We use jfrog. One jenkins job builds our code into a .deb and pushes it there. Another job builds the VM image which is then deployed once testing passes.

wmf|5 years ago

That sounds like double work.

FrenchTouch42|5 years ago

I'd like really like to see more support added (Ruby, etc). It could be a great alternative to Artifactory.

scarface74|5 years ago

No C#/Nuget support? Really?

tkahnoski|5 years ago

AWS products always take an MVP approach. The rest is driven by customer feedback on the roadmap. CodeGuru/CodeProfiler/X-Ray are similar to limited language support they've built out over time.

Whenever I see a product announcement like this missing something I need to use it, I immediately ping our Technical Account Manager to get the vote up for a particular enhancement.

mcrute|5 years ago

The back-end is largely package type agnostic and the package manager front-ends are pluggable. I'd look for AWS to expand package manager support in the near future. Nuget was on the list along with a few other popular package managers. There's a whole lot of functionality in the platform they didn't yet expose or have finished for the launch, I'd keep an eye on this as they move forward.

Source: I lead the technical design for the product as well as a chunk of the implementation but left the team mid-2018. I don't have any specific insight into their plans, not that I could really share them even if I did.

politelemon|5 years ago

That is strange, I wonder if that's coming later but I didn't see anything to that effect. I'd also have liked to see docker image support (despite ecr) and raw binaries too.

lflux|5 years ago

You know it's an AWS service when you look at it and go "Huh, it's only 2x the price of S3, what a bargain!"

setheron|5 years ago

2x the price of S3 is very cheap.

weehack|5 years ago

It dedupes artifacts (according to the twitch demo today) so actual cost would likely be much less than s3 unless you're doing a solo project.

andycowley|5 years ago

No deb, RPM, or nuget. Half a product really. As annoying and expensive as Nexus and Artifactory are, at least they're more fully featured.

soygul|5 years ago

Seems like a direct competitor for Artifactory and Nexus. I wonder if it is profitable for them to create an inferior alternative to fully flagged artifact managers. Or if they are doing this for product-completeness of AWS.

doliveira|5 years ago

I'd wait a few years to be ready, AWS developer tools are really crude. Last year I had to build a Lambda to be able to spit multiple output artifacts in CodePipeline.

saxonww|5 years ago

Appears to support ivy/gradle/maven, npm/yarn, and pip/twine only.

dahfizz|5 years ago

I don't get it.

The git server you use supports artifacts already. You could also just put all of your artifacts on an S3 bucket if you needed somewhere to put them, which is exactly what this is but more expensive. I don't understand when this would save you money or simplify devops.

cle|5 years ago

It’s not “exactly what this is”. Every time AWS or Azure or GCP releases a service, there are a droves of people on HN decrying them as “just <something I’m familiar with>”, without bothering to understand if that’s actually true. It’s not.

Skim the docs and you will see it is not “just S3”.

code4tee|5 years ago

Can occur in a VPC without direct internet access. For the average developer this isn’t usually an issue but in highly secure corporate environments this helps a lot. Can’t just do pip install X in such situations. Even the S3 proxy solutions often require many hoops from the security Jedi council before you can use any packages there.

A lot of people won’t find this useful but for some it’s a big blessing.

blaisio|5 years ago

For python at least, fetching something from git is far slower than fetching it from pypi.

dmlittle|5 years ago

The benefit is being able to keep your existing maven/npm/pip workflows as well as use the same workflow for both internal and public dependencies.

rantwasp|5 years ago

what git server is that?