Class Instance


  • public class Instance
    extends com.pulumi.resources.CustomResource
    This resource allows you to create and manage a CloudAMQP instance running either [**RabbitMQ**](https://www.rabbitmq.com/) or [**LavinMQ**](https://lavinmq.com/) and can be deployed to multiple cloud platforms provider and regions, see instance regions for more information. Once the instance is created it will be assigned a unique identifier. All other resources and data sources created for this instance needs to reference this unique instance identifier. Pricing is available at [cloudamqp.com](https://www.cloudamqp.com/plans.html). ## Example Usage <details> <summary> <b> <i>Basic example of shared and dedicated instances</i> </b> </summary> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.cloudamqp.Instance; import com.pulumi.cloudamqp.InstanceArgs; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var lemurInstance = new Instance("lemurInstance", InstanceArgs.builder() .plan("lemur") .region("amazon-web-services::us-west-1") .tags("rabbitmq") .build()); var lemmingInstance = new Instance("lemmingInstance", InstanceArgs.builder() .plan("lemming") .region("amazon-web-services::us-west-1") .tags("lavinmq") .build()); var instance = new Instance("instance", InstanceArgs.builder() .plan("bunny-1") .region("amazon-web-services::us-west-1") .tags("terraform") .build()); } } ``` </details> <details> <summary> <b> <i>Dedicated instance using attribute vpc_subnet to create VPC, pre v1.16.0</i> </b> </summary> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.cloudamqp.Instance; import com.pulumi.cloudamqp.InstanceArgs; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var instance = new Instance("instance", InstanceArgs.builder() .plan("bunny-1") .region("amazon-web-services::us-west-1") .tags("terraform") .vpcSubnet("10.56.72.0/24") .build()); } } ``` </details> <details> <summary> <b> <i>Dedicated instance using attribute vpc_subnet to create VPC and then import managed VPC, post v1.16.0 (Managed VPC)</i> </b> </summary> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.cloudamqp.Instance; import com.pulumi.cloudamqp.InstanceArgs; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var instance01 = new Instance("instance01", InstanceArgs.builder() .plan("bunny-1") .region("amazon-web-services::us-west-1") .tags("terraform") .vpcSubnet("10.56.72.0/24") .build()); } } ``` Once the instance and the VPC are created, the VPC can be imported as managed VPC and added to the configuration file. Set attribute `vpc_id` to the managed VPC identifier. To keep the managed VPC when deleting the instance, set attribute `keep_associated_vpc` to true. For more information see guide Managed VPC. ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.cloudamqp.Vpc; import com.pulumi.cloudamqp.VpcArgs; import com.pulumi.cloudamqp.Instance; import com.pulumi.cloudamqp.InstanceArgs; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var vpc = new Vpc("vpc", VpcArgs.builder() .region("amazon-web-services::us-east-1") .subnet("10.56.72.0/24") .tags() .build()); var instance01 = new Instance("instance01", InstanceArgs.builder() .plan("bunny-1") .region("amazon-web-services::us-west-1") .tags("terraform") .vpcId(vpc.id()) .keepAssociatedVpc(true) .build()); } } ``` </details> <details> <summary> <b> <i>Dedicated instances and managed VPC, post v1.16.0 (Managed VPC)</i> </b> </summary> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.cloudamqp.Vpc; import com.pulumi.cloudamqp.VpcArgs; import com.pulumi.cloudamqp.Instance; import com.pulumi.cloudamqp.InstanceArgs; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var vpc = new Vpc("vpc", VpcArgs.builder() .region("amazon-web-services::us-east-1") .subnet("10.56.72.0/24") .tags() .build()); var instance01 = new Instance("instance01", InstanceArgs.builder() .plan("bunny-1") .region("amazon-web-services::us-west-1") .tags("terraform") .vpcId(vpc.id()) .keepAssociatedVpc(true) .build()); var instance02 = new Instance("instance02", InstanceArgs.builder() .plan("bunny-1") .region("amazon-web-services::us-west-1") .tags("terraform") .vpcId(vpc.id()) .keepAssociatedVpc(true) .build()); } } ``` Set attribute `keep_associated_vpc` to true, will keep managed VPC when deleting the instances. </details> ## Upgrade and downgrade It's possible to upgrade or downgrade your subscription plan, this will either increase or decrease the underlying resource used for by the CloudAMQP instance. To do this, change the argument `plan` in the configuration and apply the changes. See available plans. <details> <summary> <b> <i>Upgrade the subscription plan</i> </b> </summary> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.cloudamqp.Instance; import com.pulumi.cloudamqp.InstanceArgs; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var instance = new Instance("instance", InstanceArgs.builder() .plan("bunny-1") .region("amazon-web-services::us-west-1") .tags("terraform") .build()); } } ``` </details> <details> <summary> <b> <i>Downgrade number of nodes from 3 to 1</i> </b> </summary> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.cloudamqp.Instance; import com.pulumi.cloudamqp.InstanceArgs; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var instance = new Instance("instance", InstanceArgs.builder() .plan("bunny-1") .region("amazon-web-services::us-west-1") .tags("terraform") .build()); } } ``` </details> ## Copy settings to a new dedicated instance With copy settings it's possible to create a new dedicated instance with settings such as alarms, config, etc. from another dedicated instance. This can be done by adding the `copy_settings` block to this resource and populate `subscription_id` with a CloudAMQP instance identifier from another already existing instance. Then add the settings to be copied over to the new dedicated instance. Settings that can be copied [alarms, config, definitions, firewall, logs, metrics, plugins] > `rmq_version` argument is required when doing this action. Must match the RabbitMQ version of the dedicated instance to be copied from. <details> <summary> <b> <i>Copy settings from a dedicated instance to a new dedicated instance</i> </b> </summary> ```java package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.cloudamqp.Instance; import com.pulumi.cloudamqp.InstanceArgs; import com.pulumi.cloudamqp.inputs.InstanceCopySettingArgs; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var instance02 = new Instance("instance02", InstanceArgs.builder() .plan("squirrel-1") .region("amazon-web-services::us-west-1") .rmqVersion("3.12.2") .tags("terraform") .copySettings(InstanceCopySettingArgs.builder() .subscriptionId(var_.instance_id()) .settings( "alarms", "config", "definitions", "firewall", "logs", "metrics", "plugins") .build()) .build()); } } ``` </details> ## Import `cloudamqp_instance`can be imported using CloudAMQP internal identifier. ```sh $ pulumi import cloudamqp:index/instance:Instance instance <id>` ``` To retrieve the identifier for an instance, either use [CloudAMQP customer API](https://docs.cloudamqp.com/#list-instances) or use the data source [`cloudamqp_account`](./data-sources/account.md) to list all available instances for an account.
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Constructor Summary

      Constructors 
      Constructor Description
      Instance​(java.lang.String name)  
      Instance​(java.lang.String name, InstanceArgs args)  
      Instance​(java.lang.String name, InstanceArgs args, com.pulumi.resources.CustomResourceOptions options)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<java.lang.String> apikey()  
      com.pulumi.core.Output<java.lang.String> backend()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<InstanceCopySetting>>> copySettings()  
      com.pulumi.core.Output<java.lang.Boolean> dedicated()  
      static Instance get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, InstanceState state, com.pulumi.resources.CustomResourceOptions options)
      Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
      com.pulumi.core.Output<java.lang.String> host()  
      com.pulumi.core.Output<java.lang.String> hostInternal()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> keepAssociatedVpc()  
      com.pulumi.core.Output<java.lang.String> name()  
      com.pulumi.core.Output<java.lang.Boolean> noDefaultAlarms()  
      com.pulumi.core.Output<java.lang.Integer> nodes()  
      com.pulumi.core.Output<java.lang.String> plan()  
      com.pulumi.core.Output<java.lang.Boolean> ready()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.lang.String> rmqVersion()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> tags()  
      com.pulumi.core.Output<java.lang.String> url()  
      com.pulumi.core.Output<java.lang.String> vhost()  
      com.pulumi.core.Output<java.lang.Integer> vpcId()  
      com.pulumi.core.Output<java.lang.String> vpcSubnet()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Instance

        public Instance​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • Instance

        public Instance​(java.lang.String name,
                        InstanceArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • Instance

        public Instance​(java.lang.String name,
                        InstanceArgs args,
                        @Nullable
                        com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • apikey

        public com.pulumi.core.Output<java.lang.String> apikey()
        Returns:
        API key needed to communicate to CloudAMQP's second API. The second API is used to manage alarms, integration and more, full description [CloudAMQP API](https://docs.cloudamqp.com/cloudamqp_api.html).
      • backend

        public com.pulumi.core.Output<java.lang.String> backend()
        Returns:
        Information if the CloudAMQP instance runs either RabbitMQ or LavinMQ.
      • copySettings

        public com.pulumi.core.Output<java.util.Optional<java.util.List<InstanceCopySetting>>> copySettings()
        Returns:
        Copy settings from one CloudAMQP instance to a new. Consists of the block documented below. *** The `copy_settings` block consists of:
      • dedicated

        public com.pulumi.core.Output<java.lang.Boolean> dedicated()
        Returns:
        Information if the CloudAMQP instance is shared or dedicated.
      • host

        public com.pulumi.core.Output<java.lang.String> host()
        Returns:
        The external hostname for the CloudAMQP instance.
      • hostInternal

        public com.pulumi.core.Output<java.lang.String> hostInternal()
        Returns:
        The internal hostname for the CloudAMQP instance.
      • keepAssociatedVpc

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> keepAssociatedVpc()
        Returns:
        Keep associated VPC when deleting instance, default set to false.
      • name

        public com.pulumi.core.Output<java.lang.String> name()
        Returns:
        Name of the CloudAMQP instance.
      • noDefaultAlarms

        public com.pulumi.core.Output<java.lang.Boolean> noDefaultAlarms()
        Returns:
        Set to true to discard creating default alarms when the instance is created. Can be left out, will then use default value = false.
      • nodes

        public com.pulumi.core.Output<java.lang.Integer> nodes()
        Returns:
        Number of nodes, 1, 3 or 5 depending on plan used. Only needed for legacy plans, will otherwise be computed. ***Deprecated: Legacy subscriptions plan can still change this to scale up or down the instance. New subscriptions plans use the plan to determine number of nodes. In order to change number of nodes the `plan` needs to be updated.***
      • plan

        public com.pulumi.core.Output<java.lang.String> plan()
        Returns:
        The subscription plan. See available plans
      • ready

        public com.pulumi.core.Output<java.lang.Boolean> ready()
        Returns:
        Flag describing if the resource is ready
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        The region to host the instance in. See instance regions ***Note: Changing region will force the instance to be destroyed and a new created in the new region. All data will be lost and a new name assigned.***
      • rmqVersion

        public com.pulumi.core.Output<java.lang.String> rmqVersion()
        Returns:
        The Rabbit MQ version. Can be left out, will then be set to default value used by CloudAMQP API. ***Note: There is not yet any support in the provider to change the RMQ version. Once it's set in the initial creation, it will remain.***
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> tags()
        Returns:
        One or more tags for the CloudAMQP instance, makes it possible to categories multiple instances in console view. Default there is no tags assigned.
      • url

        public com.pulumi.core.Output<java.lang.String> url()
        Returns:
        The AMQP URL (uses the internal hostname if the instance was created with VPC). Has the format: `amqps://{username}:{password}@{hostname}/{vhost}`
      • vhost

        public com.pulumi.core.Output<java.lang.String> vhost()
        Returns:
        The virtual host used by Rabbit MQ.
      • vpcId

        public com.pulumi.core.Output<java.lang.Integer> vpcId()
        Returns:
        The VPC ID. Use this to create your instance in an existing VPC. See available example.
      • vpcSubnet

        public com.pulumi.core.Output<java.lang.String> vpcSubnet()
        Returns:
        Creates a dedicated VPC subnet, shouldn't overlap with other VPC subnet, default subnet used 10.56.72.0/24. ***Deprecated: Will be removed in next major version (v2.0)*** ***Note: extra fee will be charged when using VPC, see [CloudAMQP](https://cloudamqp.com) for more information.***
      • get

        public static Instance get​(java.lang.String name,
                                   com.pulumi.core.Output<java.lang.String> id,
                                   @Nullable
                                   InstanceState state,
                                   @Nullable
                                   com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.