Class S3_PING


public class S3_PING extends FILE_PING
Discovery protocol using Amazon's S3 storage. The S3 access code reuses the example shipped by Amazon. This protocol is unsupported and experimental !
Author:
Bela Ban
  • Field Details

    • access_key

      protected String access_key
    • secret_access_key

      protected String secret_access_key
    • prefix

      protected String prefix
    • pre_signed_put_url

      protected String pre_signed_put_url
    • pre_signed_delete_url

      protected String pre_signed_delete_url
    • conn

      protected org.jgroups.protocols.S3_PING.AWSAuthConnection conn
  • Constructor Details

    • S3_PING

      public S3_PING()
  • Method Details

    • init

      public void init() throws Exception
      Description copied from class: Protocol
      Called after instance has been created (null constructor) and before protocol is started. Properties are already set. Other protocols are not yet connected and events cannot yet be sent.
      Overrides:
      init in class FILE_PING
      Throws:
      Exception - Thrown if protocol cannot be initialized successfully. This will cause the ProtocolStack to fail, so the channel constructor will throw an exception
    • createRootDir

      protected void createRootDir()
      Overrides:
      createRootDir in class FILE_PING
    • readAll

      protected List<PingData> readAll(String clustername)
      Description copied from class: FILE_PING
      Reads all information from the given directory under clustername
      Overrides:
      readAll in class FILE_PING
      Returns:
    • writeToFile

      protected void writeToFile(PingData data, String clustername)
      Overrides:
      writeToFile in class FILE_PING
    • remove

      protected void remove(String clustername, Address addr)
      Overrides:
      remove in class FILE_PING
    • validateProperties

      protected void validateProperties()
    • usingPreSignedUrls

      protected boolean usingPreSignedUrls()
    • generatePreSignedUrl

      public static String generatePreSignedUrl(String awsAccessKey, String awsSecretAccessKey, String method, String bucket, String key, long expirationDate)
      Use this helper method to generate pre-signed S3 urls for use with S3_PING. You'll need to generate urls for both the put and delete http methods. Example: Your AWS Access Key is "abcd". Your AWS Secret Access Key is "efgh". You want this node to write its information to "/S3_PING/DemoCluster/node1". So, your bucket is "S3_PING" and your key is "DemoCluster/node1". You want this to expire one year from now, or (System.currentTimeMillis / 1000) + (60 * 60 * 24 * 365) Let's assume that this equals 1316286684 Here's how to generate the value for the pre_signed_put_url property: String putUrl = S3_PING.generatePreSignedUrl("abcd", "efgh", "put", "S3_Ping", "DemoCluster/node1", 1316286684); Here's how to generate the value for the pre_signed_delete_url property: String deleteUrl = S3_PING.generatePreSignedUrl("abcd", "efgh", "delete", "S3_Ping", "DemoCluster/node1", 1316286684);
      Parameters:
      awsAccessKey - Your AWS Access Key
      awsSecretAccessKey - Your AWS Secret Access Key
      method - The HTTP method - use "put" or "delete" for use with S3_PING
      bucket - The S3 bucket you want to write to
      key - The key within the bucket to write to
      expirationDate - The date this pre-signed url should expire, in seconds since epoch
      Returns:
      The pre-signed url to be used in pre_signed_put_url or pre_signed_delete_url properties