#!/usr/bin/env bash set -euo pipefail # Пример настройки bucket notifications через mc (S3-compatible) # Запускать НА УДАЛЁННОЙ машине. # # Пример: # export S3CFG=/home/naeel/terra/terraform/secrets/.s3cfg_registry # export BUCKET=buck # export TARGET_ARN='arn:minio:sqs::primary:webhook' # export EVENTS='put,delete' # bash scripts/s3_notification_example.sh # # Где TARGET_ARN — уже существующий target в конфигурации S3/MinIO. S3CFG="${S3CFG:-/home/naeel/terra/terraform/secrets/.s3cfg_registry}" BUCKET="${BUCKET:-}" TARGET_ARN="${TARGET_ARN:-}" EVENTS="${EVENTS:-put}" # put | delete | get | put,delete PREFIX="${PREFIX:-}" # опционально, напр. uploads/ SUFFIX="${SUFFIX:-}" # опционально, напр. .jpg ALIAS_NAME="${ALIAS_NAME:-regnotif}" if ! command -v mc >/dev/null 2>&1; then echo "ERROR: mc не установлен" exit 1 fi if [[ ! -f "$S3CFG" ]]; then echo "ERROR: не найден S3CFG: $S3CFG" exit 1 fi if [[ -z "$BUCKET" ]]; then echo "ERROR: задайте BUCKET" exit 1 fi if [[ -z "$TARGET_ARN" ]]; then echo "ERROR: задайте TARGET_ARN (например arn:minio:sqs::primary:webhook)" exit 1 fi # Читаем access_key/secret_key/host_base из .s3cfg # shellcheck disable=SC2016 readarray -t CFG_LINES < <(python3 - </dev/null 2>&1 || true mc alias set "$ALIAS_NAME" "https://$HOST_BASE" "$ACCESS_KEY" "$SECRET_KEY" >/dev/null echo "[1/3] Текущие notification-правила в бакете $BUCKET:" mc event ls "$ALIAS_NAME/$BUCKET" || true echo "[2/3] Добавление правила: events=$EVENTS target=$TARGET_ARN" EVENT_FLAGS=() IFS=',' read -r -a EVENT_ARRAY <<< "$EVENTS" for ev in "${EVENT_ARRAY[@]}"; do EVENT_FLAGS+=("--event" "$ev") done FILTER_FLAGS=() if [[ -n "$PREFIX" ]]; then FILTER_FLAGS+=("--prefix" "$PREFIX") fi if [[ -n "$SUFFIX" ]]; then FILTER_FLAGS+=("--suffix" "$SUFFIX") fi mc event add "$ALIAS_NAME/$BUCKET" "$TARGET_ARN" "${EVENT_FLAGS[@]}" "${FILTER_FLAGS[@]}" echo "[3/3] Проверка после добавления:" mc event ls "$ALIAS_NAME/$BUCKET" echo "OK: правило уведомлений настроено"