code: def describe_alarms(self, action_prefix=None, alarm_name_prefix=None,
                          alarm_names=None, max_records=None, state_value=None,
                          next_token=None):
          
          params = {}
          if action_prefix:
              params['ActionPrefix'] = action_prefix
          if alarm_name_prefix:
              params['AlarmNamePrefix'] = alarm_name_prefix
          elif alarm_names:
              self.build_list_params(params, alarm_names, 'AlarmNames.member.%s')
          if max_records:
              params['MaxRecords'] = max_records
          if next_token:
              params['NextToken'] = next_token
          if state_value:
              params['StateValue'] = state_value
          return self.get_list('DescribeAlarms', params,
                               [('MetricAlarms', MetricAlarms)])[0]
docs: Retrieves alarms with the specified names. If no name is specified, all
          alarms for the user are returned. Alarms can be retrieved by using only
          a prefix for the alarm name, the alarm state, or a prefix for any
          action.
  
          :type action_prefix: string
          :param action_name: The action name prefix.
  
          :type alarm_name_prefix: string
          :param alarm_name_prefix: The alarm name prefix. AlarmNames cannot
                                    be specified if this parameter is specified.
  
          :type alarm_names: list
          :param alarm_names: A list of alarm names to retrieve information for.
  
          :type max_records: int
          :param max_records: The maximum number of alarm descriptions
                              to retrieve.
  
          :type state_value: string
          :param state_value: The state value to be used in matching alarms.
  
          :type next_token: string
          :param next_token: The token returned by a previous call to
                             indicate that there is more data.
  
          :rtype list