Estou desenvolvendo AWS Lambda (NET6). Durante a execução da ação do Github (build, zip, upload) em um arquivo yml do CloudFormation, recebi o erro:
Run zip -jr customerlambda-356e9e4b8869b2cf7f483d739aa5a8aa34e0fc13.zip -i ./bin/Release/net6.0/publish/*
zip error: Invalid command arguments (nothing to select from)
Error: Process completed with exit code 16.
Está no ambiente mais recente do Ubuntu.
O que está incorreto aqui?
Você parece querer:
ou seja, sem
-i
... Com a opção-i
( include ), você ainda não especificou o caminho para o(s) arquivo(s)/diretório(s) de origem e, portanto, o erro:Observe um:
./bin/Release/net6.0/publish/
parece ser o caminho relativo para onde estão seus arquivos / diretórios de origem, mas adicionar-i
antes dele o transformará em um argumento para a-i
opção em vez de um argumento para ozip
próprio comando ... Portanto, no quezip
diz respeito ao comando, há nenhum argumento de arquivo/diretório de origem ... e você não precisa incluir o conteúdo desse diretório, pois-i
a-r
opção será recursiva através do conteúdo desse diretório para que você não precise usar*
( o que é melhor você escapar com uma barra invertida\*
quando usado ) ou ... Então, simplesmente remova-i
e*
.Observe dois:
A
-j
opção resultará nozip
armazenamento apenas do(s) nome(s) de um(s) arquivo(s) salvo(s) e não no armazenamento de nomes de diretórios ( ou seja, caminhos relativos ao diretório atual ) ... Isso pode causar um problema quando usado com a-r
opção como nomes de arquivos idênticos duplicados pode existir em subdiretórios que serão recursados pelo-r
conjunto de opções, o que resultará nozip
recebimento de nomes de arquivos repetidos para armazenar no arquivo, o que não pode ser feito e resultará em um erro como:Então, você pode não querer usar
-j
nesse caso.Observe três:
Embora os caminhos relativos na forma de
./subdir/subdir2/
earchive.zip
funcionem e sejam analisados em relação ao diretório de trabalho atual, pode ser uma boa ideia em arquivos de script usar o caminho real completo para o arquivo de saída e o(s) diretório(s)/arquivo(s) de origem ) como, por exemplo, se seu diretório de origem for:e você deseja que o arquivo compactado resultante seja nomeado
customerlambda.zip
e salvo em:então use o
zip
comando assim:a barra invertida
\
é usada para escapar da nova linha usada para fins de redabilidade neste post e fará com que o shell leia o comando como um forro ignorando a nova linha escapada.