Python AWS S3: Add a Set of Tags to an S3 Object

Back to Index

Adds a set of tags to an existing S3 object. This example adds tags to the object named "starfish.jpg" located in the bucket "chilkat100".

Documentation: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUTtagging.html

CURL Command

curl -X PUT https://chilkat100.s3.amazonaws.com/starfish.jpg?tagging \
  -d '<Tagging>
  <TagSet>
     <Tag>
       <Key>animal</Key>
       <Value>starfish</Value>
     </Tag>
  </TagSet>
</Tagging>'

Python Example

import sys
import chilkat

rest = chilkat.CkRest()

authAws = chilkat.CkAuthAws()
authAws.put_AccessKey("AWS_ACCESS_KEY")
authAws.put_SecretKey("AWS_SECRET_KEY")
authAws.put_Region("us-east-1")
authAws.put_ServiceName("s3")
rest.SetAuthAws(authAws)

#  URL: https://chilkat100.s3.amazonaws.com/starfish.jpg?tagging
bTls = True
port = 443
bAutoReconnect = True
success = rest.Connect("chilkat100.s3.amazonaws.com",port,bTls,bAutoReconnect)
if (success != True):
    print("ConnectFailReason: " + str(rest.get_ConnectFailReason()))
    print(rest.lastErrorText())
    sys.exit()

#  See the Online Tool for Generating XML Creation Code
xml = chilkat.CkXml()
xml.put_Tag("Tagging")
xml.UpdateChildContent("TagSet|Tag|Key","animal")
xml.UpdateChildContent("TagSet|Tag|Value","starfish")

sbRequestBody = chilkat.CkStringBuilder()
xml.GetXmlSb(sbRequestBody)
sbResponseBody = chilkat.CkStringBuilder()
success = rest.FullRequestSb("PUT","/starfish.jpg?tagging",sbRequestBody,sbResponseBody)
if (success != True):
    print(rest.lastErrorText())
    sys.exit()

respStatusCode = rest.get_ResponseStatusCode()
if (respStatusCode >= 400):
    print("Response Status Code = " + str(respStatusCode))
    print("Response Header:")
    print(rest.responseHeader())
    print("Response Body:")
    print(sbResponseBody.getAsString())
    sys.exit()