Class AwsDiscoveryStrategyFactory

    • Constructor Detail

      • AwsDiscoveryStrategyFactory

        public AwsDiscoveryStrategyFactory()
    • Method Detail

      • newDiscoveryStrategy

        public DiscoveryStrategy newDiscoveryStrategy​(DiscoveryNode discoveryNode,
                                                      ILogger logger,
                                                      java.util.Map<java.lang.String,​java.lang.Comparable> properties)
        Description copied from interface: DiscoveryStrategyFactory
        Instantiates a new instance of the DiscoveryStrategy with the given configuration properties. The provided HazelcastInstance can be used to register instances in a service registry whenever the discovery strategy is started.
        Specified by:
        newDiscoveryStrategy in interface DiscoveryStrategyFactory
        discoveryNode - the current local DiscoveryNode, representing the local connection information if running on a Hazelcast member, otherwise on Hazelcast clients always null
        logger - the logger instance
        properties - the properties parsed from the configuration
        a new instance of the discovery strategy
      • getConfigurationProperties

        public java.util.Collection<PropertyDefinition> getConfigurationProperties()
        Description copied from interface: DiscoveryStrategyFactory
        Returns a set of the expected configuration properties. These properties contain information about the value type of the property, if it is required and a possible validator to automatically test and convert values from the XML configuration.
        Specified by:
        getConfigurationProperties in interface DiscoveryStrategyFactory
        a set of expected configuration properties
      • isAutoDetectionApplicable

        public boolean isAutoDetectionApplicable()
        Checks if Hazelcast is running on an AWS EC2 instance.

        Note that this method returns false for any ECS environment, since currently there is no way to auto-configure Hazelcast network interfaces (required for ECS).

        To check if Hazelcast is running on EC2, we first check that the machine uuid starts with "ec2" or "EC2". There is a small chance that a non-AWS machine has uuid starting with the mentioned prefix. That is why, to be sure, we make an API call to a local, non-routable address Finally, we also check if an IAM Role is attached to the EC2 instance, because without any IAM Role the Hazelcast AWS discovery won't work.

        Specified by:
        isAutoDetectionApplicable in interface DiscoveryStrategyFactory
        true if running on EC2 Instance which has an IAM Role attached
        See Also: