

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

# Publique pacotes em um canal conda do Amazon S3
<a name="publish-packages-s3-channel"></a>

Você pode publicar pacotes conda em um bucket do Amazon Simple Storage Service (Amazon S3) para que os funcionários do AWS Deadline Cloud (Deadline Cloud) possam instalá-los para executar trabalhos. O `rattler-build publish` comando funciona com o Amazon S3 da mesma forma que com um canal de sistema de arquivos local. O comando pode criar uma receita e publicar o resultado, ou publicar um arquivo de pacote que você já criou. Em ambos os casos, o comando carrega o pacote no bucket e indexa o canal em uma única etapa.

O `rattler-build publish` comando é autenticado AWS usando a cadeia de credenciais padrão, portanto, ele usa sua AWS configuração como qualquer AWS ferramenta. Para obter mais informações sobre a configuração de credenciais, consulte [Configuração e configurações do arquivo de credenciais no Guia](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) do Usuário *AWS Command Line Interface (AWS CLI)*.

## Pré-requisitos
<a name="publish-s3-prereqs"></a>

Antes de publicar pacotes no Amazon S3, preencha os seguintes pré-requisitos:
+ **pixi e rattler-build** [— Instale o pixi a partir do pixi.sh e, em seguida, instale.](https://pixi.sh) `rattler-build`

  ```
  pixi global install rattler-build
  ```
+ **git — Necessário** para clonar o repositório de amostras. WindowsAtivado, [o git for Windows](https://gitforwindows.org/) também fornece um `bash` shell, exigido por algumas das receitas de Windows amostra.
+ Bucket **Amazon S3 — Um bucket** Amazon S3 para usar como canal conda. Você pode usar o repositório de anexos de tarefas do seu farm do Deadline Cloud ou criar um intervalo separado.
+ **AWS credenciais** — Configure as credenciais em sua estação de trabalho usando o `aws configure` comando ou o comando. `aws login` Para obter mais informações, consulte [Configuração do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) no *Guia do usuário do AWS Command Line Interface *.
+ **Permissões do IAM** — (opcional) Para reduzir o escopo das permissões que suas credenciais têm, você pode usar uma política AWS Identity and Access Management (IAM) que concede somente as seguintes permissões no bucket do Amazon S3 e no prefixo do canal que você usa (por exemplo,): `/Conda/*`
  + `s3:GetObject`
  + `s3:PutObject`
  + `s3:DeleteObject`
  + `s3:ListBucket`
  + `s3:GetBucketLocation`

## Publicar um pacote em um canal do Amazon S3
<a name="publish-s3-procedure"></a>

Use `rattler-build publish` com um `s3://` destino para publicar um pacote em seu canal conda do Amazon S3. Se o canal não existir no bucket, `rattler-build` inicializará o canal automaticamente. Antes de começar, verifique se você concluiu os [pré-requisitos](#publish-s3-prereqs).

O exemplo a seguir publica a receita de amostra Blender 4.5 do repositório de [amostras do Deadline Cloud em](https://github.com/aws-deadline/deadline-cloud-samples). GitHub Você pode substituir uma receita diferente do repositório de amostras ou usar sua própria receita.

**nota**  
Aplicativos grandes podem exigir dezenas de GB de espaço livre em disco para o arquivamento de origem, arquivos extraídos e saída de compilação. Certifique-se de usar um disco com espaço disponível suficiente para a saída da compilação do pacote.

**Para publicar um pacote em um canal do Amazon S3**

1. Clone o repositório de amostras do Deadline Cloud.

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   ```

1. Mude para o diretório `conda_recipes`.

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. Execute o comando a seguir. Substitua {{amzn-s3-demo-bucket}} pelo nome do seu bucket.

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml --to s3://amzn-s3-demo-bucket/Conda/Default --build-number=+1
   ```

   O `/Conda/Default` prefixo organiza o canal dentro do bucket. Você pode usar um prefixo diferente, mas o prefixo deve ser consistente em todos os comandos e configurações de fila que fazem referência ao canal.

**Sobre números de compilação**  
A `--build-number=+1` opção seleciona automaticamente o próximo número de compilação com base no que já existe no canal de destino. A melhor prática é nunca sobrescrever um pacote em um canal. Sempre crie com um novo número de compilação se, de outra forma, o pacote tivesse o mesmo nome de arquivo. O uso `--build-number=+1` consegue isso quando você cria um canal de produção ou um canal de preparação que espelha a produção.  
Se quiser controlar o número da compilação diretamente, você pode defini-lo com um valor específico, como`--build-number=7`. Se você omitir a opção, `rattler-build` usa o número de compilação definido no `recipe.yaml` arquivo.

Se a receita do pacote depender de pacotes de um canal específico, como [conda-forge](https://conda-forge.org/), adicione `-c conda-forge` ao comando.

Você também pode publicar um arquivo de pacote que você já criou, por exemplo, um `.conda` arquivo de uma compilação local. Substitua {{amzn-s3-demo-bucket}} pelo nome do seu bucket.

```
rattler-build publish output/linux-64/blender-4.5.0-hb0f4dca_0.conda \
    --to s3://amzn-s3-demo-bucket/Conda/Default
```

## Inicializando ou reindexando um canal
<a name="publish-s3-init-reindex"></a>

Quando você usa `rattler-build publish` para publicar um pacote, o comando inicializa o canal automaticamente se o canal ainda não existir. Na maioria dos casos, você não precisa inicializar ou reindexar o canal manualmente.

Talvez seja necessário inicializar ou reindexar manualmente um canal nas seguintes situações:
+ Você quer criar um canal vazio antes de publicar qualquer pacote, por exemplo, para verificar se o ambiente de filas do Deadline Cloud pode se conectar ao canal.
+ Você carregou ou excluiu `.conda` arquivos diretamente com as ferramentas do Amazon S3 em vez de usar`rattler-build publish`, e o índice do canal está desatualizado.

### Inicializando um canal vazio
<a name="publish-s3-init-empty"></a>

Para inicializar um canal vazio, crie um `repodata.json` arquivo e faça o upload para o `noarch` subdiretório do prefixo do canal. Substitua {{amzn-s3-demo-bucket}} pelo nome do seu bucket.

```
echo '{"info":{"subdir":"noarch"},"packages":{},"packages.conda":{},"removed":[],"repodata_version":1}' > empty_channel_repodata.json
aws s3api put-object --body empty_channel_repodata.json --key Conda/Default/noarch/repodata.json --bucket {{amzn-s3-demo-bucket}}
```

O `/Conda/Default` prefixo deve corresponder ao prefixo do canal que seu ambiente de fila usa. Depois de inicializar o canal, você pode publicar pacotes no canal usando`rattler-build publish`.

### Reindexando um canal
<a name="publish-s3-reindex"></a>

Se o índice do canal estiver desatualizado, use `rattler-index` para reconstruir o índice a partir dos arquivos do pacote no canal. Primeiro, instale`rattler-index`.

```
pixi global install rattler-index
```

Em seguida, reindexe o canal. Substitua {{amzn-s3-demo-bucket}} pelo nome do seu bucket.

```
rattler-index s3 s3://amzn-s3-demo-bucket/Conda/Default
```

## Testando o pacote
<a name="publish-s3-test"></a>

Depois de publicar o pacote, crie um projeto pixi temporário para verificar se o pacote funciona corretamente. O projeto instala o pacote a partir do canal Amazon S3.

**Para testar o pacote**

1. Crie um diretório de teste temporário e inicialize um projeto pixi com o canal Amazon S3. Substitua {{amzn-s3-demo-bucket}} pelo nome do seu bucket.

   ```
   mkdir package-test-env
   cd package-test-env
   pixi init --channel s3://amzn-s3-demo-bucket/Conda/Default
   ```

1. Adicione o pacote ao projeto.

   ```
   pixi add blender=4.5
   ```

1. Verifique se o pacote funciona corretamente.

   ```
   pixi run blender --version
   ```

   O [https://pixi.sh/latest/reference/cli/pixi/run/](https://pixi.sh/latest/reference/cli/pixi/run/)comando ativa o ambiente conda para o diretório do projeto e executa o comando especificado dentro dele. O ambiente persiste no diretório do projeto, então você pode usar o mesmo `pixi run` comando em outros terminais.

## Removendo pacotes do canal
<a name="publish-s3-remove-packages"></a>

Evite remover pacotes dos canais que você usa para produção, porque os arquivos de bloqueio fazem referência a pacotes específicos por hash. A remoção de um pacote impede a recriação de ambientes a partir desses arquivos de bloqueio. Para canais de desenvolvimento e teste, você pode remover um pacote específico excluindo o `.conda` arquivo do bucket e depois reindexando o canal.

Exclua o arquivo do pacote e reindexe o canal. Substitua {{amzn-s3-demo-bucket}} pelo nome do seu bucket.

```
aws s3 rm s3://amzn-s3-demo-bucket/Conda/Default/linux-64/blender-4.5.0-hb0f4dca_1.conda
```

Depois de excluir o arquivo, reindexe o canal para atualizar os metadados do canal. Para obter instruções, consulte [Reindexação de um canal](#publish-s3-reindex).

Os arquivos do Package são armazenados em subdiretórios específicos da plataforma, como, ou. `linux-64` `win-64` `osx-arm64` Para listar os pacotes em um subdiretório, execute o comando a seguir.

```
aws s3 ls s3://amzn-s3-demo-bucket/Conda/Default/linux-64/
```

## Limpeza
<a name="publish-s3-cleanup"></a>

Após o teste, remova o diretório do projeto de teste.

**Para limpar os recursos de teste**
+ Remova o diretório do projeto de teste.

  Em Linux emacOS, execute o comando a seguir.

  ```
  rm -rf package-test-env
  ```

  Em Windows (cmd), execute o comando a seguir.

  ```
  rmdir /s /q package-test-env
  ```

## Compilações de depuração
<a name="publish-s3-debug"></a>

Se uma compilação falhar, `rattler-build` preserva o diretório de compilação para que você possa investigar. Execute o comando a seguir para abrir um shell interativo no ambiente de compilação com todas as variáveis de ambiente configuradas como estavam durante a compilação.

```
rattler-build debug shell
```

No shell de depuração, você pode modificar arquivos, executar comandos de compilação individuais e adicionar dependências para isolar o problema. Para obter mais informações, consulte [Depuração de compilações na documentação do rattler-build](https://rattler-build.prefix.dev/latest/debugging_builds/).

## Construindo pacotes para outras plataformas
<a name="publish-s3-cross-platform"></a>

O `rattler-build publish` comando cria pacotes para o sistema operacional da estação de trabalho em que o comando é executado. Se sua frota do Deadline Cloud usa um sistema operacional diferente da sua estação de trabalho ou se seu pacote tem outros requisitos de hospedagem, você tem as seguintes opções:
+ Execute `rattler-build publish` em um host que corresponda ao sistema operacional de destino. Por exemplo, use uma instância do Amazon Elastic Compute Cloud (Amazon EC2) em Linux execução para criar pacotes para uma frota. Linux
+ Use uma fila de criação de pacotes do Deadline Cloud para automatizar compilações na plataforma de destino. Consulte [Criar uma fila de criação de pacotes](automate-package-builds.md#s3-channel-create-queue).
+ (Avançado) Use a compilação cruzada para criar pacotes para uma plataforma diferente da sua estação de trabalho. Para obter mais informações, consulte [Compilação cruzada](https://rattler-build.prefix.dev/latest/compilers/#cross-compilation) na documentação do rattler-build.

## Próximas etapas
<a name="publish-s3-next-steps"></a>

Depois de publicar pacotes em seu canal conda do Amazon S3, configure suas filas do Deadline Cloud para usar o canal:
+ [Configure permissões de fila de produção para pacotes conda personalizados — Conceda](configure-jobs-s3-channel.md#s3-channel-configure-permissions) às suas filas de produção acesso somente de leitura ao canal conda do Amazon S3.
+ [Adicionar um canal conda a um ambiente de fila — Configure o ambiente](configure-jobs-s3-channel.md#s3-channel-add-channel) de fila para instalar pacotes do canal conda do Amazon S3.