Skip to content

Instantly share code, notes, and snippets.

@imaustink
Created August 23, 2025 14:15
Show Gist options
  • Save imaustink/49a5fe78cbddfde391e235bb5d645ae8 to your computer and use it in GitHub Desktop.
Save imaustink/49a5fe78cbddfde391e235bb5d645ae8 to your computer and use it in GitHub Desktop.
An example of using a Kubernetes Job to set a storage bucket lifecycle policy.
apiVersion: v1
kind: ConfigMap
metadata:
name: object-bucket-lifecycle-policy
namespace: n8n-system
data:
lifecycle.json: |
{
"Rules": [
{
"ID": "expire-binaries",
"Prefix": "",
"Status": "Enabled",
"Expiration": { "Days": 30 }
}
]
}
---
apiVersion: batch/v1
kind: Job
metadata:
name: object-bucket-lifecycle-policy
namespace: n8n-system
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: aws-cli
image: amazon/aws-cli:latest
command:
- /bin/bash
- -c
- |
set -e
# Configure AWS CLI
aws configure set aws_access_key_id "$AWS_ACCESS_KEY_ID"
aws configure set aws_secret_access_key "$AWS_SECRET_ACCESS_KEY"
aws configure set default.region us-east-1
# Apply lifecycle policy using the mounted ConfigMap
aws --endpoint-url "http://rook-ceph-rgw-object-store.ceph-system.svc.cluster.local" \
s3api put-bucket-lifecycle-configuration \
--bucket "$BUCKET_NAME" \
--lifecycle-configuration file:///config/lifecycle.json
echo "Lifecycle policy applied successfully!"
volumeMounts:
- name: lifecycle-policy
mountPath: /config
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: n8n-binaries
key: AWS_ACCESS_KEY_ID
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: n8n-binaries
key: AWS_SECRET_ACCESS_KEY
- name: BUCKET_NAME
valueFrom:
configMapKeyRef:
name: n8n-binaries
key: BUCKET_NAME
volumes:
- name: lifecycle-policy
configMap:
name: object-bucket-lifecycle-policy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment