Package com.pulumi.aws.ec2
Class VpcSecurityGroupRulesExclusive
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.ec2.VpcSecurityGroupRulesExclusive
-
public class VpcSecurityGroupRulesExclusive extends com.pulumi.resources.CustomResourceResource for managing an exclusive set of AWS VPC Security Group Rules. This resource manages the complete set of ingress and egress rules assigned to a security group. It provides exclusive control by removing any rules not explicitly defined in the configuration. > This resource takes exclusive ownership over ingress and egress rules assigned to a security group. This includes removal of rules which are not explicitly configured. To prevent persistent drift, ensure any `aws.vpc.SecurityGroupIngressRule` and `aws.vpc.SecurityGroupEgressRule` resources managed alongside this resource are included in the `ingressRuleIds` and `egressRuleIds` arguments. > Destruction of this resource means Terraform will no longer manage reconciliation of the configured security group rules. It **will not** revoke the configured rules from the security group. > When this resource detects a configured rule ID which must be created, a warning diagnostic is emitted. This is due to a limitation in the [`AuthorizeSecurityGroupEgress`](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AuthorizeSecurityGroupEgress.html) and [`AuthorizeSecurityGroupIngress`](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AuthorizeSecurityGroupIngress.html) APIs, which require the full rule definition to be provided rather than a reference to an existing rule ID. ## Example Usage ### Basic Usage
### Disallow All Rules To automatically remove any configured security group rules, set both `ingressRuleIds` and `egressRuleIds` to empty lists. > This will not __prevent__ rules from being assigned to a security group via Terraform (or any other interface). This resource enables bringing security group rule assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run.package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.Vpc; import com.pulumi.aws.ec2.VpcArgs; import com.pulumi.aws.ec2.SecurityGroup; import com.pulumi.aws.ec2.SecurityGroupArgs; import com.pulumi.aws.vpc.SecurityGroupIngressRule; import com.pulumi.aws.vpc.SecurityGroupIngressRuleArgs; import com.pulumi.aws.vpc.SecurityGroupEgressRule; import com.pulumi.aws.vpc.SecurityGroupEgressRuleArgs; import com.pulumi.aws.ec2.VpcSecurityGroupRulesExclusive; import com.pulumi.aws.ec2.VpcSecurityGroupRulesExclusiveArgs; 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) { var example = new Vpc("example", VpcArgs.builder() .cidrBlock("10.0.0.0/16") .build()); var exampleSecurityGroup = new SecurityGroup("exampleSecurityGroup", SecurityGroupArgs.builder() .name("example") .vpcId(example.id()) .build()); var exampleSecurityGroupIngressRule = new SecurityGroupIngressRule("exampleSecurityGroupIngressRule", SecurityGroupIngressRuleArgs.builder() .securityGroupId(exampleSecurityGroup.id()) .cidrIpv4("10.0.0.0/8") .fromPort(80) .toPort(80) .ipProtocol("tcp") .build()); var exampleSecurityGroupEgressRule = new SecurityGroupEgressRule("exampleSecurityGroupEgressRule", SecurityGroupEgressRuleArgs.builder() .securityGroupId(exampleSecurityGroup.id()) .cidrIpv4("0.0.0.0/0") .ipProtocol("-1") .build()); var exampleVpcSecurityGroupRulesExclusive = new VpcSecurityGroupRulesExclusive("exampleVpcSecurityGroupRulesExclusive", VpcSecurityGroupRulesExclusiveArgs.builder() .securityGroupId(exampleSecurityGroup.id()) .ingressRuleIds(exampleSecurityGroupIngressRule.id()) .egressRuleIds(exampleSecurityGroupEgressRule.id()) .build()); } }
## Import Using `pulumi import`, import exclusive management of security group rules using the `securityGroupId`. For example: ```sh $ pulumi import aws:ec2/vpcSecurityGroupRulesExclusive:VpcSecurityGroupRulesExclusive example sg-1234567890abcdef0 ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.VpcSecurityGroupRulesExclusive; import com.pulumi.aws.ec2.VpcSecurityGroupRulesExclusiveArgs; 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) { var example = new VpcSecurityGroupRulesExclusive("example", VpcSecurityGroupRulesExclusiveArgs.builder() .securityGroupId(exampleAwsSecurityGroup.id()) .ingressRuleIds() .egressRuleIds() .build()); } }
-
-
Constructor Summary
Constructors Constructor Description VpcSecurityGroupRulesExclusive(java.lang.String name)VpcSecurityGroupRulesExclusive(java.lang.String name, VpcSecurityGroupRulesExclusiveArgs args)VpcSecurityGroupRulesExclusive(java.lang.String name, VpcSecurityGroupRulesExclusiveArgs 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.util.List<java.lang.String>>egressRuleIds()static VpcSecurityGroupRulesExclusiveget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, VpcSecurityGroupRulesExclusiveState 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.util.List<java.lang.String>>ingressRuleIds()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.lang.String>securityGroupId()
-
-
-
Constructor Detail
-
VpcSecurityGroupRulesExclusive
public VpcSecurityGroupRulesExclusive(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
VpcSecurityGroupRulesExclusive
public VpcSecurityGroupRulesExclusive(java.lang.String name, VpcSecurityGroupRulesExclusiveArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
VpcSecurityGroupRulesExclusive
public VpcSecurityGroupRulesExclusive(java.lang.String name, VpcSecurityGroupRulesExclusiveArgs 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
-
egressRuleIds
public com.pulumi.core.Output<java.util.List<java.lang.String>> egressRuleIds()
- Returns:
- Egress rule IDs.
-
ingressRuleIds
public com.pulumi.core.Output<java.util.List<java.lang.String>> ingressRuleIds()
- Returns:
- Ingress rule IDs.
-
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.
-
securityGroupId
public com.pulumi.core.Output<java.lang.String> securityGroupId()
- Returns:
- ID of the security group.
-
get
public static VpcSecurityGroupRulesExclusive get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable VpcSecurityGroupRulesExclusiveState 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.
-
-