View a markdown version of this page

Publique pacotes em um canal conda do Amazon S3 - Nuvem de prazos

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

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 do Usuário AWS Command Line Interface (AWS CLI).

Pré-requisitos

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. rattler-build

    pixi global install rattler-build
  • git — Necessário para clonar o repositório de amostras. WindowsAtivado, o git for Windows 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 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

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.

O exemplo a seguir publica a receita de amostra Blender 4.5 do repositório de amostras do Deadline Cloud em. 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
  2. Mude para o diretório conda_recipes.

    cd deadline-cloud-samples/conda_recipes
  3. 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, 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

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 usarrattler-build publish, e o índice do canal está desatualizado.

Inicializando um canal vazio

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 usandorattler-build publish.

Reindexando um canal

Se o índice do canal estiver desatualizado, use rattler-index para reconstruir o índice a partir dos arquivos do pacote no canal. Primeiro, instalerattler-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

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
  2. Adicione o pacote ao projeto.

    pixi add blender=4.5
  3. Verifique se o pacote funciona corretamente.

    pixi run blender --version

    O pixi runcomando 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

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.

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

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

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.

Construindo pacotes para outras plataformas

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.

  • (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 na documentação do rattler-build.

Próximas etapas

Depois de publicar pacotes em seu canal conda do Amazon S3, configure suas filas do Deadline Cloud para usar o canal: