scripts/s3-cache-upload.bash
Rama develop · réplica de lectura del repositorio original.
#!/bin/bash
set -e
# S3 Cache Upload Script
# Uploads terraform/terragrunt provider cache to S3
BUCKET="$1"
PREFIX="$2"
REGION="$3"
CACHE_DIR="$4"
# Validation
if [ -z "$BUCKET" ]; then
echo "Error: S3 bucket name is required"
exit 1
fi
if [ -z "$PREFIX" ]; then
echo "Error: S3 bucket prefix is required"
exit 1
fi
if [[ "$PREFIX" == /* ]]; then
echo "Error: S3 bucket prefix should not start with a leading slash"
exit 1
fi
if [ -z "$REGION" ]; then
echo "Error: AWS region is required"
exit 1
fi
if [ -z "$CACHE_DIR" ]; then
echo "Error: Cache directory path is required"
exit 1
fi
# Check if cache directory exists and has files
if [ ! -d "$CACHE_DIR" ]; then
echo "No cache directory found at: $CACHE_DIR"
echo "Nothing to upload"
exit 0
fi
ARTIFACT_COUNT=$(find "$CACHE_DIR" -type f 2>/dev/null | wc -l)
if [ "$ARTIFACT_COUNT" -eq 0 ]; then
echo "No files to cache - cache directory is empty"
echo "Nothing to upload"
exit 0
fi
# Check if AWS CLI is available and credentials are configured
if ! command -v aws &> /dev/null; then
echo "Error: AWS CLI is not installed or not in PATH"
exit 1
fi
# Verify AWS credentials are available
if ! aws sts get-caller-identity --region "$REGION" &> /dev/null; then
echo "Error: AWS credentials are not properly configured or are invalid"
echo "Please ensure AWS credentials are set up correctly before running this script"
exit 1
fi
# Upload cache to S3
echo "Saving cache to S3 bucket: $BUCKET (prefix: $PREFIX, region: $REGION)"
echo "Uploading $ARTIFACT_COUNT files"
if aws s3 sync "$CACHE_DIR" "s3://$BUCKET/$PREFIX" --region "$REGION" --only-show-errors; then
echo "Cache saved successfully"
else
echo "Warning: Failed to save cache (this won't fail the build)"
exit 0 # Don't fail the build on cache upload failure
fi
echo "Cache upload completed"