import * as core from "@terrascript/core"; export interface SelectionTagArgs extends core.SchemaArgs { key: string | core.StringOut; type: string | core.StringOut; value: string | core.StringOut; } export class SelectionTag extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public type!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface StringNotLikeArgs extends core.SchemaArgs { key: string | core.StringOut; value: string | core.StringOut; } export class StringNotLike extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface StringEqualsArgs extends core.SchemaArgs { key: string | core.StringOut; value: string | core.StringOut; } export class StringEquals extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface StringLikeArgs extends core.SchemaArgs { key: string | core.StringOut; value: string | core.StringOut; } export class StringLike extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface StringNotEqualsArgs extends core.SchemaArgs { key: string | core.StringOut; value: string | core.StringOut; } export class StringNotEquals extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface ConditionArgs extends core.SchemaArgs { stringEquals?: core.Array | core.ArrayOut; stringLike?: core.Array | core.ArrayOut; stringNotEquals?: | core.Array | core.ArrayOut; stringNotLike?: core.Array | core.ArrayOut; } export class Condition extends core.Schema { @core.attr(StringEquals, { kind: "array" }) public stringEquals?: core.Array | core.ArrayOut; @core.attr(StringLike, { kind: "array" }) public stringLike?: core.Array | core.ArrayOut; @core.attr(StringNotEquals, { kind: "array" }) public stringNotEquals?: | core.Array | core.ArrayOut; @core.attr(StringNotLike, { kind: "array" }) public stringNotLike?: | core.Array | core.ArrayOut; } export interface SelectionArgs extends core.ResourceArgs { /** * (Optional) A list of conditions that you define to assign resources to your backup plans using tags. */ condition?: core.Array | core.ArrayOut; /** * (Required) The ARN of the IAM role that AWS Backup uses to authenticate when restoring and backing u * p the target resource. See the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/l * atest/devguide/access-control.html#managed-policies) for additional information about using AWS mana * ged policies or creating custom policies attached to the IAM role. */ iamRoleArn: string | core.StringOut; /** * (Required) The display name of a resource selection document. */ name: string | core.StringOut; /** * (Optional) An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of * resources to exclude from a backup plan. */ notResources?: core.Array | core.ArrayOut; /** * (Required) The backup plan ID to be associated with the selection of resources. */ planId: string | core.StringOut; /** * (Optional) An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of * resources to assign to a backup plan. */ resources?: core.Array | core.ArrayOut; /** * (Optional) Tag-based conditions used to specify a set of resources to assign to a backup plan. */ selectionTag?: core.Array | core.ArrayOut; } export class Selection extends core.Resource { /** * (Optional) A list of conditions that you define to assign resources to your backup plans using tags. */ @core.attr(Condition, { computed: true, kind: "array" }) public condition?: core.Array | core.ArrayOut; /** * (Required) The ARN of the IAM role that AWS Backup uses to authenticate when restoring and backing u * p the target resource. See the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/l * atest/devguide/access-control.html#managed-policies) for additional information about using AWS mana * ged policies or creating custom policies attached to the IAM role. */ @core.attr(String) public iamRoleArn!: string | core.StringOut; /** * Backup Selection identifier */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The display name of a resource selection document. */ @core.attr(String) public name!: string | core.StringOut; /** * (Optional) An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of * resources to exclude from a backup plan. */ @core.attr(String, { computed: true, kind: "array" }) public notResources?: core.Array | core.ArrayOut; /** * (Required) The backup plan ID to be associated with the selection of resources. */ @core.attr(String) public planId!: string | core.StringOut; /** * (Optional) An array of strings that either contain Amazon Resource Names (ARNs) or match patterns of * resources to assign to a backup plan. */ @core.attr(String, { kind: "array" }) public resources?: core.Array | core.ArrayOut; /** * (Optional) Tag-based conditions used to specify a set of resources to assign to a backup plan. */ @core.attr(SelectionTag, { kind: "array" }) public selectionTag?: core.Array | core.ArrayOut; constructor(name: string, args?: SelectionArgs) { super(name, "aws_backup_selection", args); } public override getNamespace(): string { return "aws_backup"; } }