code: private void addCloudTrailLogsAndMessageAttributes(Message sqsMessage, List<CloudTrailLog> cloudTrailLogs, JsonNode messageNode) throws IOException {
          SourceType sourceType = SourceType.Other;
  
          String bucketName = messageNode.get(S3_BUCKET_NAME).textValue();
          List<String> objectKeys = mapper.readValue(messageNode.get(S3_OBJECT_KEY).traverse(), new TypeReference<List<String>>() {});
  
          for (String objectKey: objectKeys) {
              SourceType currSourceType = sourceIdentifier.identify(objectKey);
              if (currSourceType == SourceType.CloudTrailLog) {
                  cloudTrailLogs.add(new CloudTrailLog(bucketName, objectKey));
                  sourceType = currSourceType;
                  LibraryUtils.setMessageAccountId(sqsMessage, objectKey);
              }
          }
  
          sqsMessage.addAttributesEntry(SourceAttributeKeys.SOURCE_TYPE.getAttributeKey(), sourceType.name());
      }
docs: As long as there is at least one CloudTrail log object:
  <p>
  <li>Add the CloudTrail log object key to the list.</li>
  <li>Add <code>accountId</code> extracted from log object key to <code>sqsMessage</code>.</li>
  <li>Add {@link SourceType#CloudTrailLog} to the <code>sqsMessage</code>.</li>
  </p>
  
  If there is no CloudTrail log object and it is a valid CloudTrail message, CPL adds only {@link SourceType#Other}
  to the <code>sqsMessage</code>.