SDK for SAP ABAP を使用した Amazon S3 の例 - AWS SDK コードの例

Doc AWS SDK Examples GitHub リポジトリには、他にも SDK の例があります。 AWS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SDK for SAP ABAP を使用した Amazon S3 の例

次のコード例は、Amazon S3 で AWS SDK for SAP ABAP を使用してアクションを実行し、一般的なシナリオを実装する方法を示しています。

基本 は、重要なオペレーションをサービス内で実行する方法を示すコード例です。

アクションはより大きなプログラムからのコードの抜粋であり、コンテキスト内で実行する必要があります。アクションは個々のサービス機能を呼び出す方法を示していますが、コンテキスト内のアクションは、関連するシナリオで確認できます。

シナリオは、1 つのサービス内から、または他の AWS のサービスと組み合わせて複数の関数を呼び出し、特定のタスクを実行する方法を示すコード例です。

各例には、完全なソースコードへのリンクが含まれており、そこからコードの設定方法と実行方法に関する手順を確認できます。

基本

次のコード例は、以下の操作方法を示しています。

  • バケットを作成し、そこにファイルをアップロードします。

  • バケットからオブジェクトをダウンロードします。

  • バケット内のサブフォルダにオブジェクトをコピーします。

  • バケット内のオブジェクトを一覧表示します。

  • バケットオブジェクトとバケットを削除します。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ). " Create an Amazon Simple Storage Service (Amazon S3) bucket. " TRY. " determine our region from our session DATA(lv_region) = CONV /aws1/s3_bucketlocationcnstrnt( lo_session->get_region( ) ). DATA lo_constraint TYPE REF TO /aws1/cl_s3_createbucketconf. " When in the us-east-1 region, you must not specify a constraint " In all other regions, specify the region as the constraint IF lv_region = 'us-east-1'. CLEAR lo_constraint. ELSE. lo_constraint = NEW /aws1/cl_s3_createbucketconf( lv_region ). ENDIF. lo_s3->createbucket( iv_bucket = iv_bucket_name io_createbucketconfiguration = lo_constraint ). MESSAGE 'S3 bucket created.' TYPE 'I'. CATCH /aws1/cx_s3_bucketalrdyexists. MESSAGE 'Bucket name already exists.' TYPE 'E'. CATCH /aws1/cx_s3_bktalrdyownedbyyou. MESSAGE 'Bucket already exists and is owned by you.' TYPE 'E'. ENDTRY. "Upload an object to an S3 bucket." TRY. "Get contents of file from application server." DATA lv_file_content TYPE xstring. OPEN DATASET iv_key FOR INPUT IN BINARY MODE. READ DATASET iv_key INTO lv_file_content. CLOSE DATASET iv_key. lo_s3->putobject( iv_bucket = iv_bucket_name iv_key = iv_key iv_body = lv_file_content ). MESSAGE 'Object uploaded to S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY. " Get an object from a bucket. " TRY. DATA(lo_result) = lo_s3->getobject( iv_bucket = iv_bucket_name iv_key = iv_key ). DATA(lv_object_data) = lo_result->get_body( ). MESSAGE 'Object retrieved from S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY. " Copy an object to a subfolder in a bucket. " TRY. lo_s3->copyobject( iv_bucket = iv_bucket_name iv_key = |{ iv_copy_to_folder }/{ iv_key }| iv_copysource = |{ iv_bucket_name }/{ iv_key }| ). MESSAGE 'Object copied to a subfolder.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY. " List objects in the bucket. " TRY. DATA(lo_list) = lo_s3->listobjects( iv_bucket = iv_bucket_name ). MESSAGE 'Retrieved list of objects in S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY. DATA text TYPE string VALUE 'Object List - '. DATA lv_object_key TYPE /aws1/s3_objectkey. LOOP AT lo_list->get_contents( ) INTO DATA(lo_object). lv_object_key = lo_object->get_key( ). CONCATENATE lv_object_key ', ' INTO text. ENDLOOP. MESSAGE text TYPE'I'. " Delete the objects in a bucket. " TRY. lo_s3->deleteobject( iv_bucket = iv_bucket_name iv_key = iv_key ). lo_s3->deleteobject( iv_bucket = iv_bucket_name iv_key = |{ iv_copy_to_folder }/{ iv_key }| ). MESSAGE 'Objects deleted from S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY. " Delete the bucket. " TRY. lo_s3->deletebucket( iv_bucket = iv_bucket_name ). MESSAGE 'Deleted S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.

アクション

次のコード例は、CopyObject を使用する方法を示しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. lo_s3->copyobject( iv_bucket = iv_dest_bucket iv_key = iv_dest_object iv_copysource = |{ iv_src_bucket }/{ iv_src_object }| ). MESSAGE 'Object copied to another bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、「AWS SDK for SAP ABAP API リファレンス」の「CopyObject」を参照してください。

次のコード例は、CreateBucket を使用する方法を示しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " determine our region from our session DATA(lv_region) = CONV /aws1/s3_bucketlocationcnstrnt( lo_session->get_region( ) ). DATA lo_constraint TYPE REF TO /aws1/cl_s3_createbucketconf. " When in the us-east-1 region, you must not specify a constraint " In all other regions, specify the region as the constraint IF lv_region = 'us-east-1'. CLEAR lo_constraint. ELSE. lo_constraint = NEW /aws1/cl_s3_createbucketconf( lv_region ). ENDIF. lo_s3->createbucket( iv_bucket = iv_bucket_name io_createbucketconfiguration = lo_constraint ). MESSAGE 'S3 bucket created.' TYPE 'I'. CATCH /aws1/cx_s3_bucketalrdyexists. MESSAGE 'Bucket name already exists.' TYPE 'E'. CATCH /aws1/cx_s3_bktalrdyownedbyyou. MESSAGE 'Bucket already exists and is owned by you.' TYPE 'E'. ENDTRY.
  • API の詳細については、「AWS SDK for SAP ABAP API リファレンス」の「CreateBucket」を参照してください。

次のコード例は、DeleteBucket を使用する方法を示しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. lo_s3->deletebucket( iv_bucket = iv_bucket_name ). MESSAGE 'Deleted S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、「AWS SDK for SAP ABAP API リファレンス」の「DeleteBucket」を参照してください。

次の例は、DeleteBucketCors を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. lo_s3->deletebucketcors( iv_bucket = iv_bucket_name ). MESSAGE 'Bucket CORS configuration deleted.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスDeleteBucketCors」を参照してください。

次の例は、DeleteBucketLifecycle を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. lo_s3->deletebucketlifecycle( iv_bucket = iv_bucket_name ). MESSAGE 'Bucket lifecycle configuration deleted.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスDeleteBucketLifecycle」を参照してください。

次の例は、DeleteBucketPolicy を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. lo_s3->deletebucketpolicy( iv_bucket = iv_bucket_name ). MESSAGE 'Bucket policy deleted.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスDeleteBucketPolicy」を参照してください。

次の例は、DeleteObject を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. lo_s3->deleteobject( iv_bucket = iv_bucket_name iv_key = iv_object_key ). MESSAGE 'Object deleted from S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、「AWS SDK for SAP ABAP API リファレンス」の「DeleteObject」を参照してください。

次の例は、DeleteObjects を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->deleteobjects( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name io_delete = NEW /aws1/cl_s3_delete( it_objects = it_object_keys ) ). MESSAGE 'Objects deleted from S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスDeleteObjects」を参照してください。

次の例は、GetBucketAcl を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->getbucketacl( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name ). MESSAGE 'Retrieved bucket ACL.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスGetBucketAcl」を参照してください。

次の例は、GetBucketCors を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->getbucketcors( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name ). MESSAGE 'Retrieved bucket CORS configuration.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスGetBucketCors」を参照してください。

次の例は、GetBucketLifecycleConfiguration を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->getbucketlifecycleconf( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name ). MESSAGE 'Retrieved bucket lifecycle configuration.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.

次の例は、GetBucketPolicy を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->getbucketpolicy( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name ). DATA(lv_policy) = oo_result->get_policy( ). MESSAGE 'Retrieved bucket policy.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスGetBucketPolicy」を参照してください。

次の例は、GetObject を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->getobject( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name iv_key = iv_object_key ). DATA(lv_object_data) = oo_result->get_body( ). MESSAGE 'Object retrieved from S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、「AWS SDK for SAP ABAP API リファレンス」の「GetObject」を参照してください。

次の例は、GetObjectAcl を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->getobjectacl( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name iv_key = iv_object_key ). MESSAGE 'Retrieved object ACL.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスGetObjectAcl」を参照してください。

次の例は、GetObjectLegalHold を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->getobjectlegalhold( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name iv_key = iv_object_key ). MESSAGE 'Retrieved object legal hold status.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスGetObjectLegalHold」を参照してください。

次の例は、GetObjectLockConfiguration を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->getobjectlockconfiguration( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name ). MESSAGE 'Retrieved object lock configuration.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスGetObjectLockConfiguration」を参照してください。

次の例は、HeadBucket を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->headbucket( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name ). MESSAGE 'Bucket exists and you have access to it.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスHeadBucket」を参照してください。

次の例は、ListObjectVersions を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->listobjectversions( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name iv_prefix = iv_prefix ). MESSAGE 'Retrieved object versions.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスListObjectVersions」を参照してください。

次の例は、ListObjectsV2 を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. oo_result = lo_s3->listobjectsv2( " oo_result is returned for testing purposes. " iv_bucket = iv_bucket_name ). MESSAGE 'Retrieved list of objects in S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、「AWS SDK for SAP ABAP API リファレンス」の「ListObjectsV2」を参照してください。

次の例は、PutBucketAcl を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example: Grant log delivery access to a bucket " iv_grantwrite = 'uri=http://acs.amazonaws.com/groups/s3/LogDelivery' lo_s3->putbucketacl( iv_bucket = iv_bucket_name iv_grantwrite = iv_grantwrite ). MESSAGE 'Bucket ACL updated.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスPutBucketAcl」を参照してください。

次の例は、PutBucketCors を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example: Allow PUT, POST, DELETE methods from http://www.example.com lo_s3->putbucketcors( iv_bucket = iv_bucket_name io_corsconfiguration = NEW /aws1/cl_s3_corsconfiguration( it_corsrules = it_cors_rules ) ). MESSAGE 'Bucket CORS configuration set.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスPutBucketCors」を参照してください。

次の例は、PutBucketLifecycleConfiguration を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example: Expire objects with prefix 'logs/' after 30 days lo_s3->putbucketlifecycleconf( iv_bucket = iv_bucket_name io_lifecycleconfiguration = NEW /aws1/cl_s3_bucketlcconf( it_rules = it_lifecycle_rule ) ). MESSAGE 'Bucket lifecycle configuration set.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.

次の例は、PutBucketPolicy を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example policy JSON string " iv_policy = '{"Version":"2012-10-17", "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::123456789012:user/user"},"Action":["s3:GetObject"],"Resource":["arn:aws:s3:::bucketname/*"]}]}' lo_s3->putbucketpolicy( iv_bucket = iv_bucket_name iv_policy = iv_policy ). MESSAGE 'Bucket policy set.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスPutBucketPolicy」を参照してください。

次の例は、PutBucketVersioning を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example: Enable versioning on a bucket " iv_status = 'Enabled' lo_s3->putbucketversioning( iv_bucket = iv_bucket_name io_versioningconfiguration = NEW /aws1/cl_s3_versioningconf( iv_status = iv_status ) ). MESSAGE 'Bucket versioning enabled.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスPutBucketVersioning」を参照してください。

次の例は、PutObject を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

"Get contents of file from application server." DATA lv_body TYPE xstring. OPEN DATASET iv_file_name FOR INPUT IN BINARY MODE. READ DATASET iv_file_name INTO lv_body. CLOSE DATASET iv_file_name. "Upload/put an object to an S3 bucket." TRY. lo_s3->putobject( iv_bucket = iv_bucket_name iv_key = iv_file_name iv_body = lv_body ). MESSAGE 'Object uploaded to S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、「AWS SDK for SAP ABAP API リファレンス」の「PutObject」を参照してください。

次の例は、PutObjectAcl を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example: Grant read access to an AWS user " iv_grantread = 'emailAddress=user@example.com' lo_s3->putobjectacl( iv_bucket = iv_bucket_name iv_key = iv_object_key iv_grantread = iv_grantread ). MESSAGE 'Object ACL updated.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスの「PutObjectAcl」を参照してください。

次の例は、PutObjectLegalHold を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example: Set legal hold status to ON " iv_status = 'ON' lo_s3->putobjectlegalhold( iv_bucket = iv_bucket_name iv_key = iv_object_key io_legalhold = NEW /aws1/cl_s3_objlocklegalhold( iv_status = iv_status ) ). MESSAGE 'Object legal hold status set.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスPutObjectLegalHold」を参照してください。

次の例は、PutObjectLockConfiguration を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example: Enable object lock with default retention " iv_enabled = 'Enabled' lo_s3->putobjectlockconfiguration( iv_bucket = iv_bucket_name io_objectlockconfiguration = NEW /aws1/cl_s3_objectlockconf( iv_objectlockenabled = iv_enabled ) ). MESSAGE 'Object lock configuration set.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスの「PutObjectLockConfiguration」を参照してください。

次の例は、PutObjectRetention を使用する方法を説明しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

TRY. " Example: Set retention mode to GOVERNANCE for 30 days " iv_mode = 'GOVERNANCE' " iv_retain_date should be a timestamp in the future lo_s3->putobjectretention( iv_bucket = iv_bucket_name iv_key = iv_object_key io_retention = NEW /aws1/cl_s3_objectlockret( iv_mode = iv_mode iv_retainuntildate = iv_retain_date ) iv_bypassgovernanceretention = abap_true ). MESSAGE 'Object retention set.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY.
  • API の詳細については、 AWS SDK for SAP ABAP API リファレンスの「PutObjectRetention」を参照してください。

シナリオ

次のコード例は、Amazon S3 の署名付き URL を作成し、オブジェクトをアップロードする方法を示しています。

SDK for SAP ABAP
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

署名付きリクエストを作成してS3 オブジェクトを取得します。

" iv_bucket_name is the bucket name " iv_key is the object name like "myfile.txt" DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ). DATA(lo_s3) = /aws1/cl_s3_factory=>create( lo_session ). "Upload a nice Hello World file to an S3 bucket." TRY. DATA(lv_contents) = cl_abap_codepage=>convert_to( 'Hello, World' ). lo_s3->putobject( iv_bucket = iv_bucket_name iv_key = iv_key iv_body = lv_contents iv_contenttype = 'text/plain' ). MESSAGE 'Object uploaded to S3 bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. ENDTRY. " now generate a presigned URL with a 600-second expiration DATA(lo_presigner) = lo_s3->get_presigner( iv_expires_sec = 600 ). " the presigner getobject() method has the same signature as " lo_s3->getobject(), but it doesn't actually make the call. " to the service. It just prepares a presigned URL for a future call DATA(lo_presigned_req) = lo_presigner->getobject( iv_bucket = iv_bucket_name iv_key = iv_key ). " You can provide this URL to a web page, user, email etc so they " can retrieve the file. The URL will expire in 10 minutes. ov_url = lo_presigned_req->get_url( ).