Initializing help system before first use

Setting tags on an object in an S3 bucket


Description: Demonstrates uploading data to an object in an S3 bucket and then setting tags on that object.
File(s): settagging.mos


settagging.mos
(!*******************************************************
  * Mosel S3 Integration Examples                       *
  * =============================                       *
  *                                                     *
  * file settagging.mos                                 *
  * ```````````````````                                 *
  * Example of uploading a file to an S3 bucket and     *
  * then setting some tags on it.                       *
  *                                                     *
  * You could use tags to indicate a file format,       *
  * to store processing instructions, or any meta-data  *
  * that you want to record against the remote object.  *
  *                                                     *
  * Note: this must either be run on a cloud component  *
  * (e.g. Xpress Workbench on DMP), or the user must    *
  * enter their own S3 bucket URL and access            *
  * credentials where indicated below.                  *
  *                                                     *
  * (c) 2017 Fair Isaac Corporation                     *
  *     author: James Farmer, 2017                      *
  *******************************************************!)
model S3SetTaggingExample
 uses "s3"

 parameters
  ! Set to 'true' when running this model within DMP,
  ! 'false' when on-premise
  ON_CLOUD=true
  
  ! On-premise, user must specify their own S3 credentials
  ! Fill in yours in the lines below
  S3_BUCKET_URL = ''
  S3_REGION = ''
  S3_ACCESS_KEY_ID = ''
  S3_SECRET_KEY = ''
  S3_SESSION_TOKEN = ''  ! Optional
 end-parameters

 public declarations
  DATA_TO_UPLOAD = "Hello I should have tags"
 end-declarations

 declarations
  LOCAL_FILE="mmsystem.text:DATA_TO_UPLOAD"   ! Upload directly from a string object, to save us the trouble of creating a local file
  OBJECT_KEY="MyTaggedFile.txt"
  mybucket: s3bucket
 end-declarations


 if ON_CLOUD then
  ! On the cloud, use the DMP 'solutiondata' bucket
  s3init( mybucket, S3_DMP_SOLUTIONDATA )
  if s3status(mybucket)<>S3_OK then
   writeln("Error initializing S3 folder: ", s3getlasterror(mybucket))
   exit(1)
  end-if
 
 else
  ! On-premise, user must specify their own S3 credentials
  ! Fill in yours in the lines below
  mybucket.url := S3_BUCKET_URL
  mybucket.region := S3_REGION
  mybucket.accesskeyid := S3_ACCESS_KEY_ID
  mybucket.secretkey := S3_SECRET_KEY
  mybucket.sessiontoken := S3_SESSION_TOKEN
 end-if
 
 ! Upload local file to remote object
 writeln( "Uploading to ",OBJECT_KEY," from local file ",LOCAL_FILE )
 s3putobject( mybucket, OBJECT_KEY, LOCAL_FILE )

 ! Check for errors
 if s3status(mybucket)<>S3_OK then
  writeln("Error returned by S3 service: ", s3getlasterror(mybucket))
  exit(1)
 end-if
 
 writeln( "Upload successful" )
 
 ! Now set the tags applied to this object
 writeln( "Applying tags type=example and author=JFarmer to the object ",OBJECT_KEY )
 s3setobjecttagging( mybucket, OBJECT_KEY, [ s3newtag("type","example"), s3newtag("author","JFarmer") ] )
 
 ! Check for errors
 if s3status(mybucket)<>S3_OK then
  writeln("Error returned by S3 service: ", s3getlasterror(mybucket))
  exit(1)
 end-if
 
 writeln( "Tags applied successfully" )
 
end-model

© 2001-2020 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.