Requirements for Integration via REST API ----------------------------------------- .. include:: /includes/integration-requirements-part1.inc Preparing the Environment ~~~~~~~~~~~~~~~~~~~~~~~~~ Examples in this chapter use cURL for authentication as well as ``GET``, ``PUT``, ``POST``, and ``DELETE`` requests run in Bash. To make sending requests easier, you can create the following script ``~/.s3_environment``, replacing ``s3_key`` with ``S3AcessKeyId`` and ``s3_secret`` with ``S3SecretAccessKey`` of a system user: :: # S3 login variables. s3_key="a14040e0b2ef8b28FZZ8" s3_secret="dbwTnQTW602aAAdq8DQVFzB6yrTCFTNiGB8C8RFA" # Sign S3 requests and run curl. function s3_curl() { # Parse command line. [ -z "${2}" ] && { echo "Usage: ${FUNCNAME[0]} " return 1 } # Prepare a signature. s3_url="${2%/*}" s3_host="${s3_url##*://}" s3_query="${2##*/}" s3_date="$(date -R)" # Generate a signature. s3_signature="$(echo -en "${1}\n\n\n${s3_date}\n/${s3_query%%&*}" |\ openssl sha1 -hmac ${s3_secret} -binary | base64)" # Make the request. curl -H "Host: ${s3_host}" \ -H "Accept: */*" \ -H "Date: ${s3_date}" \ -H "Authorization: AWS ${s3_key}:${s3_signature}" \ -X "${1}" \ "${s3_url}/${s3_query}" } Load the script into your default environment to make the ``s3_curl`` function available. :: # source ~/.s3_environment Once the script is loaded, you can make S3 requests using ``s3_curl``. Enabling Statistics ~~~~~~~~~~~~~~~~~~~ You need to have statistics collection enabled on your S3 gateway. The S3 gateway will save the statistics as regular storage objects. On each S3 storage node, create a file ``/var/lib/ostor/local/gw.conf`` with the following contents: :: # Enable usage statistics collection. S3_GW_COLLECT_STAT=1 Restart the S3 storage service to apply the configuration changes. Run the following command on all S3 storage nodes: :: # systemctl restart ostor-agentd.service