ci: relax aws checksum mode for rainyun s3

This commit is contained in:
lincube
2026-04-21 08:20:41 +08:00
parent 8323b8cb61
commit 4d5bea0c46
2 changed files with 32 additions and 4 deletions

View File

@@ -732,6 +732,8 @@ jobs:
AWS_DEFAULT_REGION: ${{ vars.S3_REGION }}
AWS_REGION: ${{ vars.S3_REGION }}
AWS_EC2_METADATA_DISABLED: "true"
AWS_REQUEST_CHECKSUM_CALCULATION: "WHEN_REQUIRED"
AWS_RESPONSE_CHECKSUM_VALIDATION: "WHEN_REQUIRED"
steps:
- uses: actions/checkout@v4
@@ -806,6 +808,7 @@ jobs:
shell: bash
run: |
set -euo pipefail
aws --version
aws --endpoint-url "$S3_ENDPOINT" --region "$S3_REGION" s3 ls "s3://$S3_BUCKET" >/dev/null
echo "S3 access probe succeeded for $S3_BUCKET"

View File

@@ -80,11 +80,36 @@ function Invoke-AwsSyncIfPossible {
return
}
if ($IgnoreFailure) {
& aws @Arguments 2>$null
$previousRequestChecksumCalculation = $env:AWS_REQUEST_CHECKSUM_CALCULATION
$previousResponseChecksumValidation = $env:AWS_RESPONSE_CHECKSUM_VALIDATION
# Rainyun's S3-compatible endpoint rejects AWS CLI v2's default checksum headers
# during multipart uploads. Restrict checksum behavior to API-required cases only.
$env:AWS_REQUEST_CHECKSUM_CALCULATION = "WHEN_REQUIRED"
$env:AWS_RESPONSE_CHECKSUM_VALIDATION = "WHEN_REQUIRED"
try {
if ($IgnoreFailure) {
& aws @Arguments 2>$null
}
else {
& aws @Arguments
}
}
else {
& aws @Arguments
finally {
if ($null -eq $previousRequestChecksumCalculation) {
Remove-Item Env:AWS_REQUEST_CHECKSUM_CALCULATION -ErrorAction SilentlyContinue
}
else {
$env:AWS_REQUEST_CHECKSUM_CALCULATION = $previousRequestChecksumCalculation
}
if ($null -eq $previousResponseChecksumValidation) {
Remove-Item Env:AWS_RESPONSE_CHECKSUM_VALIDATION -ErrorAction SilentlyContinue
}
else {
$env:AWS_RESPONSE_CHECKSUM_VALIDATION = $previousResponseChecksumValidation
}
}
if ($LASTEXITCODE -ne 0 -and -not $IgnoreFailure) {