

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# O que é AWS CodeArtifact?
<a name="welcome"></a>

AWS CodeArtifact é um serviço de repositório de artefatos seguro, altamente escalável e gerenciado que ajuda as organizações a armazenar e compartilhar pacotes de software para desenvolvimento de aplicativos. Você pode usar CodeArtifact com ferramentas de compilação e gerenciadores de pacotes populares, como NuGet CLI, Maven, Gradle, npm, yarn, pip e twine. CodeArtifact ajuda a reduzir a necessidade de gerenciar seu próprio sistema de armazenamento de artefatos ou de se preocupar com a escalabilidade de sua infraestrutura. Não há limites no número ou no tamanho total dos pacotes que você pode armazenar em um CodeArtifact repositório.

Você pode criar uma conexão entre seu CodeArtifact repositório privado e um repositório público externo, como npmjs.com ou Maven Central. CodeArtifact em seguida, buscará e armazenará pacotes sob demanda do repositório público quando eles forem solicitados por um gerenciador de pacotes. Isso torna o consumo de dependências de código aberto usadas pelo aplicativo mais conveniente e ajuda a garantir que elas estejam sempre disponíveis para compilações e desenvolvimento. Você também pode publicar pacotes privados em um CodeArtifact repositório. Isso ajuda a compartilhar componentes de software proprietários entre vários aplicativos e equipes de desenvolvimento da organização.

 Para obter mais informações, consulte [AWS CodeArtifact](https://aws.amazon.com/codeartifact/).

## Como CodeArtifact funciona?
<a name="codeartifact-how-does-it-work"></a>

CodeArtifact armazena pacotes de software em repositórios. Os repositórios são poliglotas, ou seja, um único repositório pode conter pacotes de qualquer tipo compatível. Cada CodeArtifact repositório é membro de um único CodeArtifact domínio. Recomendamos que você use um domínio de produção para a organização com um ou mais repositórios. Por exemplo, você pode usar cada repositório para uma equipe de desenvolvimento diferente. Dessa forma, os pacotes nos repositórios podem ser localizados e compartilhados entre as equipes de desenvolvimento. 

Para adicionar pacotes a um repositório, configure um gerenciador de pacotes, como o npm ou Maven, para usar o endpoint (URL) do repositório. Em seguida, você pode usar o gerenciador de pacotes para publicar pacotes no repositório. Você também pode importar pacotes de código aberto para um repositório configurando-o com uma conexão externa a um repositório público, como npmjs, Gallery NuGet , Maven Central ou PyPI. Para obter mais informações, consulte [Conectar um CodeArtifact repositório a um repositório público](external-connection.md). 

 Você pode disponibilizar pacotes de um repositório para outro no mesmo domínio. Para fazer isso, configure um repositório como upstream do outro. Todas as versões do pacote disponíveis para o repositório upstream também estão disponíveis para o repositório downstream. Além disso, todos os pacotes que estão disponíveis para o repositório upstream por meio de uma conexão externa com um repositório público estão disponíveis para o repositório downstream. Para obter mais informações, consulte [Trabalhando com repositórios upstream em CodeArtifact](repos-upstream.md). 

CodeArtifact exige que os usuários se autentiquem com o serviço para publicar ou consumir versões do pacote. Você deve se autenticar no CodeArtifact serviço criando um token de autorização usando suas AWS credenciais. Pacotes em CodeArtifact repositórios não podem ser disponibilizados publicamente. Para obter mais informações sobre autenticação e acesso em CodeArtifact, consulte[AWS Autenticação e tokens do CodeArtifact](tokens-authentication.md).

# AWS CodeArtifact conceitos
<a name="codeartifact-concepts"></a>

 Aqui estão alguns conceitos e termos que você deve conhecer ao usar CodeArtifact. 

**Topics**
+ [Ativo](#welcome-concepts-asset)
+ [Domínio](#welcome-concepts-domain)
+ [Repositório](#welcome-concepts-repository)
+ [Pacote](#welcome-concepts-package)
+ [Grupo de pacotes](#welcome-concepts-package-group)
+ [Namespace de pacotes](#welcome-concepts-package-namespace)
+ [Versão do pacote](#welcome-concepts-package-version)
+ [Revisão da versão do pacote](#welcome-concepts-package-version-revision)
+ [Repositório upstream](#welcome-concepts-upstream)

## Ativo
<a name="welcome-concepts-asset"></a>

Um *ativo* é um arquivo individual armazenado associado CodeArtifact a uma versão do pacote, como um `.tgz` arquivo npm ou arquivos Maven POM e JAR.

## Domínio
<a name="welcome-concepts-domain"></a>

Os repositórios são agrupados em uma entidade de nível mais alto conhecida como *domínio*. Todos os ativos e metadados do pacote são armazenados no domínio, mas são consumidos por meio de repositórios. Um determinado ativo de pacote, como um arquivo JAR do Maven, é armazenado uma vez por domínio, não importa em quantos repositórios ele esteja presente. Todos os ativos e metadados em um domínio são criptografados com a mesma AWS KMS key (chave KMS) armazenada em AWS Key Management Service (AWS KMS).

Cada repositório é membro de um único domínio e não pode ser movido para um domínio diferente.

Usando um domínio, você pode aplicar uma política organizacional em vários repositórios. Com essa abordagem, você determina quais contas podem acessar os repositórios no domínio e quais repositórios públicos podem ser usados como origens dos pacotes.

Embora uma organização possa ter vários domínios, a recomendação é ter um único domínio de produção que contenha todos os artefatos publicados. Dessa forma, as equipes podem localizar e compartilhar pacotes em toda a organização.

## Repositório
<a name="welcome-concepts-repository"></a>

Um CodeArtifact *repositório* contém um conjunto de [versões de pacotes](#welcome-concepts-package-version), cada uma delas mapeada para um conjunto de [ativos](#welcome-concepts-asset). Os repositórios são poliglotas, ou seja, um único repositório pode conter pacotes de qualquer tipo compatível. Cada repositório expõe endpoints para buscar e publicar pacotes usando ferramentas como a CLI do NuGet, a CLI do npm, a CLI do Maven (mvn) e o pip. Você pode criar até 1.000 repositórios por domínio.

## Pacote
<a name="welcome-concepts-package"></a>

Um *pacote* é formado pelo pacote de software e os metadados necessários para resolver dependências e instalar o software. Em CodeArtifact, um pacote consiste em um nome de pacote, um [namespace](#welcome-concepts-package-namespace) opcional, como `@types` in`@types/node`, um conjunto de versões de pacote e metadados em nível de pacote, como tags npm.

AWS CodeArtifact [[suporta os [formatos de pacote Cargo](using-cargo.md), [genérico](using-generic.md), [Maven](using-maven.md), [npm](using-npm.md), [NuGet](using-nuget.md)[PyPI, Ruby, Swift](using-python.md).](using-swift.md)](using-ruby.md)

## Grupo de pacotes
<a name="welcome-concepts-package-group"></a>

Os *grupos de pacotes* podem ser usados para aplicar configurações a vários pacotes que correspondam a um padrão definido usando o formato, o namespace e o nome do pacote. Você pode usar grupos de pacotes para configurar de forma mais conveniente os controles de origem de pacotes para vários pacotes. Os controles de origem de pacotes são usados para bloquear ou permitir a ingestão ou publicação de novas versões de pacotes, protegendo os usuários de ações maliciosas conhecidas como ataques de substituição de dependências.

## Namespace de pacotes
<a name="welcome-concepts-package-namespace"></a>

Alguns formatos de pacotes permitem a utilização de nomes de pacotes hierárquicos para organizar os pacotes em grupos lógicos e ajudar a evitar colisões de nomes. Por exemplo, o npm é compatível com escopos. Para obter mais informações, consulte a [documentação de escopos do npm](https://docs.npmjs.com/cli/v7/using-npm/scope). O pacote `@types/node` do npm tem o escopo `@types` e o nome `node`. Há vários outros nomes de pacotes no escopo `@types`. Em CodeArtifact, o escopo (“tipos”) é chamado de namespace do pacote e o nome (“nó”) é chamado de nome do pacote. Para pacotes do Maven, o namespace do pacote corresponde ao groupID do Maven. O pacote `org.apache.logging.log4j:log4j` do Maven tem o groupID (namespace do pacote) `org.apache.logging.log4j` e o artifactID (nome do pacote) `log4j`. Para pacotes genéricos, o [namespace](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PublishPackageVersion.html#namespace) é obrigatório. Alguns formatos de pacotes, como do PyPI, não permitem a utilização de nomes hierárquicos com um conceito semelhante ao escopo do npm ou ao groupID do Maven. Sem uma forma de agrupar nomes de pacotes, evitar colisões de nomes pode ser mais difícil.

## Versão do pacote
<a name="welcome-concepts-package-version"></a>

A *versão do pacote* identifica a versão específica de um pacote, como `@types/node 12.6.9`. O formato e a semântica do número da versão variam conforme os diferentes formatos de pacote. Por exemplo, as versões dos pacotes do npm devem estar em conformidade com a [especificação de Versionamento semântico](https://semver.org/). Em CodeArtifact, uma versão do pacote consiste no identificador da versão, nos metadados do nível da versão do pacote e em um conjunto de ativos.

## Revisão da versão do pacote
<a name="welcome-concepts-package-version-revision"></a>

 A *revisão da versão do pacote* é uma string que identifica um conjunto específico de ativos e metadados da versão do pacote. Sempre que uma versão do pacote é atualizada, uma nova revisão da versão do pacote é criada. Por exemplo, você pode publicar um arquivo de distribuição de origem (**sdist**) de uma versão do pacote do Python e, posteriormente, adicionar uma **wheel** do Python que contém código compilado à mesma versão. Quando você publica a **wheel**, uma nova revisão da versão do pacote é criada. 

## Repositório upstream
<a name="welcome-concepts-upstream"></a>

Um repositório é *upstream* quando as versões do pacote contidas nele podem ser acessadas a partir do endpoint do repositório downstream. Esta abordagem mescla com eficácia o conteúdo dos dois repositórios do ponto de vista de um cliente. Usando CodeArtifact, você pode criar um relacionamento upstream entre dois repositórios.

## Como faço para começar com CodeArtifact?
<a name="how-do-i-get-started"></a>

 É recomendável que você realize as etapas a seguir: 

1.  **Saiba** mais CodeArtifact lendo[AWS CodeArtifact conceitos](codeartifact-concepts.md). 

1.  **Configure** seu Conta da AWS AWS CLI, o e um usuário do IAM seguindo as etapas em[Configurando com AWS CodeArtifact](get-set-up-for-codeartifact.md). 

1.  **Use** CodeArtifact seguindo as instruções em[Conceitos básicos do CodeArtifact](getting-started.md). 