code: def get_variables(self, variables=None):
          
          # Global policy variable expansion, we have to carry forward on
          # various filter/action local vocabularies. Where possible defer
          # by using a format string.
          #
          # See https://github.com/capitalone/cloud-custodian/issues/2330
          if not variables:
              variables = {}
  
          if 'mode' in self.data:
              if 'role' in self.data['mode'] and not self.data['mode']['role'].startswith("arn:aws"):
                  self.data['mode']['role'] = "arn:aws:iam::%s:role/%s" % \
                                              (self.options.account_id, self.data['mode']['role'])
  
          variables.update({
              # standard runtime variables for interpolation
              'account': '{account}',
              'account_id': self.options.account_id,
              'region': self.options.region,
              # non-standard runtime variables from local filter/action vocabularies
              #
              # notify action
              'policy': self.data,
              'event': '{event}',
              # mark for op action
              'op': '{op}',
              'action_date': '{action_date}',
              # tag action pyformat-date handling
              'now': utils.FormatDate(datetime.utcnow()),
              # account increase limit action
              'service': '{service}',
              # s3 set logging action :-( see if we can revisit this one.
              'bucket_region': '{bucket_region}',
              'bucket_name': '{bucket_name}',
              'source_bucket_name': '{source_bucket_name}',
              'target_bucket_name': '{target_bucket_name}',
              'target_prefix': '{target_prefix}',
              'LoadBalancerName': '{LoadBalancerName}'
          })
          return variables
docs: Get runtime variables for policy interpolation.
  
          Runtime variables are merged with the passed in variables
          if any.