/AWS1/IF_S3=>LISTOBJECTVERSIONS()¶
About ListObjectVersions¶
This operation is not supported for directory buckets.
Returns metadata about all versions of the objects in a bucket. You can also use request parameters as selection criteria to return metadata about a subset of all the object versions.
To use this operation, you must have permission to perform the s3:ListBucketVersions
action. Be aware of the name difference.
A 200 OK response can contain valid or invalid XML. Make sure to design your
application to parse the contents of the response and handle it appropriately.
To use this operation, you must have READ access to the bucket.
The following operations are related to ListObjectVersions:
You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.
Method Signature¶
METHODS /AWS1/IF_S3~LISTOBJECTVERSIONS
IMPORTING
!IV_BUCKET TYPE /AWS1/S3_BUCKETNAME OPTIONAL
!IV_DELIMITER TYPE /AWS1/S3_DELIMITER OPTIONAL
!IV_ENCODINGTYPE TYPE /AWS1/S3_ENCODINGTYPE OPTIONAL
!IV_KEYMARKER TYPE /AWS1/S3_KEYMARKER OPTIONAL
!IV_MAXKEYS TYPE /AWS1/S3_MAXKEYS OPTIONAL
!IV_PREFIX TYPE /AWS1/S3_PREFIX OPTIONAL
!IV_VERSIONIDMARKER TYPE /AWS1/S3_VERSIONIDMARKER OPTIONAL
!IV_EXPECTEDBUCKETOWNER TYPE /AWS1/S3_ACCOUNTID OPTIONAL
!IV_REQUESTPAYER TYPE /AWS1/S3_REQUESTPAYER OPTIONAL
!IT_OPTIONALOBJECTATTRIBUTES TYPE /AWS1/CL_S3_OPTIONALOBJATTRS00=>TT_OPTIONALOBJECTATTRSLIST OPTIONAL
RETURNING
VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_s3_listobjvrssoutput
RAISING
/AWS1/CX_S3_CLIENTEXC
/AWS1/CX_S3_SERVEREXC
/AWS1/CX_RT_TECHNICAL_GENERIC
/AWS1/CX_RT_SERVICE_GENERIC.
IMPORTING¶
Required arguments:¶
iv_bucket TYPE /AWS1/S3_BUCKETNAME /AWS1/S3_BUCKETNAME¶
The bucket name that contains the objects.
Optional arguments:¶
iv_delimiter TYPE /AWS1/S3_DELIMITER /AWS1/S3_DELIMITER¶
A delimiter is a character that you specify to group keys. All keys that contain the same string between the
prefixand the first occurrence of the delimiter are grouped under a single result element inCommonPrefixes. These groups are counted as one result against themax-keyslimitation. These keys are not returned elsewhere in the response.
CommonPrefixesis filtered out from results if it is not lexicographically greater than the key-marker.
iv_encodingtype TYPE /AWS1/S3_ENCODINGTYPE /AWS1/S3_ENCODINGTYPE¶
Encoding type used by Amazon S3 to encode the object keys in the response. Responses are encoded only in UTF-8. An object key can contain any Unicode character. However, the XML 1.0 parser can't parse certain characters, such as characters with an ASCII value from 0 to 10. For characters that aren't supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the response. For more information about characters to avoid in object key names, see Object key naming guidelines.
When using the URL encoding type, non-ASCII characters that are used in an object's key name will be percent-encoded according to UTF-8 code values. For example, the object
test_file(3).pngwill appear astest_file%283%29.png.
iv_keymarker TYPE /AWS1/S3_KEYMARKER /AWS1/S3_KEYMARKER¶
Specifies the key to start with when listing objects in a bucket.
iv_maxkeys TYPE /AWS1/S3_MAXKEYS /AWS1/S3_MAXKEYS¶
Sets the maximum number of keys returned in the response. By default, the action returns up to 1,000 key names. The response might contain fewer keys but will never contain more. If additional keys satisfy the search criteria, but were not returned because
max-keyswas exceeded, the response contains. To return the additional keys, seetrue key-markerandversion-id-marker.
iv_prefix TYPE /AWS1/S3_PREFIX /AWS1/S3_PREFIX¶
Use this parameter to select only those keys that begin with the specified prefix. You can use prefixes to separate a bucket into different groupings of keys. (You can think of using
prefixto make groups in the same way that you'd use a folder in a file system.) You can useprefixwithdelimiterto roll up numerous objects into a single result underCommonPrefixes.
iv_versionidmarker TYPE /AWS1/S3_VERSIONIDMARKER /AWS1/S3_VERSIONIDMARKER¶
Specifies the object version you want to start listing from.
iv_expectedbucketowner TYPE /AWS1/S3_ACCOUNTID /AWS1/S3_ACCOUNTID¶
The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code
403 Forbidden(access denied).
iv_requestpayer TYPE /AWS1/S3_REQUESTPAYER /AWS1/S3_REQUESTPAYER¶
Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for the corresponding charges. For information about downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays Buckets in the Amazon S3 User Guide.
This functionality is not supported for directory buckets.
it_optionalobjectattributes TYPE /AWS1/CL_S3_OPTIONALOBJATTRS00=>TT_OPTIONALOBJECTATTRSLIST TT_OPTIONALOBJECTATTRSLIST¶
Specifies the optional fields that you want returned in the response. Fields that you do not specify are not returned.
RETURNING¶
oo_output TYPE REF TO /aws1/cl_s3_listobjvrssoutput /AWS1/CL_S3_LISTOBJVRSSOUTPUT¶
Examples¶
Syntax Example¶
This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.
DATA(lo_result) = lo_client->listobjectversions(
it_optionalobjectattributes = VALUE /aws1/cl_s3_optionalobjattrs00=>tt_optionalobjectattrslist(
( new /aws1/cl_s3_optionalobjattrs00( |string| ) )
)
iv_bucket = |string|
iv_delimiter = |string|
iv_encodingtype = |string|
iv_expectedbucketowner = |string|
iv_keymarker = |string|
iv_maxkeys = 123
iv_prefix = |string|
iv_requestpayer = |string|
iv_versionidmarker = |string|
).
This is an example of reading all possible response values
lo_result = lo_result.
IF lo_result IS NOT INITIAL.
lv_istruncated = lo_result->get_istruncated( ).
lv_keymarker = lo_result->get_keymarker( ).
lv_versionidmarker = lo_result->get_versionidmarker( ).
lv_nextkeymarker = lo_result->get_nextkeymarker( ).
lv_nextversionidmarker = lo_result->get_nextversionidmarker( ).
LOOP AT lo_result->get_versions( ) into lo_row.
lo_row_1 = lo_row.
IF lo_row_1 IS NOT INITIAL.
lv_etag = lo_row_1->get_etag( ).
LOOP AT lo_row_1->get_checksumalgorithm( ) into lo_row_2.
lo_row_3 = lo_row_2.
IF lo_row_3 IS NOT INITIAL.
lv_checksumalgorithm = lo_row_3->get_value( ).
ENDIF.
ENDLOOP.
lv_checksumtype = lo_row_1->get_checksumtype( ).
lv_size = lo_row_1->get_size( ).
lv_objectversionstoragecla = lo_row_1->get_storageclass( ).
lv_objectkey = lo_row_1->get_key( ).
lv_objectversionid = lo_row_1->get_versionid( ).
lv_islatest = lo_row_1->get_islatest( ).
lv_lastmodified = lo_row_1->get_lastmodified( ).
lo_owner = lo_row_1->get_owner( ).
IF lo_owner IS NOT INITIAL.
lv_displayname = lo_owner->get_displayname( ).
lv_id = lo_owner->get_id( ).
ENDIF.
lo_restorestatus = lo_row_1->get_restorestatus( ).
IF lo_restorestatus IS NOT INITIAL.
lv_isrestoreinprogress = lo_restorestatus->get_isrestoreinprogress( ).
lv_restoreexpirydate = lo_restorestatus->get_restoreexpirydate( ).
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT lo_result->get_deletemarkers( ) into lo_row_4.
lo_row_5 = lo_row_4.
IF lo_row_5 IS NOT INITIAL.
lo_owner = lo_row_5->get_owner( ).
IF lo_owner IS NOT INITIAL.
lv_displayname = lo_owner->get_displayname( ).
lv_id = lo_owner->get_id( ).
ENDIF.
lv_objectkey = lo_row_5->get_key( ).
lv_objectversionid = lo_row_5->get_versionid( ).
lv_islatest = lo_row_5->get_islatest( ).
lv_lastmodified = lo_row_5->get_lastmodified( ).
ENDIF.
ENDLOOP.
lv_bucketname = lo_result->get_name( ).
lv_prefix = lo_result->get_prefix( ).
lv_delimiter = lo_result->get_delimiter( ).
lv_maxkeys = lo_result->get_maxkeys( ).
LOOP AT lo_result->get_commonprefixes( ) into lo_row_6.
lo_row_7 = lo_row_6.
IF lo_row_7 IS NOT INITIAL.
lv_prefix = lo_row_7->get_prefix( ).
ENDIF.
ENDLOOP.
lv_encodingtype = lo_result->get_encodingtype( ).
lv_requestcharged = lo_result->get_requestcharged( ).
ENDIF.
To list object versions¶
The following example returns versions of an object with specific key name prefix.
DATA(lo_result) = lo_client->listobjectversions(
iv_bucket = |examplebucket|
iv_prefix = |HappyFace.jpg|
).