{% extends "base.html" %} {% block content %} {% set active_tab = request.args.get('tab', 'objects') %}

{{ bucket_name }}

{{ 'Versioning On' if versioning_enabled else 'Versioning Off' }} Loading...
Objects
Key Size Actions
Loading...

Loading objects...

Object Details

Select an object to view details

Download
Last modified
ETag
Metadata
Versions
No preview available
Object preview
Bucket Policy
{% if bucket_policy %} {% else %} {% endif %} {% if can_edit_policy %} {% set preset_choice = 'custom' %} {% if not bucket_policy %} {% set preset_choice = 'private' %} {% elif bucket_policy_text and bucket_policy_text.strip() == default_policy.strip() %} {% set preset_choice = 'public' %} {% endif %}
Use presets for common scenarios or switch to Custom JSON to paste AWS-style statements.
{% if bucket_policy %} {% endif %}
{% else %}

You do not have permission to edit this policy.

{% endif %}
About Bucket Policies

Bucket policies are JSON-based access policy documents that specify who can access your bucket and under what conditions.

Policy Types
  • Private — No policy attached; only IAM users with explicit permissions can access.
  • Public Read — Anyone can read objects, but only authenticated users can write.
  • Custom — Fine-grained control using AWS IAM policy syntax.
Policy Elements
  • Effect — Allow or Deny
  • Principal — Who the policy applies to
  • Action — Which S3 operations
  • Resource — Bucket/object ARN
Versioning
{% if versioning_enabled %} {% else %} {% endif %} {% if can_manage_versioning %}
{% if versioning_enabled %} {% else %} {% endif %}
{% else %}

You do not have permission to modify versioning for this bucket.

{% endif %}
{% if versioning_enabled %}
Archived Objects
0 items

Objects that have been deleted while versioning is enabled. Their previous versions remain available until you restore or purge them.

Key Latest Version Versions Actions
No archived objects
{% endif %} {% if encryption_enabled %}
Default Encryption
{% set enc_rules = encryption_config.get('Rules', []) %} {% set enc_default = enc_rules[0].get('ApplyServerSideEncryptionByDefault', {}) if enc_rules else {} %} {% set enc_algorithm = enc_default.get('SSEAlgorithm', '') %} {% set enc_kms_key = enc_default.get('KMSMasterKeyID', '') %} {% if enc_algorithm %} {% else %} {% endif %} {% if can_manage_encryption %}
{% if kms_enabled %}
{% endif %}
{% if kms_enabled %}
Select a KMS key to encrypt objects. Leave empty to use the default key.
{% endif %}
{% if enc_algorithm %} {% endif %}
{% else %}

You do not have permission to modify encryption settings for this bucket.

{% endif %}
{% endif %}
Storage Quota
{% set max_bytes = bucket_quota.get('max_bytes') %} {% set max_objects = bucket_quota.get('max_objects') %} {% set has_quota = max_bytes is not none or max_objects is not none %} {% set current_objects = bucket_stats.get('objects', 0) %} {% set version_count = bucket_stats.get('version_count', 0) %} {% set total_objects = bucket_stats.get('total_objects', current_objects) %} {% set current_bytes = bucket_stats.get('bytes', 0) %} {% set version_bytes = bucket_stats.get('version_bytes', 0) %} {% set total_bytes = bucket_stats.get('total_bytes', current_bytes) %}
Current Usage
{{ total_objects }}
Total Objects
{% if max_objects is not none %}
{% set obj_pct = (total_objects / max_objects * 100) | int if max_objects > 0 else 0 %}
{{ obj_pct }}% of {{ max_objects }} limit
{% else %}
No limit
{% endif %} {% if version_count > 0 %}
({{ current_objects }} current + {{ version_count }} versions)
{% endif %}
{{ total_bytes | filesizeformat }}
Total Storage
{% if max_bytes is not none %}
{% set bytes_pct = (total_bytes / max_bytes * 100) | int if max_bytes > 0 else 0 %}
{{ bytes_pct }}% of {{ max_bytes | filesizeformat }} limit
{% else %}
No limit
{% endif %} {% if version_bytes > 0 %}
({{ current_bytes | filesizeformat }} current + {{ version_bytes | filesizeformat }} versions)
{% endif %}
{% if has_quota %} {% else %} {% endif %} {% if can_manage_quota %}
MB
Minimum 1 MB. Leave empty for unlimited.
Maximum number of objects allowed. Leave empty for unlimited.
{% if has_quota %} {% endif %}
{% else %}

You do not have permission to modify quota settings for this bucket.

{% endif %}
About Versioning

Versioning keeps multiple variants of an object in the same bucket. You can use versioning to preserve, retrieve, and restore every version of every object.

Benefits
  • Recovery — Restore accidentally deleted or overwritten objects
  • Audit Trail — Track changes to objects over time
  • Compliance — Meet retention requirements
How It Works
  • Each upload creates a new version
  • Deleting adds a "delete marker"
  • Previous versions remain accessible
  • Storage costs apply to all versions
{% if versioning_enabled %}
About Archives

When you delete an object with versioning enabled, S3 inserts a delete marker instead of removing the object. The archived versions remain in the bucket and can be restored at any time.

{% endif %} {% if encryption_enabled %}
About Encryption

Server-side encryption protects data at rest. Objects are encrypted when stored and decrypted when retrieved.

Encryption Types
  • SSE-S3 (AES-256) — S3-managed keys, automatic encryption
  • SSE-KMS — KMS-managed keys with audit trail and key rotation
How It Works
  • New objects are encrypted using the default setting
  • Existing objects are not automatically re-encrypted
  • Decryption is transparent during download
{% endif %}
{% if can_manage_replication %}
Replication Configuration
{% if replication_rule and replication_rule.enabled %}
Synced
Pending
Orphaned
Data Synced
Mode
{% if replication_rule.mode == 'all' %}All Objects{% else %}New Only{% endif %}
Replication Target
{% set target_conn = connections | selectattr("id", "equalto", replication_rule.target_connection_id) | first %}
{{ target_conn.name if target_conn else 'Unknown Connection' }}
{{ replication_rule.target_bucket }}
{% if target_conn %}
{{ target_conn.endpoint_url }}
{% endif %}
Enabled
Refresh
{% if is_replication_admin %} {% endif %}
{% elif replication_rule and not replication_rule.enabled %}
Replication Target
{% set target_conn = connections | selectattr("id", "equalto", replication_rule.target_connection_id) | first %}
{{ target_conn.name if target_conn else 'Unknown Connection' }}
{{ replication_rule.target_bucket }}
Paused
{% if is_replication_admin %} {% endif %}
{% else %}
{% if is_replication_admin %}
Set Up Replication

Automatically copy new objects from this bucket to a bucket in another S3-compatible service.

{% else %}
Replication Not Configured

An administrator needs to configure replication settings for this bucket before you can enable it.

{% endif %}
{% if is_replication_admin and connections %}
Select the remote service where objects should be replicated.
If the target bucket does not exist, it will be created automatically.
{% elif is_replication_admin %} {% endif %} {% endif %}
About Replication
  • Choose to replicate new uploads only or all objects (including existing).
  • All changes sync — uploads, updates, and deletes are replicated.
  • Replication happens asynchronously in the background.
  • Ensure credentials have write permissions on target bucket.
{% endif %}
{% endblock %} {% block extra_scripts %} {% endblock %}