AwsS3Cache.ps1
function Save-AwsS3Cache { [CmdletBinding()] param ( [ValidatePattern('[a-zA-Z_]+')] [Parameter(Mandatory=$true)] [string] $Id, [Parameter(Mandatory=$true)][string[]] $Paths, [string[]] $PathsToComputeHash = @(), #configuration [string] $BucketName = $env:CI_CACHE_AWS_BUCKET_NAME, [string] $AwsAccessKeyId = $env:CI_CACHE_AWS_ACCESS_KEY_ID, [string] $AwsSecretAccessKey = $env:CI_CACHE_AWS_SECRET_ACCESS_KEY, [string] $AwsSessionToken = $env:CI_CACHE_AWS_SESSION_TOKEN, [int] $RepeatCount = 3 ) return Save-CacheInternal ` -Id $Id ` -Paths $Paths ` -PathsToComputeHash $PathsToComputeHash ` -TestHandler { param($key) $res = Get-S3Object -BucketName $BucketName -Key $key -AccessKey $AwsAccessKeyId -SecretKey $AwsSecretAccessKey -SessionToken $AwsSessionToken if (-not($res)) { throw "CI_CACHE_NOT_FOUND: $key does not exist in S3 bucket" } } ` -SaveHandler { param($path) $key = Split-Path -Path $path -Leaf Write-S3Object -BucketName $BucketName -Key $key -File $path -AccessKey $AwsAccessKeyId -SecretKey $AwsSecretAccessKey -SessionToken $AwsSessionToken } ` -RepeatCount $RepeatCount } function Test-AwsS3Cache { [CmdletBinding()] param ( [ValidatePattern('[a-zA-Z_]+')] [Parameter(Mandatory=$true)] [string] $Id, [string[]] $PathsToComputeHash = @(), #configuration [string] $BucketName = $env:CI_CACHE_AWS_BUCKET_NAME, [string] $AwsAccessKeyId = $env:CI_CACHE_AWS_ACCESS_KEY_ID, [string] $AwsSecretAccessKey = $env:CI_CACHE_AWS_SECRET_ACCESS_KEY, [string] $AwsSessionToken = $env:CI_CACHE_AWS_SESSION_TOKEN, [int] $RepeatCount = 3 ) return Test-CacheInternal ` -Id $Id ` -PathsToComputeHash $PathsToComputeHash ` -TestHandler { param($key) $res = Get-S3Object -BucketName $BucketName -Key $key -AccessKey $AwsAccessKeyId -SecretKey $AwsSecretAccessKey -SessionToken $AwsSessionToken if (-not($res)) { throw "CI_CACHE_NOT_FOUND: $key does not exist in S3 bucket" } } ` -RepeatCount $RepeatCount } function Restore-AwsS3Cache { [CmdletBinding()] param ( [ValidatePattern('[a-zA-Z_]+')] [Parameter(Mandatory=$true)] [string] $Id, [string[]] $PathsToComputeHash = @(), [string] $RestoreHashKey, [string] $OutputPath, #configuration [string] $BucketName = $env:CI_CACHE_AWS_BUCKET_NAME, [string] $AwsAccessKeyId = $env:CI_CACHE_AWS_ACCESS_KEY_ID, [string] $AwsSecretAccessKey = $env:CI_CACHE_AWS_SECRET_ACCESS_KEY, [string] $AwsSessionToken = $env:CI_CACHE_AWS_SESSION_TOKEN, [int] $RepeatCount = 3 ) return Restore-CacheInternal ` -Id $Id ` -PathsToComputeHash $PathsToComputeHash ` -RestoreHashKey $RestoreHashKey ` -OutputPath $OutputPath ` -RestoreHandler { param($key) Read-S3Object -BucketName $BucketName -Key $key -File $key -AccessKey $AwsAccessKeyId -SecretKey $AwsSecretAccessKey -SessionToken $AwsSessionToken } ` -RepeatCount $RepeatCount } |