- What's New
- Function Overview
- Product Notices
- Service Overview
- Billing
- Getting Started
- User Guide
-
Console Operation Guide
- Console Function Overview
- Web Browser Compatibility
- Getting Started
- Managing Buckets
- Managing Objects
- Permissions Control
- Data Management
- Data Access
- Data Security
- Monitoring and Logging
- Task Center
- Related Operations
- Troubleshooting
- Error Code List
-
Permissions Configuration Guide
- Introduction to OBS Access Control
- Permission Control Mechanisms
- Access Requests
- Typical Permission Control Scenarios
-
Configuration Cases in Typical Permission Control Scenarios
-
Granting Permissions to an IAM User Under the Current Account
- Granting an IAM User the Permissions Required to List and Create Buckets
- Granting an IAM User the Read/Write Permission for a Bucket
- Granting an IAM User the Specified Permissions for a Bucket
- Granting an IAM User the Read Permission for Specific Objects
- Granting an IAM User the Specified Permissions for Certain Objects
-
Granting Permissions to Multiple IAM Users or User Groups Under the Current Account
- Granting IAM User Groups All Permissions for All OBS Resources
- Granting IAM User Groups Basic Permissions for All OBS Resources
- Granting IAM User Groups the Specified Permissions for All OBS Resources
- Granting IAM User Groups the Specified Permissions for Certain OBS Resources
- Granting IAM User Groups the Specified Permissions for a Folder
-
Granting Permissions to Other Accounts
- Granting Other Accounts the Read/Write Permission for a Bucket
- Granting Other Accounts the Specified Permissions for a Bucket
- Granting IAM Users Under an Account the Access to a Bucket and the Resources in It
- Granting Other Accounts the Read Permission for Certain Objects
- Granting Other Accounts the Specified Permissions for Certain Objects
- Granting Permissions to Anonymous Users
- Granting Temporary Access to OBS
- Restricting Access to a Bucket for Specific IP Addresses
-
Granting Permissions to an IAM User Under the Current Account
- Appendix
- Change History
- Feature Guide
-
Tools Guide
-
OBS Browser+
- Introduction
- OBS Browser+ Function Overview
- Downloading OBS Browser+
- Installing OBS Browser+
- Logging In to OBS Browser+
- Basic Bucket Operations
- Advanced Bucket Settings
- Object Operations
- Task Management
- Best Practices
-
FAQs
- Where Can I Obtain Access Keys (AK and SK)?
- Where Can I Obtain an IAM User ID?
- Can I Install Two OBS Browser+ Tools from Different Sites in One System?
- What Are the Differences Between OBS Browser+ and OBS Browser?
- Does OBS Browser+ Support the Migration of Account and Task Information from OBS Browser?
- Why Does the Task Processing Speed Slow After the Number of Tasks Exceeds a Million?
- Why Are the Displayed Number of Objects and Used Storage Capacity Different from the Actual Number of Objects and Storage Capacity?
- Why Is the Deliver Attribute Configured Using an SDK Overwritten to False After I Configure a Bucket ACL on OBS Browser+?
- What If "Login request denied." Is Displayed When I Try to Log In to OBS Browser+ Using an Account?
- What If "Failed to obtain the user token from IAM." Is Displayed When I Try to Log In to OBS Browser+ Using an Account?
- What If Message "Incorrect Account or Password" Is Displayed When I Try to Log In to OBS Browser+ Using an Account?
- Will Incremental Upload Be Used in Auto Upload Tasks?
- How Can I Permanently Share Files or Folders with Other Users?
- How Can I Access a Specific Bucket or Directory?
- Can I Cancel the Directory Sharing After a Directory Has Been Shared with Others?
- Can I Query the Number and Size of Files in a Folder?
- How Do I Troubleshoot a DNS Resolution Failure?
- Can OBS Browser+ List Objects with Special Characters in Their Names?
- Why Are Objects Always in the Restoring State?
- Uninstalling OBS Browser+
-
obsutil
- obsutil Introduction
- Downloading and Installing obsutil
- Getting Started
- Bucket Commands
-
Object Commands
- Creating a Folder
- Uploading an Object
- Querying Object Properties
- Setting Object Properties
- Listing Objects
- Copying an Object
- Moving an Object
- Downloading an Object
- Generating the Download Link of an Object
- Deleting an Object
- Synchronously Uploading Incremental Objects
- Synchronously Copying Incremental Objects
- Synchronously Downloading Incremental Objects
- Restoring Objects from the Archive Storage
- Resuming a Failed Upload Task
- Resuming a Failed Copy Task
- Resuming a Failed Download Task
- Listing Multipart Upload Tasks
- Deleting a Multipart Upload Task
- Creating an Authorization Code for Directory Sharing
- Listing Objects by Using an Authorization Code
- Downloading Objects by Using an Authorization Code
- Auxiliary Commands
- Common Examples
- Fault Locating
-
Best Practices
- Using the obsutil help Command to Search for Functions
- Configuring Scheduled Tasks Using the Crontab Command
- Setting obsutil Commands as Built-in Commands
- Configuring Auto Obtaining of Access Keys for obsutil
- Fine-Tuning obsutil Performance
- Using obsutil for Resumable Data Transfer
- Using obsutil to Upload a Symbolic Link
- Configuring an HTTP Proxy for obsutil
- Using obsutil to Share Directories
- Using obsutil to Replicate Data Across Regions on the Client Side
- Limiting the Upload and Download Rate for obsutil
-
FAQs
- After Some Files Are Deleted in My Local Directory, Can obsutil Synchronously Delete Them from the Bucket?
- Can I Use obsutil to Directly Save a Listing Result to a Local File?
- Why Is the Size of Objects Queried by obsutil Inconsistent with That on OBS Console?
- How Can I Find Out Why Some Tasks in a Batch Task Failed?
- How Can I Locate and Rectify I/O Timeout and EOF Errors?
- Why Is a Question Mark Displayed in the Batch Task Progress Bar?
- Can Multiple config Files Be Placed in One Directory?
- Why Is the Number of Objects I Downloaded from OBS to My Local Windows PC Different from That in OBS?
- Can I Rename an Object or a Folder?
- Configuration Parameters
-
OBS Browser+
-
Best Practices
- Overview
- Using Backup Software to Back Up Local Data to OBS
- Using a User-Defined Domain Name to Host a Static Website
- Optimizing the Performance
- Using the PostObject API to Upload Data from a Web Client to OBS
- Uploading Data from Mobile Apps to OBS
- Uploading Data from Mini Programs to OBS
- Accessing OBS Through an NGINX Reverse Proxy
- Using OBS to Decouple Storage from Compute in Big Data Scenarios
- Change History
-
API Reference
- Before You Start
- API Overview
- Calling APIs
- Getting Started
-
APIs
- Operations on Buckets
-
Advanced Bucket Settings
- Configuring a Bucket Policy
- Obtaining Bucket Policy Information
- Deleting a Bucket Policy
- Configuring a Bucket ACL
- Obtaining Bucket ACL Information
- Configuring Logging for a Bucket
- Obtaining a Bucket Logging Configuration
- Configuring Bucket Lifecycle Rules
- Obtaining Bucket Lifecycle Configuration
- Deleting Lifecycle Rules
- Configuring Versioning for a Bucket
- Obtaining Bucket Versioning Status
- Configuring Storage Class for a Bucket
- Obtaining Bucket Storage Class Information
- Configuring Tags for a Bucket
- Obtaining Bucket Tags
- Deleting Tags
- Configuring Bucket Storage Quota
- Querying Bucket Storage Quota
- Obtaining Storage Information of a Bucket
- Configuring Bucket Inventories
- Obtaining a Specific Inventory of a Bucket
- Listing All Inventories of a Bucket
- Deleting Bucket Inventories
- Configuring Bucket Encryption
- Obtaining Bucket Encryption Configuration
- Deleting the Encryption Configuration of a Bucket
- Setting the Direct Reading Policy for Archive Objects in a Bucket
- Obtaining the Direct Reading Policy of Archive Objects in a Bucket
- Deleting the Direct Reading Policy of Archive Objects in a Bucket
-
Static Website Hosting
- Configuring Static Website Hosting for a Bucket
- Obtaining the Static Website Hosting Configuration of a Bucket
- Deleting the Static Website Hosting Configuration of a Bucket
- Configuring Bucket CORS
- Obtaining the CORS Configuration of a Bucket
- Deleting the CORS Configuration of a Bucket
- OPTIONS Bucket
- OPTIONS Object
-
Operations on Objects
- Uploading an Object - PUT
- Uploading an Object - POST
- Copying an Object
- Downloading an Object
- Querying Object Metadata
- Deleting an Object
- Deleting Objects
- Restoring Archive Objects
- Appending an Object
- Configuring an Object ACL
- Obtaining Object ACL Configuration
- Modifying Object Metadata
- Modifying an Object
- Truncating an Object
- Renaming an Object
- Operations on Multipart Upload
- Server-Side Encryption
- Error Codes
- Permissions and Supported Actions
- Appendixes
- Change History
-
SDK Reference
- SDK Overview
-
Python
- Before You Start (SDK for Python)
- API Overview of OBS SDK for Python
- Preparations (SDK for Python)
- Downloading and Installing OBS SDK for Python
- Getting Started with OBS SDK for Python
- Initialization (SDK for Python)
-
Bucket-Related APIs (SDK for Python)
- Creating a Bucket (SDK for Python)
- Obtaining a Bucket List (SDK for Python)
- Checking Whether a Bucket Exists (SDK for Python)
- Deleting a Bucket (SDK for Python)
- Listing Objects in a Bucket (SDK for Python)
- Listing Object Versions in a Bucket (SDK for Python)
- Obtaining Bucket Metadata (SDK for Python)
- Obtaining the Region of a Bucket (SDK for Python)
- Obtaining Storage Information of a Bucket (SDK for Python)
- Configuring a Storage Quota (SDK for Python)
- Obtaining a Bucket Storage Quota (SDK for Python)
- Configuring a Storage Class for a Bucket (SDK for Python)
- Obtaining the Storage Class of a Bucket (SDK for Python)
- Configuring a Bucket ACL (SDK for Python)
- Obtaining a Bucket ACL (SDK for Python)
- Configuring Logging for a Bucket (SDK for Python)
- Obtaining the Logging Configuration of a Bucket (SDK for Python)
- Configuring a Bucket Policy (SDK for Python)
- Obtaining the Policy of a Bucket (SDK for Python)
- Deleting a Bucket Policy (SDK for Python)
- Configuring Lifecycle Rules for a Bucket (SDK for Python)
- Obtaining the Lifecycle Configuration of a Bucket (SDK for Python)
- Deleting the Lifecycle Configuration of a Bucket (SDK for Python)
- Configuring Static Website Hosting for a Bucket (SDK for Python)
- Obtaining Static Website Hosting for a Bucket (SDK for Python)
- Deleting Static Website Hosting for a Bucket (SDK for Python)
- Configuring Versioning for a Bucket (SDK for Python)
- Obtaining the Versioning Status of a Bucket (SDK for Python)
- Configuring CORS for a Bucket (SDK for Python)
- Obtaining the CORS Configuration of a Bucket (SDK for Python)
- Deleting the CORS Configuration of a Bucket (SDK for Python)
- Configuring Tags for a Bucket (SDK for Python)
- Obtaining Bucket Tags (SDK for Python)
- Deleting Bucket Tags (SDK for Python)
-
Object-Related APIs (SDK for Python)
- Object Upload Overview (SDK for Python)
- Uploading Objects - Text-Based (SDK for Python)
- Uploading an Object - Streaming (SDK for Python)
- Uploading an Object - File-Based (SDK for Python)
- Uploading an Object - Append (SDK for Python)
- Uploading an Object - Resumable (SDK for Python)
- Obtaining the Upload Progress (SDK for Python)
- Uploading an Object - Browser-Based (SDK for Python)
- Object Download Overview (SDK for Python)
- Downloading an Object - Binary (SDK for Python)
- Downloading an Object - Streaming (SDK for Python)
- Downloading an Object - File-Based (SDK for Python)
- Downloading an Object - Range-Based (SDK for Python)
- Downloading an Object - Resumable (SDK for Python)
- Downloading an Object - Obtaining the Download Progress (SDK for Python)
- Uploading an Object - Creating a Folder (SDK for Python)
- Copying an Object (SDK for Python)
- Deleting an Object (SDK for Python)
- Batch Deleting Objects (SDK for Python)
- Obtaining Object Metadata (SDK for Python)
- Modifying Object Metadata (SDK for Python)
- Configuring an Object ACL (SDK for Python)
- Obtaining an Object ACL (SDK for Python)
- Restoring an Archive Object (SDK for Python)
-
APIs Related to Multipart Upload (SDK for Python)
- Multipart Upload Overview (SDK for Python)
- Initiating a Multipart Upload (SDK for Python)
- Uploading a Part (SDK for Python)
- Listing Uploaded Parts (SDK for Python)
- Listing Multipart Uploads (SDK for Python)
- Assembling Parts (SDK for Python)
- Copying a Part (SDK for Python)
- Aborting a Multipart Upload (SDK for Python)
- Client-Side Encryption APIs (SDK for Python)
- Other APIs (SDK for Python)
- Troubleshooting (SDK for Python)
-
FAQs (SDK for Python)
- How Do I Make an Object Accessible to Anonymous Users? (SDK for Python)
- How Can I Obtain the AK and SK? (SDK for Python)
- How Do I Obtain an Object URL? (Python SDK)
- How Do I Improve the Uploading Speed of Large Files over the Public Network? (SDK for Python)
- Setting an Object Expiration Time (SDK for Python)
- What Is Content-Type (MIME)? (Python SDK)
- How Do I Get My Account ID and IAM User ID? (SDK for Python)
-
Java
- Before You Start (SDK for Java)
- API Overview (SDK for Java)
- Preparations (SDK for Java)
- SDK Download and Installation (SDK for Java)
- Getting Started (SDK for Java)
- Initialization (SDK for Java)
-
Bucket Management (SDK for Java)
- Creating a Bucket (SDK for Java)
- Obtaining a Bucket List (SDK for Java)
- Deleting a Bucket (SDK for Java)
- Checking Whether a Bucket Exists (SDK for Java)
- Obtaining Bucket Metadata (SDK for Java)
- Configuring a Bucket ACL (SDK for Java)
- Obtaining a Bucket ACL (SDK for Java)
- Configuring a Bucket Policy (SDK for Java)
- Obtaining the Policy of a Bucket (SDK for Java)
- Deleting a Bucket Policy (SDK for Java)
- Obtaining the Region of a Bucket (SDK for Java)
- Obtaining Storage Information of a Bucket (SDK for Java)
- Configuring a Storage Quota (SDK for Java)
- Obtaining a Bucket Storage Quota (SDK for Java)
- Configuring a Storage Class for a Bucket (SDK for Java)
- Obtaining the Storage Class of a Bucket (SDK for Java)
- Bucket Inventory (SDK for Java)
-
Object Upload (SDK for Java)
- Overview (SDK for Java)
- Uploading an Object - Streaming (SDK for Java)
- Uploading an Object - File-Based (SDK for Java)
- Obtaining the Upload Progress (SDK for Java)
- Creating a Folder (SDK for Java)
- Configuring Object Metadata (SDK for Java)
-
Multipart Upload (SDK for Java)
- Multipart Upload Overview (SDK for Java)
- Initiating a Multipart Upload (SDK for Java)
- Uploading a Part (SDK for Java)
- Assembling Parts (SDK for Java)
- Code Example of a Multipart Upload (SDK for Java)
- Aborting a Multipart Upload (SDK for Java)
- Listing Uploaded Parts (SDK for Java)
- Listing Multipart Uploads (SDK for Java)
- Configuring Lifecycle Rules (SDK for Java)
- Uploading an Object - Append (SDK for Java)
- Uploading an Object - Resumable (SDK for Java)
- Uploading an Object - Browser-Based (SDK for Java)
-
Object Download (SDK for Java)
- Overview (SDK for Java)
- Downloading an Object - Streaming (SDK for Java)
- Downloading an Object - Range-Based (SDK for Java)
- Obtaining the Download Progress (SDK for Java)
- Downloading an Object - Conditional (SDK for Java)
- Rewriting Response Headers (SDK for Java)
- Obtaining User-defined Metadata (SDK for Java)
- Restoring an Archive Object (SDK for Java)
- Downloading an Object - Resumable (SDK for Java)
-
Object Management (SDK for Java)
- Configuring Object Metadata (SDK for Java)
- Obtaining Object Metadata (SDK for Java)
- Configuring an Object ACL (SDK for Java)
- Obtaining an Object ACL (SDK for Java)
- Listing Objects (SDK for Java)
- Deleting an Object (SDK for Java)
- Batch Deleting Objects (SDK for Java)
- Copying an Object (SDK for Java)
- Copying an Object - Multipart (SDK for Java)
- Checking Whether an Object Exists (SDK for Java)
- Temporarily Authorized Access (SDK for Java)
-
Versioning (SDK for Java)
- Overview (SDK for Java)
- Configuring Versioning for a Bucket (SDK for Java)
- Obtaining the Versioning Status of a Bucket (SDK for Java)
- Obtaining an Object Version (SDK for Java)
- Copying an Object Version (SDK for Java)
- Restoring a Specific Archive Object Version (SDK for Java)
- Listing Object Versions (SDK for Java)
- Setting an ACL for an Object Version (SDK for Java)
- Obtaining the ACL of an Object Version (SDK for Java)
- Deleting an Object Version (SDK for Java)
- Batch Deleting Object Versions (SDK for Java)
- Lifecycle Management (SDK for Java)
- Cross-Origin Resource Sharing (SDK for Java)
- Logging (SDK for Java)
- Static Website Hosting (SDK for Java)
- Bucket Tag Management (SDK for Java)
- Server-Side Encryption (SDK for Java)
- Client-Side Encryption (SDK for Java)
- Fault Locating (SDK for Java)
- Troubleshooting (SDK for Java)
-
FAQs (SDK for Java)
- Can I Use This Document for Union SDK?
- How Can I Set an Object to Be Accessible to Anonymous Users? (Java SDK)
- What Is the Retry Mechanism of SDK? (SDK for Java)
- How Do I Obtain the Static Website Access Address of a Bucket? (Java SDK)
- How Do I Obtain an Object URL? (Java SDK)
- How to Improve the Speed of Uploading Large Files over the Public Network? (SDK for Java)
- How Can I Perform a Multipart Upload? (SDK for Java)
- How Can I Perform a Download in Multipart Mode? (Java SDK)
- How Do I Confirm that an Upload is Successful If I Upload an Object to Overwrite an Existing Object with the Same Name in a Bucket? (SDK for Java)
- How Do I Download an Encrypted Object Using a URL? (SDK for Java)
- How Do I Generate an SSE-C Encryption Key?
- How Do I Obtain the Security Token? (Java SDK)
- Does the SDK Support Uploading, Downloading, or Copying Objects in a Batch? (Java SDK)
- What Is Content-Type (MIME)? (Java SDK)
- How Do I Get My Account ID and User ID?
-
Go
- Before You Start (SDK for Go)
- API Overview of OBS SDK for Go
- Preparations (SDK for Go)
- Downloading and Installing OBS SDK for Go
- Getting Started with OBS SDK for Go
- Initializing OBS SDK for Go
-
Buckets (SDK for Go)
- Bucket API Overview (SDK for Go)
- Creating a Bucket (SDK for Go)
- Obtaining a Bucket List (SDK for Go)
- Checking Whether a Bucket Exists (SDK for Go)
- Deleting a Bucket (SDK for Go)
- Listing Objects in a Bucket (SDK for Go)
- Listing Object Versions in a Bucket (SDK for Go)
- Obtaining Bucket Metadata (SDK for Go)
- Obtaining the Region of a Bucket (SDK for Go)
- Obtaining Storage Information of a Bucket (SDK for Go)
- Configuring a Storage Quota (SDK for Go)
- Obtaining a Bucket Storage Quota (SDK for Go)
- Configuring Storage Class for a Bucket (SDK for Go)
- Obtaining the Storage Class of a Bucket (SDK for Go)
- Configuring a Bucket ACL (SDK for Go)
- Obtaining the Bucket ACL (SDK for Go)
- Configuring Logging for a Bucket (SDK for Go)
- Obtaining the Logging Configuration of a Bucket (SDK for Go)
- Configuring a Bucket Policy (SDK for Go)
- Obtaining the Policy of a Bucket (SDK for Go)
- Deleting a Bucket Policy (SDK for Go)
- Configuring Lifecycle Rules for a Bucket (SDK for Go)
- Obtaining the Lifecycle Configuration of a Bucket (SDK for Go)
- Deleting the Lifecycle Configuration of a Bucket (SDK for Go)
- Configuring Static Website Hosting for a Bucket (SDK for Go)
- Obtaining the Static Website Hosting Configuration of a Bucket (SDK for Go)
- Deleting the Static Website Hosting Configuration of a Bucket (SDK for Go)
- Configuring Versioning for a Bucket (SDK for Go)
- Obtaining the Versioning Status of a Bucket (SDK for Go)
- Configuring CORS for a Bucket (SDK for Go)
- Obtaining the CORS Configuration of a Bucket (SDK for Go)
- Deleting the CORS Configuration of a Bucket (SDK for Go)
- Configuring a Custom Domain Name for a Bucket (SDK for Go)
- Obtaining the Custom Domain Name of a Bucket (SDK for Go)
- Deleting the Custom Domain Name of a Bucket (SDK for Go)
-
Objects (SDK for Go)
- Object API Overview (SDK for Go)
- Object Upload Overview (SDK for Go)
- Object Download Overview (SDK for Go)
- Creating a Folder (SDK for Go)
- Copying an Object (SDK for Go)
- Deleting an Object (SDK for Go)
- Batch Deleting Objects (SDK for Go)
- Configuring Object Metadata (SDK for Go)
- Obtaining Object Metadata (SDK for Go)
- Configuring an Object ACL (SDK for Go)
- Obtaining Object ACL Information (SDK for Go)
- Rewriting Response Headers (SDK for Go)
- Restoring an Archive Object (SDK for Go)
- Modifying an Object (SDK for Go)
- Multipart Uploads (SDK for Go)
- Other APIs (SDK for Go)
- Single-Connection Bandwidth Throttling (SDK for Go)
- Troubleshooting (SDK for Go)
- FAQ (SDK for Go)
-
Android
- Installing the SDK
- Example Programs
- Quick Start
- Initialization
- Bucket Management
-
Object Upload
- Object Upload Overview
- Performing a Streaming Upload
- Performing a File-Based Upload
- Obtaining Upload Progresses
- Creating a Folder
- Setting Object Properties
- Performing a Multipart Upload
- Configuring Lifecycle Management
- Performing an Appendable Upload
- Performing a Multipart Copy
- Performing a Resumable Upload
- Performing a Browser-Based Upload
- Object Download
- Object Management
- Temporarily Authorized Access
- Versioning Management
- Lifecycle Management
- CORS
- Access Logging
- Static Website Hosting
- Tag Management
- Server-Side Encryption
- Troubleshooting
- FAQ
-
C
- Before You Start
- Downloading and Installing the SDK
- Quick Start
- Initialization
- Bucket Management
- Uploading an Object
- Downloading an Object
- Object Management
- Temporarily Authorized Request
- Accessing OBS Through a User-Defined Domain Name
- Versioning Management
- Lifecycle Management
- Cross-Origin Resource Sharing (CORS)
- Setting Access Logging
- Static Website Hosting
- Tag Management
- Server-Side Encryption
- Troubleshooting
- FAQs
-
BrowserJS
- Before You Start
- SDK Download Links
- Example Programs
- Quick Start
- Initialization
- Fault Locating
- Bucket Management
-
Object Upload
- Object Upload Overview
- Performing a Text-Based Upload
- Performing a File-Based Upload
- Obtaining Upload Progresses
- Creating a Folder
- Setting Object Properties
- Performing a Multipart Upload
- Configuring Lifecycle Management
- Performing an Appendable Upload
- Performing a Multipart Copy
- Performing a Resumable Upload
- Performing a Browser-Based Upload
-
Object Download
- Object Download Overview
- Performing a Text-Based Download
- Performing a Binary Download
- Performing a File-Based Download
- Performing a Partial Download
- Obtaining Download Progresses
- Performing a Conditioned Download
- Rewriting Response Headers
- Obtaining Customized Metadata
- Downloading an Archive Object
- Object Management
- Temporarily Authorized Access
- Versioning Management
- Lifecycle Management
- Access Logging
- Static Website Hosting
- Tag Management
- Server-Side Encryption
- Troubleshooting
-
FAQs
- How Do I Upload Files Using a Browser that Does Not Support window.File?
- How Can I Set an Object to Be Accessible to Anonymous Users?
- How Do I Obtain the Static Website Access Address of a Bucket?
- How Do I Obtain an Object URL?
- How to Improve the Speed of Uploading Large Files over the Public Network?
- How Do I Suspend a Resumable Upload Task?
- How Do I Interact with OBS Without Exposing My AK and SK?
- How Do I Upload a Base64-Encoded Image?
- What Do I Do If the Resumable Upload API Reports a "400 InvalidPart" Error?
- API Reference
- Change History
-
iOS
- SDK Download Links
- Compatibility
- Quick Start
- Initialization
- Bucket Management
- Object Upload
- Object Download
- Object Management
- Temporarily Authorized Access
- Versioning Management
- Lifecycle Management
- CORS
- Access Logging
- Static Website Hosting
- Tag Management
- Server-Side Encryption
- Troubleshooting
- FAQ
- API Reference
- Change History
-
PHP
- SDK Download Links
- Example Programs
-
Quick Start
- Before You Start
- Setting Up an OBS Environment
- Preparing a Development Environment
- Installing the SDK
- Importing Dependencies
- Initializing an Instance of ObsClient
- Creating a Bucket
- Uploading an Object
- Downloading an Object
- Listing Objects
- Deleting an Object
- General Examples of ObsClient
- Pre-defined Constants
- Initialization
- Bucket Management
- Object Upload
- Object Download
- Object Management
- Temporarily Authorized Access
- Versioning Management
- Lifecycle Management
- CORS
- Access Logging
- Static Website Hosting
- Tag Management
- Server-Side Encryption
- Troubleshooting
- FAQs
- API Reference
- Change History
-
Node.js
- Downloading an SDK (SDK for Node.js)
-
Getting Started (SDK for Node.js)
- Before You Start (SDK for Node.js)
- Setting Up an OBS Environment (SDK for Node.js)
- Preparing a Development Environment (SDK for Node.js)
- Installing the SDK (SDK for Node.js)
- Initializing an Instance of ObsClient (SDK for Node.js)
- Creating a Bucket (SDK for Node.js)
- Uploading an Object (SDK for Node.js)
- Downloading an Object (SDK for Node.js)
- Listing Objects (SDK for Node.js)
- Deleting an Object (SDK for Node.js)
- General Ways to Use ObsClient (SDK for Node.js)
- Initialization (SDK for Node.js)
-
Bucket Management (SDK for Node.js)
- Creating a Bucket (SDK for Node.js)
- Listing Buckets (SDK for Node.js)
- Checking Whether a Bucket Exists (SDK for Node.js)
- Deleting a Bucket (SDK for Node.js)
- Obtaining Bucket Metadata (SDK for Node.js)
- Configuring a Bucket ACL (SDK for Node.js)
- Obtaining a Bucket ACL (SDK for Node.js)
- Configuring a Bucket Policy (SDK for Node.js)
- Obtaining the Policy of a Bucket (SDK for Node.js)
- Deleting a Bucket Policy (SDK for Node.js)
- Obtaining the Region of a Bucket (SDK for Node.js)
- Obtaining Storage Information of a Bucket (SDK for Node.js)
- Configuring a Storage Quota for a Bucket (SDK for Node.js)
- Obtaining the Storage Quota of a Bucket (SDK for Node.js)
- Configuring a Storage Class for a Bucket (SDK for Node.js)
- Obtaining the Storage Class of a Bucket (SDK for Node.js)
-
Object Upload (SDK for Node.js)
- Object Upload Overview (SDK for Node.js)
- Uploading an Object - Text-Based (SDK for Node.js)
- Uploading an Object - Streaming (SDK for Node.js)
- Uploading an Object - File-Based (SDK for Node.js)
- Creating a Folder (SDK for Node.js)
- Configuring Object Metadata (SDK for Node.js)
- Configuring a Lifecycle Rule When Uploading an Object (SDK for Node.js)
- Uploading an Object - Append (SDK for Node.js)
- Uploading an Object - Resumable (SDK for Node.js)
- Uploading an Object - Browser-Based (SDK for Node.js)
-
Object Download (SDK for Node.js)
- Overview (SDK for Node.js)
- Downloading an Object - Text-Based (SDK for Node.js)
- Downloading an Object - Streaming (SDK for Node.js)
- Downloading an Object - File-Based (SDK for Node.js)
- Downloading an Object - Range-Based (SDK for Node.js)
- Downloading an Object - Conditional (SDK for Node.js)
- Rewriting Response Headers (SDK for Node.js)
- Downloading an Archive Object (SDK for Node.js)
- Downloading an Object - Resumable (SDK for Node.js)
-
Object Management (SDK for Node.js)
- Configuring Object Metadata (SDK for Node.js)
- Obtaining Object Metadata (SDK for Node.js)
- Configuring an Object ACL (SDK for Node.js)
- Obtaining the ACL of an Object (SDK for Node.js)
- Listing Objects in a Bucket (SDK for Node.js)
- Deleting an Object (SDK for Node.js)
- Batch Deleting Objects (SDK for Node.js)
- Copying an Object (SDK for Node.js)
-
Multipart Upload (SDK for Node.js)
- Multipart Upload APIs (SDK for Node.js)
- Initiating a Multipart Upload (SDK for Node.js)
- Uploading a Part (SDK for Node.js)
- Assembling Parts (SDK for Node.js)
- Listing Uploaded Parts (SDK for Node.js)
- Listing Multipart Uploads (SDK for Node.js)
- Copying a Part (SDK for Node.js)
- Aborting a Multipart Upload (SDK for Node.js)
- Temporarily Authorized Access (SDK for Node.js)
-
Versioning (SDK for Node.js)
- Versioning Overview (SDK for Node.js)
- Configuring Versioning for a Bucket (SDK for Node.js)
- Viewing the Versioning Status of a Bucket (SDK for Node.js)
- Obtaining an Object Version (SDK for Node.js)
- Copying an Object Version (SDK for Node.js)
- Restoring an Archive Object Version (SDK for Node.js)
- Listing Object Versions in a Bucket (SDK for Node.js)
- Setting an ACL for an Object Version (SDK for Node.js)
- Obtaining the ACL of an Object Version (SDK for Node.js)
- Deleting an Object Version (SDK for Node.js)
- Lifecycle (SDK for Node.js)
- Bucket CORS (SDK for Node.js)
- Logging (SDK for Node.js)
- Static Website Hosting (SDK for Node.js)
- Tagging (SDK for Node.js)
- Server-Side Encryption (SDK for Node.js)
- Troubleshooting (SDK for Node.js)
- FAQs (SDK for Node.js)
-
.NET
- SDK Download Links
- Quick Start
- Initialization
-
Bucket Management
- Creating a Bucket
- Listing Buckets
- Deleting a Bucket
- Identifying Whether a Bucket Exists
- Obtaining Bucket Metadata
- Managing Bucket ACLs
- Management Bucket Policies
- Obtaining a Bucket Location
- Obtaining Storage Information About a Bucket
- Setting or Obtaining a Bucket Quota
- Setting or Obtaining the Storage Class of a Bucket
-
Object Upload
- Object Upload Overview
- Performing a Streaming Upload
- Performing a File-Based Upload
- Performing an Asynchronous Upload
- Obtaining Upload Progress
- Creating a Folder
- Setting Object Properties
- Performing a Multipart Upload
- Configuring Lifecycle Management
- Performing an Appendable Upload
- Performing a Multipart Copy
- Performing a Resumable Upload
-
Object Download
- Object Download Overview
- Performing a Streaming Download
- Performing a Partial Download
- Performing an Asynchronous Download
- Obtaining Download Progress
- Performing a Conditioned Download
- Rewriting Response Headers
- Obtaining Customized Metadata
- Downloading an Archive Object
- Performing a Resumable Download
- Object Management
- Temporarily Authorized Access
- Versioning Management
- Lifecycle Management
- CORS
- Access Logging
- Static Website Hosting
- Tag Management
- Server-Side Encryption
- Troubleshooting
- FAQ
- Change History
-
FAQs
-
OBS Basics
- How Can I Get Started with OBS?
- What Are the Advantages of Object Storage over SAN and NAS Storage?
- Which Types of Data Can Be Stored in OBS?
- How Much Data Can I Store in OBS?
- Does OBS Support Traffic Monitoring?
- Can Folders in OBS Be Used the Same Way as in a File System?
- Where Is Data Stored in OBS?
- How Can I Determine Which Region to Store My Data In?
- Does OBS Support Access over HTTPS?
- Can Other Users Access My Data Stored in OBS?
- Does OBS Support Resumable Transfer?
- Does OBS Support Batch Upload?
- Does OBS Support Batch Download?
- Does OBS Support Batch Deletion of Objects?
- What Are the Factors That Affect Upload and Download Speeds of OBS?
- Why Did Some of My Data Stored on OBS Get Lost?
- Can Deleted Data Be Recovered?
- Will There Be Data Left Over in OBS After I Delete an Object?
- What Can I Do If My Access to the OBS Domain Name Failed Due to a CA Certificate Connection Failure?
- What Are the Differences Between OBS, EVS, and SFS?
- Why Is an Alarm Reported When I Access an OBS URL?
- How Do I Determine Whether I Am Accessing OBS over an Intranet?
- Will My Bucket Performance Be Affected by Other Users' Services?
-
Billing
- How Do I Purchase OBS?
- Why Is OBS Still Unavailable Even Though My Account Is Topped Up and There Are No Outstanding Bills?
- Why Does My Bucket Generate Storage Fees Even Though There Are No Objects in It?
- Why Am I Still Being Billed for Pull Traffic Used by CDN Acceleration When I Already Have a Pull Traffic Package?
- Why Am I Still Being Billed After I Purchased a Resource Package?
- What Is a Standard Storage Package (Multi-AZ) Used For?
- Do I Need to Purchase an Outbound Internet Traffic Package If I Already Have a Pull Traffic Package?
- Why Does My Bucket Generate Traffic When There Are No Objects in It?
- How Are Requests Counted?
- Do I Have to Purchase a Resource Package? Can I Apply a Package to a Specific Bucket?
- Can I Unsubscribe from or Modify a Resource Package?
- Can I Purchase Requests?
- Do Parallel File Systems Support Resource Packages?
- Which Types of Resource Packages Will Reset Their Quota by Month and Which Types Will Not?
- Will the Remaining Package Quota in a Given Month Be Carried over to the Following Month?
- Will My Data Write Be Restricted When My OBS Package Has Been Used Up?
- Why Is There a Charge of $0.01 USD on My OBS Bill?
-
Access Control
- How Can I Control Access to OBS?
- What Are the Differences Between Using an IAM Permission and a Bucket Policy in Access Control?
- What Is the Relationship Between a Bucket Policy and an Object Policy?
- Why Is the Message "Access denied" Still Appearing After OBS System Permissions Were Assigned by IAM?
- Why Does Message "Access denied" Appear After I Was Granted the Read and Write Permissions for a Bucket?
- Why Can't I Access OBS (403 AccessDenied) After Being Granted with the OBS Access Permission?
- How Do I Control Access to Folders in an OBS Bucket?
- How Can I Check Whether My Bucket Policy Is Private, Public Read, or Public Read and Write?
-
Buckets and Objects
- Why Am I Unable to Create a Bucket?
- Why Am I Unable to Upload an Object?
- Why Am I Unable to Download an Object?
- Why Can't I Delete a Bucket?
- Why Can't I Delete an Object?
- What Is the Relationship Between Bucket Storage Classes and Object Storage Classes?
- Can I Rename an Object?
- Can I Modify the Region of a Bucket?
- Can I Edit Objects in OBS Online?
- How Do I Obtain the Access Path to an Object?
- Why Can't I Search for Certain Objects in My Bucket?
- How Do I Preview Objects in OBS in a Browser Online?
- What Do I Do If I Encounter an Error While Trying to Access an Object URL with Full-Width Characters Using Internet Explorer?
- With CDN Acceleration Enabled, Why Are the Objects in My OBS Bucket Directly Downloaded When I Access Them?
- Why Is an Error Reported Even If CORS Has Been Configured?
- How Do I Batch Delete a Large Number of Objects from a Bucket or Empty a Bucket?
- How Do I Change the Enterprise Project Where My Bucket Belongs?
- How Do I Upload Objects Larger Than 5 GB?
- APIs and SDKs
-
Security
- How Is Data Security Ensured in OBS?
- Does OBS Scan My Data for Other Purposes?
- Can Engineers Export My Data from the Background of OBS?
- How Does OBS Protect My Data from Being Stolen?
- Can a Pair of AK and SK Be Replaced When It Is Being Used to Access OBS?
- Can Multiple Users Share One Pair of AK and SK to Access OBS?
- Durability and Availability
- Data Migration and Backup
- Fragment Management
- Versioning
- Tags
- How Do I Use Lifecycle Management?
- How Do I Use Static Website Hosting?
-
User-Defined Domain Name Configuration
- Why Is the Message "NoSuchBucket" Displayed When I Use a User-Defined Domain Name to Access a Bucket That Can Be Accessed by the OBS Domain Name?
- What Is the Relationship Between OBS Bucket Names and Domain Names?
- Why Is the CNAME Resolution Status Unknown?
- Why Can Only the Domain Names I Bought on Huawei Cloud Be Automatically Resolved?
- Monitoring
-
Server-Side Encryption
- How Do I Access or Download an Encrypted Object?
- Why Cannot an Authorized Account or User Upload or Download KMS Encrypted Objects?
- What Technologies Can I Use to Encrypt Data on OBS?
- Will OBS Server-Side Encryption Encrypt My Existing Objects That Are Unencrypted?
- Will I Be Billed for the Encryption Provided by OBS Server-Side Encryption?
- Does OBS SSE-KMS Allow Anonymous Access?
- Change History
-
OBS Basics
Event Notifications
You can configure to receive Simple Message Notification (SMN) notifications when certain events happen in your OBS bucket.
SMN-Enabled Event Notification
Simple Message Notification (SMN) is a reliable and extensible message notification service that can handle a huge number of messages. SMN significantly simplifies system coupling. It can automatically push messages to subscribers through emails and text messages.
OBS uses SMN to provide the event notification function. You can use SMN to send event notifications to specified subscribers to inform them in real time of critical operations (such as upload and deletion) that occur on specified buckets. For example, you can configure an event notification rule to send messages through SMN to the specified email address whenever an upload operation occurs on the specified bucket.
You can configure an event notification rule to filter objects by the object name prefix or suffix. For example, you can add an event notification rule to send notifications whenever an object with the .jpg suffix is uploaded to the specified bucket. You can also add an event notification rule to send notifications whenever an object with the images/ prefix is uploaded to the specified bucket.

Event Types Supported by OBS
OBS can publish events of the following types. You need to specify these event types in the notification settings.
Event Type |
Description |
---|---|
ObjectCreated:* (all upload operations) ObjectCreated:Put (object upload) ObjectCreated:Post (object upload through a web browser) ObjectCreated:Copy (copying objects) ObjectCreated:CompleteMultipartUpload (merging uploaded parts) |
OBS can use APIs such as PUT, POST, and COPY to create objects and configure corresponding event types. You will receive a notification when an object is created using a specific API. In addition, you can use the ObjectCreated:* event type to request all object creation notifications. You will not receive event notifications from failed operations. |
ObjectRemoved:* (all deletion operations) ObjectRemoved:Delete (deleting objects) ObjectRemoved:DeleteMarkerCreated (A deletemarker object is created.) |
By using the ObjectRemoved event types, you can enable notification when an object or a batch of objects are removed from a bucket. You can request notification when an object is deleted or a versioned object is permanently deleted by using the ObjectRemoved:Delete event type. Alternatively, you can request notification when a delete marker is created for a versioned object by using ObjectRemoved:DeleteMarkerCreated. You can also use ObjectRemoved:* to request notification each time an object is deleted. You will not receive event notifications from automatic deletions of lifecycle policies or from failed operations. |
Constraints
- A configuration with no filtering attributes contained matches all prefixes and suffixes by default.
- When there are two suffixes configured, if a given string can end with both suffixes, this configuration is invalid due to suffix overlapping (for example, suffixes jpg and pg). This also works for prefixes.
Destinations Supported by OBS
OBS can send event notification messages to SMN topics. You must grant OBS the permissions to send messages to these destinations. In addition, you need to specify the URN values of these destinations in the notification configuration.
How to Enable Event Notifications
Enabling notifications is a bucket-level operation. OBS stores your event notification configuration to bucket sub-resources in the format of XML. By default, notification is not enabled for any event type. That is, the initial event notification configuration of each bucket is empty.
To enable notifications for events of specific types, you must add the corresponding XML configuration that identifies the event types you want OBS to publish and the destination where you want the notifications to be published.
- In this example, you need to publish event messages to an SMN topic. To set an SMN topic as the notification destination for specific event types, add the TopicConfiguration.
<NotificationConfiguration> <TopicConfiguration> <Id>optional-id-string</Id> <Topic>topic-urn</Topic> <Event>event-type</Event> <Event>event-type</Event> ... </TopicConfiguration> ... </NotificationConfiguration>
To remove all notification configurations from a bucket, set the <NotificationConfiguration> element to null.
Using Object Key Names to Filter Event Notifications
You can configure event notifications based on the prefix and suffix of an object key name. For example, you can set up a configuration so that a notification is published only when objects with a .jpg extension are added to a bucket.
OBS stores the notification configuration as XML. You can use the Filter element in the XML structure to define the rules for notifications to be filtered by the prefix and/or suffix of an object key name. Notification configurations that use the filter cannot define filtering rules with overlapping prefixes, overlapping suffixes, or prefix and suffix overlapping. The following are examples of notification configurations with object key name filtering:
- Example of valid notification configuration with object key name filtering
The following information contains a configuration identifying an SMN topic to which OBS publishes events of the ObjectCreated:Put type. The events will be published each time an object that has an image prefix and a jpg suffix is PUT to a bucket.
<NotificationConfiguration> <TopicConfiguration> <Id>01</Id> <Filter> <Object> <FilterRule> <Name>prefix</Name> <Value>image</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </Object> </Filter> <Topic>urn:smn:southchina:11aa22bb:notification</Topic> <Event>ObjectCreated:Put</Event> </TopicConfiguration> </NotificationConfiguration>
The following notification configuration has multiple non-overlapping prefixes. The configuration defines the following: When objects that have a prefix of images are uploaded to buckets, event notifications will be published to topic-A; when objects that have a prefix of videos are uploaded to buckets, event notifications will be published to topic-B.
<NotificationConfiguration> <TopicConfiguration> <Id>01</Id> <Filter> <Object> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> </Object> </Filter> <Topic>urn:smn:southchina:11aa22bb:topic-A</Topic> <Event>ObjectCreated:Put</Event> </TopicConfiguration> <TopicConfiguration> <Id>02</Id> <Filter> <Object> <FilterRule> <Name>prefix</Name> <Value>videos</Value> </FilterRule> </Object> </Filter> <Topic>urn:smn:southchina:11aa22bb:topic-B</Topic> <Event>ObjectCreated:Put</Event> </TopicConfiguration> </NotificationConfiguration>
The following notification configuration has multiple non-overlapping suffixes. The configuration defines the following: Notifications will be published to topic-A for all .jpg objects PUT to buckets, and notifications will be published to topic-B for all .png objects. The suffixes .png and .jpg are not overlapping even though they have the same last letter.
<NotificationConfiguration> <TopicConfiguration> <Id>01</Id> <Filter> <Object> <FilterRule> <Name>suffix</Name> <Value>.jpg</Value> </FilterRule> </Object> </Filter> <Topic>urn:smn:southchina:11aa22bb:topic-A</Topic> <Event>ObjectCreated:Put</Event> </TopicConfiguration> <TopicConfiguration> <Id>02</Id> <Filter> <Object> <FilterRule> <Name>suffix</Name> <Value>.png</Value> </FilterRule> </Object> </Filter> <Topic>urn:smn:southchina:11aa22bb:topic-B</Topic> <Event>ObjectCreated:Put</Event> </TopicConfiguration> </NotificationConfiguration>
- Examples of notification configuration with invalid prefix/suffix overlapping
In most cases, notification configurations that use the filter cannot define filtering rules with overlapping prefixes, overlapping suffixes, or overlapping combinations of prefixes and suffixes for the same event types. (You can have overlapping prefixes if the suffixes do not overlap.) You can use overlapping object key name filtering rules with different event types. For example, you can create a notification configuration that uses the image prefix for the ObjectCreated:Put event type and the image prefix for the ObjectDeleted:* event type.
A configuration with no filtering attributes contained matches all prefixes and suffixes by default. The following notification configuration is invalid because it contains overlapping prefixes. (The same thing would be true if suffix instead of prefix is used in this example.)
<NotificationConfiguration> <TopicConfiguration> <Topic>urn:smn:southchina:11aa22bb:topic-A</Topic> <Event>ObjectCreated:*</Event> </TopicConfiguration> <TopicConfiguration> <Filter> <Object> <FilterRule> <Name>prefix</Name> <Value>abc</Value> </FilterRule> </Object> </Filter> <Topic>urn:smn:southchina:11aa22bb:topic-B</Topic> <Event>ObjectCreated:*</Event> </TopicConfiguration> </NotificationConfiguration>
The following notification configuration is invalid because it contains overlapping suffixes. Two suffixes are considered overlapping if a given string can end with both suffixes. A string can end with jpg and pg. Therefore, the suffixes are overlapping. (The same is true for prefixes.)
<NotificationConfiguration> <TopicConfiguration> <Filter> <Object> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </Object> </Filter> <Topic>urn:smn:southchina:11aa22bb:topic-A</Topic> <Event>ObjectCreated:*</Event> </TopicConfiguration> <TopicConfiguration> <Filter> <Object> <FilterRule> <Name>suffix</Name> <Value>pg</Value> </FilterRule> </Object> </Filter> <Topic>urn:smn:southchina:11aa22bb:topic-B</Topic> <Event>ObjectCreated:Put</Event> </TopicConfiguration> </NotificationConfiguration>
Event Message Structure
A notification message sent by OBS to publish an event is a JSON message with the following structure.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
{ "Records":[ { "eventVersion":"", //Version number. The current version is 3.0. "eventSource":"", //Message source. The value is fixed to OBS. "eventRegion":"", //Region where the event occurs "eventTime":"", //Time when an event occurs, in the ISO-8601 format, for example, 2020-07-10T09:24:11.418Z "eventName":"", //Name of the event that triggers the notification "userIdentity":{ "ID":"" //Billing ID of the user who triggers the event }, "requestParameters":{ "sourceIPAddress":"" //Source IP address of the request }, "responseElements":{ "x-obs-request-id":"", //ID of the request "x-obs-id-2":"" ///Special characters for locating problems }, "obs":{ "Version":"1.0", "configurationId":"", //Name of the event notification rule in OBS that matches the event "bucket":{ "name":"examplebucket", "ownerIdentity":{ "ID":"" //Account ID of the bucket owner }, "bucket":"" //Bucket name }, "object":{ "key":"", //Object name "eTag":"", //ETag of the object "size": , //Object size "versionId":"null", //Version ID of the object "sequencer":"" //Identifier that defines the event sequence of a specific object } } } ] } |
Note the following:
- You can use the responseElements key-value to trace OBS requests. Both x-obs-request-id and x-obs-id-2 can be used to trace a single request. Their value is the one returned by OBS in the response to the request.
- The obs key-value contains information about the bucket and object involved in the event. Note that the object key name is URL-encoded. For example, TEST/Chinese.jpg is changed to TEST%2F%E4%B8%AD+%E6%96%87%2F.jpg.
NOTICE:
During secondary development, if you use the OBS SDK to download the object, you need to decode the URL-coded object name and then call the API for download. If a web browser is used to access the object, decoding is not required.
- The sequencer key-value determines the sequence of events. Generally, event notifications do not arrive in the order that the events occurred. However, notifications from events for creating objects (PUT) and deleting objects (DELETE) contain a sequencer, which can be used to determine the order of events for a given object key. If you compare the hexadecimal sequencer strings of two event notifications on the same object key, the event notification with the greater sequencer value is the event that occurred later.
NOTICE:
- The sequencer cannot be used to determine the sequence for events on different object keys.
- The event sequence indicated by sequencer is for reference only, which does not work for highly reliable systems
Example message:
- Test message – When you configure an event notification on a bucket, OBS sends the following test message:
{ "Service":"OBS", "Event":"TestEvent", "Time":"1970-01-01T00:00:00.000Z", "Bucket":"examplebucketname", "RequestId":"0002F4BCF6000001563B064B17B2094D", "HostId":"2Zf+b9AmbaBgNQ+YE8XU2j87DZaBNxu4TaMiOCTqpmkC2SA9ouf8TpB2SY5j3i4" }
- Example message when an object is created using the PUT request – The following is an example of a message sent by OBS to publish an ObjectCreated:Put event:
{ "Records":[ { "eventVersion":"3.0", "eventSource":"OBS", "eventTime":"2018-06-26T14:37:05.468Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "ID":"71f3901173514e6988115ea2c26d1999" }, "requestParameters":{ "sourceIPAddress":"104.55.173.69" }, "responseElements":{ "x-obs-request-id":"9006000001643C86D03C300BE8860FA7", "x-obs-id-2":"2+/Ucr6uinCJAbUejWyQ+rhxkuf/K/9uoaXuewIi/SE9j4tU5LwaXTTlD1gvMv2o" }, "obs":{ "Version":"1.0", "configurationId":"ConfigurationId", "bucket":{ "name":"examplebucket", "ownerIdentity":{ "ID":"b4bf1b36d9ca43d984fbcb9491b6fce9" }, "bucket":"examplebucket" }, "object":{ "key":"object0001.txt", "eTag":"3b9680702b9a12733c5490d1b15c7607", "size":538, "versionId":"null", "sequencer":"000000001643C86D06576F5320000000" } } } ] }
NOTE:
Due to Internet issues or constraints on e-mail sending, notifications may sometimes fail to reach HTTP or e-mail endpoints.
How to Use
You can configure SMN notifications using OBS Console or APIs.
Tool |
Reference |
---|---|
OBS Console |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.