Created
November 13, 2025 22:28
-
-
Save fizz/73f6e48fe6983b932dcaeca65aa8e88d to your computer and use it in GitHub Desktop.
Temporary CloudTrail for ESF S3 data events
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| set -euo pipefail | |
| ENVIRONMENT="${ENVIRONMENT:-dev}" | |
| ACCOUNT_ID="${ACCOUNT_ID:-150992150901}" | |
| REGION="${REGION:-us-west-2}" | |
| CONFIG_BUCKET="pge-elastic-serverless-forwarder-config-${ENVIRONMENT,,}-${ACCOUNT_ID}" | |
| TRAIL_NAME="esf-config-data-events-$(date +%s)" | |
| LOG_BUCKET="pge-cloudtrail-temp-logs-${TRAIL_NAME}" | |
| log() { | |
| printf '[%s] %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$1" | |
| } | |
| log "Creating log bucket s3://${LOG_BUCKET}" | |
| aws s3 mb "s3://${LOG_BUCKET}" | |
| log "Creating CloudTrail ${TRAIL_NAME}" | |
| aws cloudtrail create-trail \ | |
| --name "${TRAIL_NAME}" \ | |
| --s3-bucket-name "${LOG_BUCKET}" \ | |
| --is-multi-region-trail | |
| aws cloudtrail start-logging --name "${TRAIL_NAME}" | |
| log "Enabling S3 data events for ${CONFIG_BUCKET}" | |
| aws cloudtrail put-event-selectors \ | |
| --trail-name "${TRAIL_NAME}" \ | |
| --event-selectors "[ | |
| { | |
| \"ReadWriteType\": \"All\", | |
| \"IncludeManagementEvents\": false, | |
| \"DataResources\": [ | |
| { | |
| \"Type\": \"AWS::S3::Object\", | |
| \"Values\": [\"arn:aws:s3:::${CONFIG_BUCKET}/\"] | |
| } | |
| ] | |
| } | |
| ]" | |
| cat <<MSG | |
| Force the Lambda to restart (update an env var) and wait ~60 seconds. | |
| Then run: | |
| aws cloudtrail lookup-events \ | |
| --lookup-attributes AttributeKey=ResourceName,AttributeValue=arn:aws:s3:::${CONFIG_BUCKET}/config.yaml \ | |
| --max-results 10 | |
| Press Enter when done to clean up logging. | |
| MSG | |
| read -r _ | |
| log "Stopping CloudTrail logging" | |
| aws cloudtrail stop-logging --name "${TRAIL_NAME}" | |
| log "Deleting CloudTrail" | |
| aws cloudtrail delete-trail --name "${TRAIL_NAME}" | |
| log "Deleting log bucket" | |
| aws s3 rb "s3://${LOG_BUCKET}" --force | |
| log "Cleanup complete" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment