github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/kms/externalKey.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package kms
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    11  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    12  )
    13  
    14  // Manages a single-Region or multi-Region primary KMS key that uses external key material.
    15  // To instead manage a single-Region or multi-Region primary KMS key where AWS automatically generates and potentially rotates key material, see the `kms.Key` resource.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms"
    26  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    27  //
    28  // )
    29  //
    30  //	func main() {
    31  //		pulumi.Run(func(ctx *pulumi.Context) error {
    32  //			_, err := kms.NewExternalKey(ctx, "example", &kms.ExternalKeyArgs{
    33  //				Description: pulumi.String("KMS EXTERNAL for AMI encryption"),
    34  //			})
    35  //			if err != nil {
    36  //				return err
    37  //			}
    38  //			return nil
    39  //		})
    40  //	}
    41  //
    42  // ```
    43  // <!--End PulumiCodeChooser -->
    44  //
    45  // ## Import
    46  //
    47  // Using `pulumi import`, import KMS External Keys using the `id`. For example:
    48  //
    49  // ```sh
    50  // $ pulumi import aws:kms/externalKey:ExternalKey a arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
    51  // ```
    52  type ExternalKey struct {
    53  	pulumi.CustomResourceState
    54  
    55  	// The Amazon Resource Name (ARN) of the key.
    56  	Arn pulumi.StringOutput `pulumi:"arn"`
    57  	// Specifies whether to disable the policy lockout check performed when creating or updating the key's policy. Setting this value to `true` increases the risk that the key becomes unmanageable. For more information, refer to the scenario in the [Default Key Policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) section in the AWS Key Management Service Developer Guide. Defaults to `false`.
    58  	BypassPolicyLockoutSafetyCheck pulumi.BoolPtrOutput `pulumi:"bypassPolicyLockoutSafetyCheck"`
    59  	// Duration in days after which the key is deleted after destruction of the resource. Must be between `7` and `30` days. Defaults to `30`.
    60  	DeletionWindowInDays pulumi.IntPtrOutput `pulumi:"deletionWindowInDays"`
    61  	// Description of the key.
    62  	Description pulumi.StringPtrOutput `pulumi:"description"`
    63  	// Specifies whether the key is enabled. Keys pending import can only be `false`. Imported keys default to `true` unless expired.
    64  	Enabled pulumi.BoolOutput `pulumi:"enabled"`
    65  	// Whether the key material expires. Empty when pending key material import, otherwise `KEY_MATERIAL_EXPIRES` or `KEY_MATERIAL_DOES_NOT_EXPIRE`.
    66  	ExpirationModel pulumi.StringOutput `pulumi:"expirationModel"`
    67  	// Base64 encoded 256-bit symmetric encryption key material to import. The CMK is permanently associated with this key material. The same key material can be reimported, but you cannot import different key material.
    68  	KeyMaterialBase64 pulumi.StringPtrOutput `pulumi:"keyMaterialBase64"`
    69  	// The state of the CMK.
    70  	KeyState pulumi.StringOutput `pulumi:"keyState"`
    71  	// The cryptographic operations for which you can use the CMK.
    72  	KeyUsage pulumi.StringOutput `pulumi:"keyUsage"`
    73  	// Indicates whether the KMS key is a multi-Region (`true`) or regional (`false`) key. Defaults to `false`.
    74  	MultiRegion pulumi.BoolOutput `pulumi:"multiRegion"`
    75  	// A key policy JSON document. If you do not provide a key policy, AWS KMS attaches a default key policy to the CMK.
    76  	Policy pulumi.StringOutput `pulumi:"policy"`
    77  	// A key-value map of tags to assign to the key. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    78  	Tags pulumi.StringMapOutput `pulumi:"tags"`
    79  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
    80  	//
    81  	// Deprecated: Please use `tags` instead.
    82  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
    83  	// Time at which the imported key material expires. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. If not specified, key material does not expire. Valid values: [RFC3339 time string](https://tools.ietf.org/html/rfc3339#section-5.8) (`YYYY-MM-DDTHH:MM:SSZ`)
    84  	ValidTo pulumi.StringPtrOutput `pulumi:"validTo"`
    85  }
    86  
    87  // NewExternalKey registers a new resource with the given unique name, arguments, and options.
    88  func NewExternalKey(ctx *pulumi.Context,
    89  	name string, args *ExternalKeyArgs, opts ...pulumi.ResourceOption) (*ExternalKey, error) {
    90  	if args == nil {
    91  		args = &ExternalKeyArgs{}
    92  	}
    93  
    94  	if args.KeyMaterialBase64 != nil {
    95  		args.KeyMaterialBase64 = pulumi.ToSecret(args.KeyMaterialBase64).(pulumi.StringPtrInput)
    96  	}
    97  	secrets := pulumi.AdditionalSecretOutputs([]string{
    98  		"keyMaterialBase64",
    99  	})
   100  	opts = append(opts, secrets)
   101  	opts = internal.PkgResourceDefaultOpts(opts)
   102  	var resource ExternalKey
   103  	err := ctx.RegisterResource("aws:kms/externalKey:ExternalKey", name, args, &resource, opts...)
   104  	if err != nil {
   105  		return nil, err
   106  	}
   107  	return &resource, nil
   108  }
   109  
   110  // GetExternalKey gets an existing ExternalKey resource's state with the given name, ID, and optional
   111  // state properties that are used to uniquely qualify the lookup (nil if not required).
   112  func GetExternalKey(ctx *pulumi.Context,
   113  	name string, id pulumi.IDInput, state *ExternalKeyState, opts ...pulumi.ResourceOption) (*ExternalKey, error) {
   114  	var resource ExternalKey
   115  	err := ctx.ReadResource("aws:kms/externalKey:ExternalKey", name, id, state, &resource, opts...)
   116  	if err != nil {
   117  		return nil, err
   118  	}
   119  	return &resource, nil
   120  }
   121  
   122  // Input properties used for looking up and filtering ExternalKey resources.
   123  type externalKeyState struct {
   124  	// The Amazon Resource Name (ARN) of the key.
   125  	Arn *string `pulumi:"arn"`
   126  	// Specifies whether to disable the policy lockout check performed when creating or updating the key's policy. Setting this value to `true` increases the risk that the key becomes unmanageable. For more information, refer to the scenario in the [Default Key Policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) section in the AWS Key Management Service Developer Guide. Defaults to `false`.
   127  	BypassPolicyLockoutSafetyCheck *bool `pulumi:"bypassPolicyLockoutSafetyCheck"`
   128  	// Duration in days after which the key is deleted after destruction of the resource. Must be between `7` and `30` days. Defaults to `30`.
   129  	DeletionWindowInDays *int `pulumi:"deletionWindowInDays"`
   130  	// Description of the key.
   131  	Description *string `pulumi:"description"`
   132  	// Specifies whether the key is enabled. Keys pending import can only be `false`. Imported keys default to `true` unless expired.
   133  	Enabled *bool `pulumi:"enabled"`
   134  	// Whether the key material expires. Empty when pending key material import, otherwise `KEY_MATERIAL_EXPIRES` or `KEY_MATERIAL_DOES_NOT_EXPIRE`.
   135  	ExpirationModel *string `pulumi:"expirationModel"`
   136  	// Base64 encoded 256-bit symmetric encryption key material to import. The CMK is permanently associated with this key material. The same key material can be reimported, but you cannot import different key material.
   137  	KeyMaterialBase64 *string `pulumi:"keyMaterialBase64"`
   138  	// The state of the CMK.
   139  	KeyState *string `pulumi:"keyState"`
   140  	// The cryptographic operations for which you can use the CMK.
   141  	KeyUsage *string `pulumi:"keyUsage"`
   142  	// Indicates whether the KMS key is a multi-Region (`true`) or regional (`false`) key. Defaults to `false`.
   143  	MultiRegion *bool `pulumi:"multiRegion"`
   144  	// A key policy JSON document. If you do not provide a key policy, AWS KMS attaches a default key policy to the CMK.
   145  	Policy *string `pulumi:"policy"`
   146  	// A key-value map of tags to assign to the key. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   147  	Tags map[string]string `pulumi:"tags"`
   148  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   149  	//
   150  	// Deprecated: Please use `tags` instead.
   151  	TagsAll map[string]string `pulumi:"tagsAll"`
   152  	// Time at which the imported key material expires. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. If not specified, key material does not expire. Valid values: [RFC3339 time string](https://tools.ietf.org/html/rfc3339#section-5.8) (`YYYY-MM-DDTHH:MM:SSZ`)
   153  	ValidTo *string `pulumi:"validTo"`
   154  }
   155  
   156  type ExternalKeyState struct {
   157  	// The Amazon Resource Name (ARN) of the key.
   158  	Arn pulumi.StringPtrInput
   159  	// Specifies whether to disable the policy lockout check performed when creating or updating the key's policy. Setting this value to `true` increases the risk that the key becomes unmanageable. For more information, refer to the scenario in the [Default Key Policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) section in the AWS Key Management Service Developer Guide. Defaults to `false`.
   160  	BypassPolicyLockoutSafetyCheck pulumi.BoolPtrInput
   161  	// Duration in days after which the key is deleted after destruction of the resource. Must be between `7` and `30` days. Defaults to `30`.
   162  	DeletionWindowInDays pulumi.IntPtrInput
   163  	// Description of the key.
   164  	Description pulumi.StringPtrInput
   165  	// Specifies whether the key is enabled. Keys pending import can only be `false`. Imported keys default to `true` unless expired.
   166  	Enabled pulumi.BoolPtrInput
   167  	// Whether the key material expires. Empty when pending key material import, otherwise `KEY_MATERIAL_EXPIRES` or `KEY_MATERIAL_DOES_NOT_EXPIRE`.
   168  	ExpirationModel pulumi.StringPtrInput
   169  	// Base64 encoded 256-bit symmetric encryption key material to import. The CMK is permanently associated with this key material. The same key material can be reimported, but you cannot import different key material.
   170  	KeyMaterialBase64 pulumi.StringPtrInput
   171  	// The state of the CMK.
   172  	KeyState pulumi.StringPtrInput
   173  	// The cryptographic operations for which you can use the CMK.
   174  	KeyUsage pulumi.StringPtrInput
   175  	// Indicates whether the KMS key is a multi-Region (`true`) or regional (`false`) key. Defaults to `false`.
   176  	MultiRegion pulumi.BoolPtrInput
   177  	// A key policy JSON document. If you do not provide a key policy, AWS KMS attaches a default key policy to the CMK.
   178  	Policy pulumi.StringPtrInput
   179  	// A key-value map of tags to assign to the key. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   180  	Tags pulumi.StringMapInput
   181  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   182  	//
   183  	// Deprecated: Please use `tags` instead.
   184  	TagsAll pulumi.StringMapInput
   185  	// Time at which the imported key material expires. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. If not specified, key material does not expire. Valid values: [RFC3339 time string](https://tools.ietf.org/html/rfc3339#section-5.8) (`YYYY-MM-DDTHH:MM:SSZ`)
   186  	ValidTo pulumi.StringPtrInput
   187  }
   188  
   189  func (ExternalKeyState) ElementType() reflect.Type {
   190  	return reflect.TypeOf((*externalKeyState)(nil)).Elem()
   191  }
   192  
   193  type externalKeyArgs struct {
   194  	// Specifies whether to disable the policy lockout check performed when creating or updating the key's policy. Setting this value to `true` increases the risk that the key becomes unmanageable. For more information, refer to the scenario in the [Default Key Policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) section in the AWS Key Management Service Developer Guide. Defaults to `false`.
   195  	BypassPolicyLockoutSafetyCheck *bool `pulumi:"bypassPolicyLockoutSafetyCheck"`
   196  	// Duration in days after which the key is deleted after destruction of the resource. Must be between `7` and `30` days. Defaults to `30`.
   197  	DeletionWindowInDays *int `pulumi:"deletionWindowInDays"`
   198  	// Description of the key.
   199  	Description *string `pulumi:"description"`
   200  	// Specifies whether the key is enabled. Keys pending import can only be `false`. Imported keys default to `true` unless expired.
   201  	Enabled *bool `pulumi:"enabled"`
   202  	// Base64 encoded 256-bit symmetric encryption key material to import. The CMK is permanently associated with this key material. The same key material can be reimported, but you cannot import different key material.
   203  	KeyMaterialBase64 *string `pulumi:"keyMaterialBase64"`
   204  	// Indicates whether the KMS key is a multi-Region (`true`) or regional (`false`) key. Defaults to `false`.
   205  	MultiRegion *bool `pulumi:"multiRegion"`
   206  	// A key policy JSON document. If you do not provide a key policy, AWS KMS attaches a default key policy to the CMK.
   207  	Policy *string `pulumi:"policy"`
   208  	// A key-value map of tags to assign to the key. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   209  	Tags map[string]string `pulumi:"tags"`
   210  	// Time at which the imported key material expires. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. If not specified, key material does not expire. Valid values: [RFC3339 time string](https://tools.ietf.org/html/rfc3339#section-5.8) (`YYYY-MM-DDTHH:MM:SSZ`)
   211  	ValidTo *string `pulumi:"validTo"`
   212  }
   213  
   214  // The set of arguments for constructing a ExternalKey resource.
   215  type ExternalKeyArgs struct {
   216  	// Specifies whether to disable the policy lockout check performed when creating or updating the key's policy. Setting this value to `true` increases the risk that the key becomes unmanageable. For more information, refer to the scenario in the [Default Key Policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) section in the AWS Key Management Service Developer Guide. Defaults to `false`.
   217  	BypassPolicyLockoutSafetyCheck pulumi.BoolPtrInput
   218  	// Duration in days after which the key is deleted after destruction of the resource. Must be between `7` and `30` days. Defaults to `30`.
   219  	DeletionWindowInDays pulumi.IntPtrInput
   220  	// Description of the key.
   221  	Description pulumi.StringPtrInput
   222  	// Specifies whether the key is enabled. Keys pending import can only be `false`. Imported keys default to `true` unless expired.
   223  	Enabled pulumi.BoolPtrInput
   224  	// Base64 encoded 256-bit symmetric encryption key material to import. The CMK is permanently associated with this key material. The same key material can be reimported, but you cannot import different key material.
   225  	KeyMaterialBase64 pulumi.StringPtrInput
   226  	// Indicates whether the KMS key is a multi-Region (`true`) or regional (`false`) key. Defaults to `false`.
   227  	MultiRegion pulumi.BoolPtrInput
   228  	// A key policy JSON document. If you do not provide a key policy, AWS KMS attaches a default key policy to the CMK.
   229  	Policy pulumi.StringPtrInput
   230  	// A key-value map of tags to assign to the key. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   231  	Tags pulumi.StringMapInput
   232  	// Time at which the imported key material expires. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. If not specified, key material does not expire. Valid values: [RFC3339 time string](https://tools.ietf.org/html/rfc3339#section-5.8) (`YYYY-MM-DDTHH:MM:SSZ`)
   233  	ValidTo pulumi.StringPtrInput
   234  }
   235  
   236  func (ExternalKeyArgs) ElementType() reflect.Type {
   237  	return reflect.TypeOf((*externalKeyArgs)(nil)).Elem()
   238  }
   239  
   240  type ExternalKeyInput interface {
   241  	pulumi.Input
   242  
   243  	ToExternalKeyOutput() ExternalKeyOutput
   244  	ToExternalKeyOutputWithContext(ctx context.Context) ExternalKeyOutput
   245  }
   246  
   247  func (*ExternalKey) ElementType() reflect.Type {
   248  	return reflect.TypeOf((**ExternalKey)(nil)).Elem()
   249  }
   250  
   251  func (i *ExternalKey) ToExternalKeyOutput() ExternalKeyOutput {
   252  	return i.ToExternalKeyOutputWithContext(context.Background())
   253  }
   254  
   255  func (i *ExternalKey) ToExternalKeyOutputWithContext(ctx context.Context) ExternalKeyOutput {
   256  	return pulumi.ToOutputWithContext(ctx, i).(ExternalKeyOutput)
   257  }
   258  
   259  // ExternalKeyArrayInput is an input type that accepts ExternalKeyArray and ExternalKeyArrayOutput values.
   260  // You can construct a concrete instance of `ExternalKeyArrayInput` via:
   261  //
   262  //	ExternalKeyArray{ ExternalKeyArgs{...} }
   263  type ExternalKeyArrayInput interface {
   264  	pulumi.Input
   265  
   266  	ToExternalKeyArrayOutput() ExternalKeyArrayOutput
   267  	ToExternalKeyArrayOutputWithContext(context.Context) ExternalKeyArrayOutput
   268  }
   269  
   270  type ExternalKeyArray []ExternalKeyInput
   271  
   272  func (ExternalKeyArray) ElementType() reflect.Type {
   273  	return reflect.TypeOf((*[]*ExternalKey)(nil)).Elem()
   274  }
   275  
   276  func (i ExternalKeyArray) ToExternalKeyArrayOutput() ExternalKeyArrayOutput {
   277  	return i.ToExternalKeyArrayOutputWithContext(context.Background())
   278  }
   279  
   280  func (i ExternalKeyArray) ToExternalKeyArrayOutputWithContext(ctx context.Context) ExternalKeyArrayOutput {
   281  	return pulumi.ToOutputWithContext(ctx, i).(ExternalKeyArrayOutput)
   282  }
   283  
   284  // ExternalKeyMapInput is an input type that accepts ExternalKeyMap and ExternalKeyMapOutput values.
   285  // You can construct a concrete instance of `ExternalKeyMapInput` via:
   286  //
   287  //	ExternalKeyMap{ "key": ExternalKeyArgs{...} }
   288  type ExternalKeyMapInput interface {
   289  	pulumi.Input
   290  
   291  	ToExternalKeyMapOutput() ExternalKeyMapOutput
   292  	ToExternalKeyMapOutputWithContext(context.Context) ExternalKeyMapOutput
   293  }
   294  
   295  type ExternalKeyMap map[string]ExternalKeyInput
   296  
   297  func (ExternalKeyMap) ElementType() reflect.Type {
   298  	return reflect.TypeOf((*map[string]*ExternalKey)(nil)).Elem()
   299  }
   300  
   301  func (i ExternalKeyMap) ToExternalKeyMapOutput() ExternalKeyMapOutput {
   302  	return i.ToExternalKeyMapOutputWithContext(context.Background())
   303  }
   304  
   305  func (i ExternalKeyMap) ToExternalKeyMapOutputWithContext(ctx context.Context) ExternalKeyMapOutput {
   306  	return pulumi.ToOutputWithContext(ctx, i).(ExternalKeyMapOutput)
   307  }
   308  
   309  type ExternalKeyOutput struct{ *pulumi.OutputState }
   310  
   311  func (ExternalKeyOutput) ElementType() reflect.Type {
   312  	return reflect.TypeOf((**ExternalKey)(nil)).Elem()
   313  }
   314  
   315  func (o ExternalKeyOutput) ToExternalKeyOutput() ExternalKeyOutput {
   316  	return o
   317  }
   318  
   319  func (o ExternalKeyOutput) ToExternalKeyOutputWithContext(ctx context.Context) ExternalKeyOutput {
   320  	return o
   321  }
   322  
   323  // The Amazon Resource Name (ARN) of the key.
   324  func (o ExternalKeyOutput) Arn() pulumi.StringOutput {
   325  	return o.ApplyT(func(v *ExternalKey) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   326  }
   327  
   328  // Specifies whether to disable the policy lockout check performed when creating or updating the key's policy. Setting this value to `true` increases the risk that the key becomes unmanageable. For more information, refer to the scenario in the [Default Key Policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) section in the AWS Key Management Service Developer Guide. Defaults to `false`.
   329  func (o ExternalKeyOutput) BypassPolicyLockoutSafetyCheck() pulumi.BoolPtrOutput {
   330  	return o.ApplyT(func(v *ExternalKey) pulumi.BoolPtrOutput { return v.BypassPolicyLockoutSafetyCheck }).(pulumi.BoolPtrOutput)
   331  }
   332  
   333  // Duration in days after which the key is deleted after destruction of the resource. Must be between `7` and `30` days. Defaults to `30`.
   334  func (o ExternalKeyOutput) DeletionWindowInDays() pulumi.IntPtrOutput {
   335  	return o.ApplyT(func(v *ExternalKey) pulumi.IntPtrOutput { return v.DeletionWindowInDays }).(pulumi.IntPtrOutput)
   336  }
   337  
   338  // Description of the key.
   339  func (o ExternalKeyOutput) Description() pulumi.StringPtrOutput {
   340  	return o.ApplyT(func(v *ExternalKey) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   341  }
   342  
   343  // Specifies whether the key is enabled. Keys pending import can only be `false`. Imported keys default to `true` unless expired.
   344  func (o ExternalKeyOutput) Enabled() pulumi.BoolOutput {
   345  	return o.ApplyT(func(v *ExternalKey) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput)
   346  }
   347  
   348  // Whether the key material expires. Empty when pending key material import, otherwise `KEY_MATERIAL_EXPIRES` or `KEY_MATERIAL_DOES_NOT_EXPIRE`.
   349  func (o ExternalKeyOutput) ExpirationModel() pulumi.StringOutput {
   350  	return o.ApplyT(func(v *ExternalKey) pulumi.StringOutput { return v.ExpirationModel }).(pulumi.StringOutput)
   351  }
   352  
   353  // Base64 encoded 256-bit symmetric encryption key material to import. The CMK is permanently associated with this key material. The same key material can be reimported, but you cannot import different key material.
   354  func (o ExternalKeyOutput) KeyMaterialBase64() pulumi.StringPtrOutput {
   355  	return o.ApplyT(func(v *ExternalKey) pulumi.StringPtrOutput { return v.KeyMaterialBase64 }).(pulumi.StringPtrOutput)
   356  }
   357  
   358  // The state of the CMK.
   359  func (o ExternalKeyOutput) KeyState() pulumi.StringOutput {
   360  	return o.ApplyT(func(v *ExternalKey) pulumi.StringOutput { return v.KeyState }).(pulumi.StringOutput)
   361  }
   362  
   363  // The cryptographic operations for which you can use the CMK.
   364  func (o ExternalKeyOutput) KeyUsage() pulumi.StringOutput {
   365  	return o.ApplyT(func(v *ExternalKey) pulumi.StringOutput { return v.KeyUsage }).(pulumi.StringOutput)
   366  }
   367  
   368  // Indicates whether the KMS key is a multi-Region (`true`) or regional (`false`) key. Defaults to `false`.
   369  func (o ExternalKeyOutput) MultiRegion() pulumi.BoolOutput {
   370  	return o.ApplyT(func(v *ExternalKey) pulumi.BoolOutput { return v.MultiRegion }).(pulumi.BoolOutput)
   371  }
   372  
   373  // A key policy JSON document. If you do not provide a key policy, AWS KMS attaches a default key policy to the CMK.
   374  func (o ExternalKeyOutput) Policy() pulumi.StringOutput {
   375  	return o.ApplyT(func(v *ExternalKey) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput)
   376  }
   377  
   378  // A key-value map of tags to assign to the key. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   379  func (o ExternalKeyOutput) Tags() pulumi.StringMapOutput {
   380  	return o.ApplyT(func(v *ExternalKey) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   381  }
   382  
   383  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   384  //
   385  // Deprecated: Please use `tags` instead.
   386  func (o ExternalKeyOutput) TagsAll() pulumi.StringMapOutput {
   387  	return o.ApplyT(func(v *ExternalKey) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   388  }
   389  
   390  // Time at which the imported key material expires. When the key material expires, AWS KMS deletes the key material and the CMK becomes unusable. If not specified, key material does not expire. Valid values: [RFC3339 time string](https://tools.ietf.org/html/rfc3339#section-5.8) (`YYYY-MM-DDTHH:MM:SSZ`)
   391  func (o ExternalKeyOutput) ValidTo() pulumi.StringPtrOutput {
   392  	return o.ApplyT(func(v *ExternalKey) pulumi.StringPtrOutput { return v.ValidTo }).(pulumi.StringPtrOutput)
   393  }
   394  
   395  type ExternalKeyArrayOutput struct{ *pulumi.OutputState }
   396  
   397  func (ExternalKeyArrayOutput) ElementType() reflect.Type {
   398  	return reflect.TypeOf((*[]*ExternalKey)(nil)).Elem()
   399  }
   400  
   401  func (o ExternalKeyArrayOutput) ToExternalKeyArrayOutput() ExternalKeyArrayOutput {
   402  	return o
   403  }
   404  
   405  func (o ExternalKeyArrayOutput) ToExternalKeyArrayOutputWithContext(ctx context.Context) ExternalKeyArrayOutput {
   406  	return o
   407  }
   408  
   409  func (o ExternalKeyArrayOutput) Index(i pulumi.IntInput) ExternalKeyOutput {
   410  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ExternalKey {
   411  		return vs[0].([]*ExternalKey)[vs[1].(int)]
   412  	}).(ExternalKeyOutput)
   413  }
   414  
   415  type ExternalKeyMapOutput struct{ *pulumi.OutputState }
   416  
   417  func (ExternalKeyMapOutput) ElementType() reflect.Type {
   418  	return reflect.TypeOf((*map[string]*ExternalKey)(nil)).Elem()
   419  }
   420  
   421  func (o ExternalKeyMapOutput) ToExternalKeyMapOutput() ExternalKeyMapOutput {
   422  	return o
   423  }
   424  
   425  func (o ExternalKeyMapOutput) ToExternalKeyMapOutputWithContext(ctx context.Context) ExternalKeyMapOutput {
   426  	return o
   427  }
   428  
   429  func (o ExternalKeyMapOutput) MapIndex(k pulumi.StringInput) ExternalKeyOutput {
   430  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ExternalKey {
   431  		return vs[0].(map[string]*ExternalKey)[vs[1].(string)]
   432  	}).(ExternalKeyOutput)
   433  }
   434  
   435  func init() {
   436  	pulumi.RegisterInputType(reflect.TypeOf((*ExternalKeyInput)(nil)).Elem(), &ExternalKey{})
   437  	pulumi.RegisterInputType(reflect.TypeOf((*ExternalKeyArrayInput)(nil)).Elem(), ExternalKeyArray{})
   438  	pulumi.RegisterInputType(reflect.TypeOf((*ExternalKeyMapInput)(nil)).Elem(), ExternalKeyMap{})
   439  	pulumi.RegisterOutputType(ExternalKeyOutput{})
   440  	pulumi.RegisterOutputType(ExternalKeyArrayOutput{})
   441  	pulumi.RegisterOutputType(ExternalKeyMapOutput{})
   442  }