

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á.

# Usar o CodeArtifact com Cargo
<a name="using-cargo"></a>

Estes tópicos descrevem como usar o Cargo, o gerenciador de pacotes Rust, com o CodeArtifact.

**nota**  
O CodeArtifact é compatível somente com Cargo 1.74.0 e superior. O Cargo 1.74.0 é a versão mais antiga compatível com a autenticação em um repositório do CodeArtifact.

**Topics**
+ [Configurar e usar o Cargo](configure-use-cargo.md)
+ [Suporte para comandos Cargo](cargo-commands.md)

# Configurar e usar o Cargo com o CodeArtifact
<a name="configure-use-cargo"></a>

Você pode usar o Cargo para publicar e baixar crates dos repositórios do CodeArtifact ou para buscar crates em [crates.io](https://crates.io/), o registro de crates da comunidade Rust. Este tópico descreve como configurar o Cargo para se autenticar e usar um repositório do CodeArtifact.

## Configurar o Cargo com o CodeArtifact
<a name="configure-cargo"></a>

Para usar o Cargo para instalar e publicar crates por meio do AWS CodeArtifact, primeiro você precisa configurá-los com as informações do seu repositório do CodeArtifact. Siga as etapas em um dos procedimentos a seguir para configurar o Cargo com as informações e credenciais do endpoint do repositório do CodeArtifact.

### Configurar o Cargo usando as instruções do console
<a name="configure-cargo-console"></a>

É possível usar as instruções de configuração no console para conectar o Cargo ao repositório do CodeArtifact. As instruções do console fornecem uma configuração do Cargo personalizada para o repositório do CodeArtifact. Você pode usar essa configuração personalizada para configurar o Cargo sem precisar encontrar e preencher suas informações do CodeArtifact.

1. Abra o console do AWS CodeArtifact em [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. No painel de navegação, selecione **Repositórios** e, em seguida, escolha um repositório para conectar ao Cargo.

1. Clique em **Visualizar instruções de conexão**.

1. Selecione o seu sistema operacional.

1. Selecione **Cargo**.

1. Siga as instruções geradas para conectar o Cargo ao seu repositório do CodeArtifact.

### Configurar o Cargo manualmente
<a name="configure-cargo-manual"></a>

Se você não puder ou não quiser usar as instruções de configuração do console, poderá usar as instruções a seguir para conectar manualmente o Cargo ao seu repositório do CodeArtifact. 

------
#### [ macOS and Linux ]

Para configurar o Cargo com o CodeArtifact, você precisa definir seu repositório do CodeArtifact como um registro na configuração do Cargo e fornecer as credenciais.
+ Substitua *my\$1registry* pelo nome do seu registro.
+ Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
+ Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).
+ Substitua *my\$1repo* pelo nome do seu repositório do CodeArtifact.

Copie a configuração para publicar e baixar pacotes Cargo em seu repositório e salve-a no arquivo `~/.cargo/config.toml` para uma configuração em nível de sistema ou `.cargo/config.toml` para uma configuração em nível de projeto:

```
[registries.my_registry]
index = "sparse+https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/cargo/my_repo/"
credential-provider = "cargo:token-from-stdout aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --region us-west-2 --query authorizationToken --output text"

[registry]
default = "my_registry"

[source.crates-io]
replace-with = "my_registry"
```

------
#### [ Windows: Download packages only ]

Para configurar o Cargo com o CodeArtifact, você precisa definir seu repositório do CodeArtifact como um registro na configuração do Cargo e fornecer as credenciais.
+ Substitua *my\$1registry* pelo nome do seu registro.
+ Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
+ Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).
+ Substitua *my\$1repo* pelo nome do seu repositório do CodeArtifact.

Copie a configuração para baixar somente pacotes Cargo do seu repositório e salve-a no arquivo `%USERPROFILE%\.cargo\config.toml` para uma configuração em nível de sistema ou `.cargo\config.toml` para uma configuração em nível de projeto:

```
[registries.my_registry]
index = "sparse+https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/cargo/my_repo/"
credential-provider = "cargo:token-from-stdout aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --region us-west-2 --query authorizationToken --output text"

[registry]
default = "my_registry"

[source.crates-io]
replace-with = "my_registry"
```

------
#### [ Windows: Publish and download packages ]

1. Para configurar o Cargo com o CodeArtifact, você precisa definir seu repositório do CodeArtifact como um registro na configuração do Cargo e fornecer as credenciais.
   + Substitua *my\$1registry* pelo nome do seu registro.
   + Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
   + Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).
   + Substitua *my\$1repo* pelo nome do seu repositório do CodeArtifact.

   Copie a configuração para publicar e baixar pacotes Cargo em seu repositório e salve-a no arquivo `%USERPROFILE%\.cargo\config.toml` para uma configuração em nível de sistema ou `.cargo\config.toml` em nível de projeto.

   É recomendável usar o provedor de credenciais `cargo:token`, que usa as credenciais armazenadas em seu arquivo `~/.cargo/credentials.toml`. Você pode encontrar um erro durante `cargo publish` se usar `cargo:token-from-stdout`, porque o cliente Cargo não corta o token de autorização adequadamente durante `cargo publish`.

   ```
   [registries.my_registry]
   index = "sparse+https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/cargo/my_repo/"
   credential-provider = "cargo:token"
   
   [registry]
   default = "my_registry"
   
   [source.crates-io]
   replace-with = "my_registry"
   ```

1. Para publicar pacotes Cargo em seu repositório com o Windows, você deve usar o comando `get-authorization-token` do CodeArtifact e o comando `login` do Cargo para obter um token de autorização e suas credenciais.
   + Substitua *my\$1registry* pelo nome do seu registro, conforme definido em `[registries.my_registry]`.
   + Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
   + Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).

   ```
   aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --region us-west-2 --query authorizationToken --output text | cargo login --registry my_registry
   ```
**nota**  
O token de autorização gerado é válido por 12 horas. Você precisará criar um novo se tiverem passado 12 horas desde a criação do token.

------

A seção `[registries.my_registry]` no exemplo anterior define um registro com `my_registry` e fornece as informações de `index` e `credential-provider`.
+ `index` especifica o URL do índice do seu registro, que é o endpoint do repositório do CodeArtifact que termina com `/`. O prefixo `sparse+` é obrigatório para registros que não são repositórios Git.
**nota**  
Para usar um endpoint de pilha dupla, use o endpoint `codeartifact.region.on.aws`.
+ `credential-provider` especifica o provedor de credenciais para o registro fornecido. Se `credential-provider` não estiver definido, os provedores em `registry.global-credential-providers` serão usados. Ao configurar `credential-provider` como `cargo:token-from-stdout`, o cliente Cargo buscará o novo token de autorização automaticamente ao publicar ou baixar do seu repositório do CodeArtifact, portanto, não é necessário atualizar manualmente o token de autorização a cada 12 horas.

A seção `[registry]` define o registro padrão usado.
+ `default` especifica o nome do registro definido em `[registries.my_registry]`, para usar por padrão ao publicar ou baixar do seu repositório do CodeArtifact.

A seção `[source.crates-io]` define o registro padrão usado quando um não é especificado.
+ `replace-with = "my_registry"` substitui o registro público, crates.io, pelo seu repositório do CodeArtifact definido em `[registries.my_registry]`. Essa configuração é recomendada se você precisar solicitar pacotes da conexão externa, como crates.io.

  Para obter todos os benefícios do CodeArtifact, como o controle de origem do pacote que evita ataques de confusão de dependências, é recomendável usar a substituição de origem. Com a substituição de origem, o CodeArtifact faz o proxy de todas as solicitações para a conexão externa e copia o pacote da conexão externa para o seu repositório. Sem a substituição de origem, o cliente Cargo recuperará diretamente o pacote com base na configuração no arquivo `Cargo.toml` em seu projeto. Se uma dependência não estiver marcada com `registry=my_registry`, o cliente Cargo a recuperará diretamente do crates.io sem se comunicar com seu repositório do CodeArtifact.
**nota**  
Se você começar a usar a substituição de origem e depois atualizar seu arquivo de configuração para não usar a substituição de origem, poderá encontrar erros. O cenário oposto também poderá levar a erros. Portanto, é recomendável evitar alterar a configuração do seu projeto.

## Instalar crates Cargo
<a name="install-cargo-crates"></a>

Use os procedimentos a seguir para instalar crates Cargo por meio de um repositório do CodeArtifact ou de [crates.io](https://crates.io/).

### Instalar crates Cargo por meio do CodeArtifact
<a name="install-cargo-crates-aca"></a>

É possível usar a CLI do Cargo (`cargo`) para instalar rapidamente uma versão específica de um crate Ruby por meio do repositório do CodeArtifact.

**Como instalar crates Cargo por meio de um repositório do CodeArtifact com `cargo`**

1. Caso ainda não tenha feito isso, siga as etapas em [Configurar e usar o Cargo com o CodeArtifact](#configure-use-cargo) para configurar a CLI `cargo` para usar o repositório do CodeArtifact com as credenciais adequadas.

1. Use o seguinte comando para instalar crates Cargo por meio do CodeArtifact:

   ```
   cargo add my_cargo_package@1.0.0
   ```

   Para obter mais informações, consulte [cargo add](https://doc.rust-lang.org/cargo/commands/cargo-add.html) em *The Cargo Book*.

## Publicar crates Cargo no CodeArtifact
<a name="publish-cargo-crates"></a>

Use o procedimento a seguir para publicar crates Cargo em um repositório do CodeArtifact usando a CLI `cargo`.

1. Caso ainda não tenha feito isso, siga as etapas em [Configurar e usar o Cargo com o CodeArtifact](#configure-use-cargo) para configurar a CLI `cargo` para usar o repositório do CodeArtifact com as credenciais adequadas.

1. Use o seguinte comando para publicar crates Cargo em um repositório do CodeArtifact:

   ```
   cargo publish
   ```

   Para obter mais informações, consulte [cargo publish](https://doc.rust-lang.org/cargo/commands/cargo-publish.html) em *The Cargo Book*.

# Suporte para comandos Cargo
<a name="cargo-commands"></a>

As seções a seguir resumem os comandos do Cargo que são suportados pelos CodeArtifact repositórios, além dos comandos específicos que não são suportados.

**Contents**
+ [Comandos compatíveis que exigem acesso ao registro](#supported-commands-access-the-registry)
+ [Comandos incompatíveis](#unsupported-commands)

## Comandos compatíveis que exigem acesso ao registro
<a name="supported-commands-access-the-registry"></a>

Esta seção lista os comandos Cargo nos quais o cliente Cargo requer acesso ao registro com o qual foi configurado. Verificou-se que esses comandos funcionam corretamente quando invocados em um CodeArtifact repositório.


****  

| Command | Description | 
| --- | --- | 
|   [build](https://doc.rust-lang.org/cargo/commands/cargo-build.html)   |  Cria pacotes locais e suas dependências.  | 
|   [check](https://doc.rust-lang.org/cargo/commands/cargo-check.html)   |  Verifica se há erros nos pacotes locais e suas dependências.  | 
|   [buscar](https://doc.rust-lang.org/cargo/commands/cargo-fetch.html)   |  Busca as dependências de um pacote.  | 
|   [publish](https://doc.rust-lang.org/cargo/commands/cargo-publish.html)   |  Publica um pacote no registro.  | 

## Comandos incompatíveis
<a name="unsupported-commands"></a>

Esses comandos do Cargo não são suportados pelos CodeArtifact repositórios.


****  

| Command | Description | 
| --- | --- | 
|   [owner](https://doc.rust-lang.org/cargo/commands/cargo-owner.html)   |  Gerencia os proprietários do crate no registro.  | 
|   [pesquisa](https://doc.rust-lang.org/cargo/commands/cargo-search.html)   |  Pesquisa pacotes no registro.  | 