Class MacsecKeyAssociation


  • public class MacsecKeyAssociation
    extends com.pulumi.resources.CustomResource
    Manages a MAC Security (MACSec) secret key association for use with Direct Connect. See [MACsec prerequisites](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-mac-sec-getting-started.html#mac-sec-prerequisites) for information about MAC Security (MACsec) prerequisites. Creating this resource will also create a resource of type `aws.secretsmanager.Secret` which is managed by Direct Connect. While you can import this resource into your state, because this secret is managed by Direct Connect, you will not be able to make any modifications to it. See [How AWS Direct Connect uses AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating_how-services-use-secrets_directconnect.html) for details. > **Note:** The `ckn` and `cak` arguments are stored in the raw state as plain-text. Use `cknWo` and `cakWo` instead to avoid storing these values in the plan or state. When `cknWo` is configured, the API-returned CKN is not stored in `ckn`. > **Note:** The `secretArn` argument can only be used to reference a previously created MACSec key. You cannot associate a Secrets Manager secret created outside of the `aws.directconnect.MacsecKeyAssociation` resource. ## Example Usage ### Basic Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.directconnect.DirectconnectFunctions;
     import com.pulumi.aws.directconnect.inputs.GetConnectionArgs;
     import com.pulumi.aws.directconnect.MacsecKeyAssociation;
     import com.pulumi.aws.directconnect.MacsecKeyAssociationArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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) {
             final var example = DirectconnectFunctions.getConnection(GetConnectionArgs.builder()
                 .name("tf-dx-connection")
                 .build());
     
             var exampleMacsecKeyAssociation = new MacsecKeyAssociation("exampleMacsecKeyAssociation", MacsecKeyAssociationArgs.builder()
                 .connectionId(example.id())
                 .ckn("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
                 .cak("abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789")
                 .build());
     
         }
     }
     
     
    ### Create MACSec key with write-only CKN and CAK
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.directconnect.DirectconnectFunctions;
     import com.pulumi.aws.directconnect.inputs.GetConnectionArgs;
     import com.pulumi.aws.directconnect.MacsecKeyAssociation;
     import com.pulumi.aws.directconnect.MacsecKeyAssociationArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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) {
             final var config = ctx.config();
             final var example = DirectconnectFunctions.getConnection(GetConnectionArgs.builder()
                 .name("tf-dx-connection")
                 .build());
     
             final var cak = config.require("cak");
             final var ckn = config.require("ckn");
             var exampleMacsecKeyAssociation = new MacsecKeyAssociation("exampleMacsecKeyAssociation", MacsecKeyAssociationArgs.builder()
                 .connectionId(example.id())
                 .cakWo(cak)
                 .cakWoVersion(1)
                 .cknWo(ckn)
                 .cknWoVersion(1)
                 .build());
     
         }
     }
     
     
    Changing a write-only value alone does not trigger a change. Increment its corresponding `cakWoVersion` or `cknWoVersion` to replace the association with the new key material. The version counters are independent; increment both when changing both values. ### Create MACSec key with existing Secrets Manager secret
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.directconnect.DirectconnectFunctions;
     import com.pulumi.aws.directconnect.inputs.GetConnectionArgs;
     import com.pulumi.aws.secretsmanager.SecretsmanagerFunctions;
     import com.pulumi.aws.secretsmanager.inputs.GetSecretArgs;
     import com.pulumi.aws.directconnect.MacsecKeyAssociation;
     import com.pulumi.aws.directconnect.MacsecKeyAssociationArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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) {
             final var example = DirectconnectFunctions.getConnection(GetConnectionArgs.builder()
                 .name("tf-dx-connection")
                 .build());
     
             final var exampleGetSecret = SecretsmanagerFunctions.getSecret(GetSecretArgs.builder()
                 .name("directconnect!prod/us-east-1/directconnect/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
                 .build());
     
             var exampleMacsecKeyAssociation = new MacsecKeyAssociation("exampleMacsecKeyAssociation", MacsecKeyAssociationArgs.builder()
                 .connectionId(example.id())
                 .secretArn(exampleGetSecret.arn())
                 .build());
     
         }
     }
     
     
    • 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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> cak()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> cakWo()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> cakWoVersion()  
      com.pulumi.core.Output<java.lang.String> ckn()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> cknWo()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> cknWoVersion()  
      com.pulumi.core.Output<java.lang.String> connectionId()  
      static MacsecKeyAssociation get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, MacsecKeyAssociationState 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> region()  
      com.pulumi.core.Output<java.lang.String> secretArn()  
      com.pulumi.core.Output<java.lang.String> startOn()  
      com.pulumi.core.Output<java.lang.String> state()  
      • 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

      • MacsecKeyAssociation

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

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

        public MacsecKeyAssociation​(java.lang.String name,
                                    MacsecKeyAssociationArgs 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

      • cak

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> cak()
        Returns:
        MAC Security (MACsec) CAK to associate with the dedicated connection. Valid values are 64 hexadecimal characters (0-9, A-F). Required with `ckn` or `cknWo` unless `cakWo` is configured. Conflicts with `cakWo`. Changing this argument replaces the association.
      • cakWo

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> cakWo()
        Returns:
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations. Write-only MAC Security (MACsec) CAK to associate with the dedicated connection. Valid values are 64 hexadecimal characters (0-9, A-F). Requires `cakWoVersion` and either `ckn` or `cknWo`. Conflicts with `cak` and `secretArn`. This value is not stored in the plan or state.
      • cakWoVersion

        public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> cakWoVersion()
        Returns:
        Positive integer used to trigger replacement when `cakWo` changes. Required with `cakWo`. Increment this value to replace the association using the current write-only values.
      • ckn

        public com.pulumi.core.Output<java.lang.String> ckn()
        Returns:
        MAC Security (MACsec) CKN to associate with the dedicated connection. Valid values are 64 hexadecimal characters (0-9, A-F). Required with `cak` or `cakWo` unless `cknWo` is configured. Conflicts with `cknWo`. Changing this argument replaces the association.
      • cknWo

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> cknWo()
        Returns:
        **NOTE:** This field is write-only and its value will not be updated in state as part of read operations. Write-only MAC Security (MACsec) CKN to associate with the dedicated connection. Valid values are 64 hexadecimal characters (0-9, A-F). Requires `cknWoVersion` and either `cak` or `cakWo`. Conflicts with `ckn` and `secretArn`. This value is not stored in the plan or state.
      • cknWoVersion

        public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> cknWoVersion()
        Returns:
        Positive integer used to trigger replacement when `cknWo` changes. Required with `cknWo`. Increment this value to replace the association using the current write-only values.
      • connectionId

        public com.pulumi.core.Output<java.lang.String> connectionId()
        Returns:
        ID of the dedicated Direct Connect connection. The connection must be a dedicated connection in the `AVAILABLE` state. The following arguments are optional:
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • secretArn

        public com.pulumi.core.Output<java.lang.String> secretArn()
        Returns:
        ARN of the MAC Security (MACsec) secret key to associate with the dedicated connection. > **Note:** Supply either a CAK/CKN pair (using regular or write-only arguments) or `secretArn`. Do not combine key arguments with `secretArn`.
      • startOn

        public com.pulumi.core.Output<java.lang.String> startOn()
        Returns:
        The date in UTC format that the MAC Security (MACsec) secret key takes effect.
      • state

        public com.pulumi.core.Output<java.lang.String> state()
        Returns:
        The state of the MAC Security (MACsec) secret key. The possible values are: associating, associated, disassociating, disassociated. See [MacSecKey](https://docs.aws.amazon.com/directconnect/latest/APIReference/API_MacSecKey.html#DX-Type-MacSecKey-state) for descriptions of each state.
      • get

        public static MacsecKeyAssociation get​(java.lang.String name,
                                               com.pulumi.core.Output<java.lang.String> id,
                                               @Nullable
                                               MacsecKeyAssociationState 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.