<filename>sdk/dotnet/Inputs/SecurityGroupArgs.cs// *** WARNING: this file was generated by Pulumi SDK Generator. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.AwsxGo.Inputs
{

    /// <summary>
    /// The set of arguments for constructing a Security Group resource.
    /// </summary>
    public sealed class SecurityGroupArgs : Pulumi.ResourceArgs
    {
        /// <summary>
        /// Description of this egress rule.
        /// </summary>
        [Input("description")]
        public Input<string>? Description { get; set; }

        [Input("egress")]
        private InputList<Pulumi.Aws.Ec2.Inputs.SecurityGroupEgressArgs>? _egress;

        /// <summary>
        /// Configuration block for egress rules. Can be specified multiple times for each egress rule. Each egress block supports fields documented below.
        /// </summary>
        public InputList<Pulumi.Aws.Ec2.Inputs.SecurityGroupEgressArgs> Egress
        {
            get => _egress ?? (_egress = new InputList<Pulumi.Aws.Ec2.Inputs.SecurityGroupEgressArgs>());
            set => _egress = value;
        }

        [Input("ingress")]
        private InputList<Pulumi.Aws.Ec2.Inputs.SecurityGroupIngressArgs>? _ingress;

        /// <summary>
        /// Configuration block for egress rules. Can be specified multiple times for each ingress rule. Each ingress block supports fields documented below.
        /// </summary>
        public InputList<Pulumi.Aws.Ec2.Inputs.SecurityGroupIngressArgs> Ingress
        {
            get => _ingress ?? (_ingress = new InputList<Pulumi.Aws.Ec2.Inputs.SecurityGroupIngressArgs>());
            set => _ingress = value;
        }

        /// <summary>
        /// Name of the security group. If omitted, this provider will assign a random, unique name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
        /// </summary>
        [Input("namePrefix")]
        public Input<string>? NamePrefix { get; set; }

        /// <summary>
        /// Instruct this provider to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. This is normally not needed, however certain AWS services such as Elastic Map Reduce may automatically add required rules to security groups used with the service, and those rules may contain a cyclic dependency that prevent the security groups from being destroyed without removing the dependency first. Default `false`.
        /// </summary>
        [Input("revokeRulesOnDelete")]
        public Input<bool>? RevokeRulesOnDelete { get; set; }

        [Input("tags")]
        private InputMap<string>? _tags;

        /// <summary>
        /// Map of tags to assign to the resource.
        /// </summary>
        public InputMap<string> Tags
        {
            get => _tags ?? (_tags = new InputMap<string>());
            set => _tags = value;
        }

        /// <summary>
        /// VPC ID.
        /// </summary>
        [Input("vpcId")]
        public Input<string>? VpcId { get; set; }

        public SecurityGroupArgs()
        {
            Description = "Managed by Pulumi";
        }
    }
}
