Почему моя загрузка PowerShell в lambda обрабатывает каталоги как файлы? - PullRequest
0 голосов
/ 09 апреля 2019

Используя следующий скрипт

$tmpdir = New-TemporaryFile | %{ rm $_; mkdir $_ }
$tempFile = New-TemporaryFile
$ziplocation = $tempFile.FullName + ".zip"
$ziplocation 
$filepath = Get-ChildItem $file
$filename = $filepath.Name
$fileWithoutExtension = $filepath.BaseName
$directory = Split-Path -path $file -parent
$sharedFolder = Join-Path -Path $directory -ChildPath "/shared"
$sharedFolder
$lambdaName = "$($enviroment)__$($fileWithoutExtension)"
$s3path = "$($enviroment)/$($lambdaName).zip"
$s3fullPath = "s3://firmware-repo-source-code/$($enviroment)/$($lambdaName).zip"

Copy-Item -Path $file -Destination $tmpdir
"Base file copied"
Rename-Item  -path(Join-Path -Path $tmpdir -ChildPath $filename) -NewName "index.js"

Copy-Item -Path $sharedFolder -Destination $tmpdir -Recurse -Container
"shared files copied"

#Compress-Archive -Path $tmpdir -DestinationPath $ziplocation
Compress-Archive -Path ($tmpdir.FullName + "\*") -DestinationPath $ziplocation
"zip created"

aws lambda update-function-code --function-name $lambdaName --zip-file ("fileb://" + $ziplocation)
"Lambda updated"

function New-TemporaryDirectory {
    $parent = [System.IO.Path]::GetTempPath()
    [string] $name = [System.Guid]::NewGuid()
    New-Item -ItemType Directory -Path (Join-Path $parent $name)
}

Я получаю структуру своего лямбда-проекта, которая выглядит следующим образом: enter image description here

Я на машине с Windows иработает PowerShell версии 5.1.17763.316.Я могу загрузить zip-архив на s3 программным способом и просмотреть его в проводнике, но если я загружу этот же zip-файл через console.aws.com, у меня возникнет та же проблема.

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Стандарт ZIP использует / в качестве разделителя пути, но Compress-Archive в Powershell использует \, поэтому, когда он разархивируется Lambda, он представляет собой длинные имена файлов вместо разделенных путей.

0 голосов
/ 10 апреля 2019

Мне удалось использовать 7zip для правильного сжатия файлов так, как это принимал AWS. Не уверен, что не так со встроенным методом powershell, который им не понравился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...