github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/networkmanager/coreNetworkPolicyAttachment.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 networkmanager 5 6 import ( 7 "context" 8 "reflect" 9 10 "errors" 11 "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" 12 "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 13 ) 14 15 // Provides a Core Network Policy Attachment resource. This puts a Core Network Policy to an existing Core Network and executes the change set, which deploys changes globally based on the policy submitted (Sets the policy to `LIVE`). 16 // 17 // > **NOTE:** Deleting this resource will not delete the current policy defined in this resource. Deleting this resource will also not revert the current `LIVE` policy to the previous version. 18 // 19 // ## Example Usage 20 // 21 // ### Basic 22 // 23 // <!--Start PulumiCodeChooser --> 24 // ```go 25 // package main 26 // 27 // import ( 28 // 29 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkmanager" 30 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 31 // 32 // ) 33 // 34 // func main() { 35 // pulumi.Run(func(ctx *pulumi.Context) error { 36 // example, err := networkmanager.NewCoreNetwork(ctx, "example", &networkmanager.CoreNetworkArgs{ 37 // GlobalNetworkId: pulumi.Any(exampleAwsNetworkmanagerGlobalNetwork.Id), 38 // }) 39 // if err != nil { 40 // return err 41 // } 42 // _, err = networkmanager.NewCoreNetworkPolicyAttachment(ctx, "example", &networkmanager.CoreNetworkPolicyAttachmentArgs{ 43 // CoreNetworkId: example.ID(), 44 // PolicyDocument: pulumi.Any(exampleAwsNetworkmanagerCoreNetworkPolicyDocument.Json), 45 // }) 46 // if err != nil { 47 // return err 48 // } 49 // return nil 50 // }) 51 // } 52 // 53 // ``` 54 // <!--End PulumiCodeChooser --> 55 // 56 // ### With VPC Attachment (Single Region) 57 // 58 // The example below illustrates the scenario where your policy document has static routes pointing to VPC attachments and you want to attach your VPCs to the core network before applying the desired policy document. Set the `createBasePolicy` argument of the `networkmanager.CoreNetwork` resource to `true` if your core network does not currently have any `LIVE` policies (e.g. this is the first `pulumi up` with the core network resource), since a `LIVE` policy is required before VPCs can be attached to the core network. Otherwise, if your core network already has a `LIVE` policy, you may exclude the `createBasePolicy` argument. There are 2 options to implement this: 59 // 60 // - Option 1: Use the `basePolicyDocument` argument in the `networkmanager.CoreNetwork` resource that allows the most customizations to a base policy. Use this to customize the `edgeLocations` `asn`. In the example below, `us-west-2` and ASN `65500` are used in the base policy. 61 // - Option 2: Use the `createBasePolicy` argument only. This creates a base policy in the region specified in the `provider` block. 62 // 63 // ### Option 1 - using basePolicyDocument 64 // 65 // <!--Start PulumiCodeChooser --> 66 // ```go 67 // package main 68 // 69 // import ( 70 // 71 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkmanager" 72 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 73 // 74 // ) 75 // func main() { 76 // pulumi.Run(func(ctx *pulumi.Context) error { 77 // exampleGlobalNetwork, err := networkmanager.NewGlobalNetwork(ctx, "example", nil) 78 // if err != nil { 79 // return err 80 // } 81 // base, err := networkmanager.GetCoreNetworkPolicyDocument(ctx, &networkmanager.GetCoreNetworkPolicyDocumentArgs{ 82 // CoreNetworkConfigurations: []networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfiguration{ 83 // { 84 // AsnRanges: []string{ 85 // "65022-65534", 86 // }, 87 // EdgeLocations: []networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocation{ 88 // { 89 // Location: "us-west-2", 90 // Asn: pulumi.StringRef("65500"), 91 // }, 92 // }, 93 // }, 94 // }, 95 // Segments: []networkmanager.GetCoreNetworkPolicyDocumentSegment{ 96 // { 97 // Name: "segment", 98 // }, 99 // }, 100 // }, nil); 101 // if err != nil { 102 // return err 103 // } 104 // exampleCoreNetwork, err := networkmanager.NewCoreNetwork(ctx, "example", &networkmanager.CoreNetworkArgs{ 105 // GlobalNetworkId: exampleGlobalNetwork.ID(), 106 // BasePolicyDocument: pulumi.String(base.Json), 107 // CreateBasePolicy: pulumi.Bool(true), 108 // }) 109 // if err != nil { 110 // return err 111 // } 112 // var splat0 []interface{} 113 // for _, val0 := range exampleAwsSubnet { 114 // splat0 = append(splat0, val0.Arn) 115 // } 116 // exampleVpcAttachment, err := networkmanager.NewVpcAttachment(ctx, "example", &networkmanager.VpcAttachmentArgs{ 117 // CoreNetworkId: exampleCoreNetwork.ID(), 118 // SubnetArns: toPulumiArray(splat0), 119 // VpcArn: pulumi.Any(exampleAwsVpc.Arn), 120 // }) 121 // if err != nil { 122 // return err 123 // } 124 // example := networkmanager.GetCoreNetworkPolicyDocumentOutput(ctx, networkmanager.GetCoreNetworkPolicyDocumentOutputArgs{ 125 // CoreNetworkConfigurations: networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArray{ 126 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArgs{ 127 // AsnRanges: pulumi.StringArray{ 128 // pulumi.String("65022-65534"), 129 // }, 130 // EdgeLocations: networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArray{ 131 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArgs{ 132 // Location: pulumi.String("us-west-2"), 133 // Asn: pulumi.String("65500"), 134 // }, 135 // }, 136 // }, 137 // }, 138 // Segments: networkmanager.GetCoreNetworkPolicyDocumentSegmentArray{ 139 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentArgs{ 140 // Name: pulumi.String("segment"), 141 // }, 142 // }, 143 // SegmentActions: networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArray{ 144 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArgs{ 145 // Action: pulumi.String("create-route"), 146 // Segment: pulumi.String("segment"), 147 // DestinationCidrBlocks: pulumi.StringArray{ 148 // pulumi.String("0.0.0.0/0"), 149 // }, 150 // Destinations: pulumi.StringArray{ 151 // exampleVpcAttachment.ID(), 152 // }, 153 // }, 154 // }, 155 // }, nil); 156 // _, err = networkmanager.NewCoreNetworkPolicyAttachment(ctx, "example", &networkmanager.CoreNetworkPolicyAttachmentArgs{ 157 // CoreNetworkId: exampleCoreNetwork.ID(), 158 // PolicyDocument: example.ApplyT(func(example networkmanager.GetCoreNetworkPolicyDocumentResult) (*string, error) { 159 // return &example.Json, nil 160 // }).(pulumi.StringPtrOutput), 161 // }) 162 // if err != nil { 163 // return err 164 // } 165 // return nil 166 // }) 167 // } 168 // func toPulumiArray(arr []) pulumi.Array { 169 // var pulumiArr pulumi.Array 170 // for _, v := range arr { 171 // pulumiArr = append(pulumiArr, pulumi.(v)) 172 // } 173 // return pulumiArr 174 // } 175 // ``` 176 // <!--End PulumiCodeChooser --> 177 // 178 // ### Option 2 - createBasePolicy only 179 // 180 // <!--Start PulumiCodeChooser --> 181 // ```go 182 // package main 183 // 184 // import ( 185 // 186 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkmanager" 187 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 188 // 189 // ) 190 // func main() { 191 // pulumi.Run(func(ctx *pulumi.Context) error { 192 // exampleGlobalNetwork, err := networkmanager.NewGlobalNetwork(ctx, "example", nil) 193 // if err != nil { 194 // return err 195 // } 196 // exampleCoreNetwork, err := networkmanager.NewCoreNetwork(ctx, "example", &networkmanager.CoreNetworkArgs{ 197 // GlobalNetworkId: exampleGlobalNetwork.ID(), 198 // CreateBasePolicy: pulumi.Bool(true), 199 // }) 200 // if err != nil { 201 // return err 202 // } 203 // var splat0 []interface{} 204 // for _, val0 := range exampleAwsSubnet { 205 // splat0 = append(splat0, val0.Arn) 206 // } 207 // exampleVpcAttachment, err := networkmanager.NewVpcAttachment(ctx, "example", &networkmanager.VpcAttachmentArgs{ 208 // CoreNetworkId: exampleCoreNetwork.ID(), 209 // SubnetArns: toPulumiArray(splat0), 210 // VpcArn: pulumi.Any(exampleAwsVpc.Arn), 211 // }) 212 // if err != nil { 213 // return err 214 // } 215 // example := networkmanager.GetCoreNetworkPolicyDocumentOutput(ctx, networkmanager.GetCoreNetworkPolicyDocumentOutputArgs{ 216 // CoreNetworkConfigurations: networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArray{ 217 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArgs{ 218 // AsnRanges: pulumi.StringArray{ 219 // pulumi.String("65022-65534"), 220 // }, 221 // EdgeLocations: networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArray{ 222 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArgs{ 223 // Location: pulumi.String("us-west-2"), 224 // }, 225 // }, 226 // }, 227 // }, 228 // Segments: networkmanager.GetCoreNetworkPolicyDocumentSegmentArray{ 229 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentArgs{ 230 // Name: pulumi.String("segment"), 231 // }, 232 // }, 233 // SegmentActions: networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArray{ 234 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArgs{ 235 // Action: pulumi.String("create-route"), 236 // Segment: pulumi.String("segment"), 237 // DestinationCidrBlocks: pulumi.StringArray{ 238 // pulumi.String("0.0.0.0/0"), 239 // }, 240 // Destinations: pulumi.StringArray{ 241 // exampleVpcAttachment.ID(), 242 // }, 243 // }, 244 // }, 245 // }, nil); 246 // _, err = networkmanager.NewCoreNetworkPolicyAttachment(ctx, "example", &networkmanager.CoreNetworkPolicyAttachmentArgs{ 247 // CoreNetworkId: exampleCoreNetwork.ID(), 248 // PolicyDocument: example.ApplyT(func(example networkmanager.GetCoreNetworkPolicyDocumentResult) (*string, error) { 249 // return &example.Json, nil 250 // }).(pulumi.StringPtrOutput), 251 // }) 252 // if err != nil { 253 // return err 254 // } 255 // return nil 256 // }) 257 // } 258 // func toPulumiArray(arr []) pulumi.Array { 259 // var pulumiArr pulumi.Array 260 // for _, v := range arr { 261 // pulumiArr = append(pulumiArr, pulumi.(v)) 262 // } 263 // return pulumiArr 264 // } 265 // ``` 266 // <!--End PulumiCodeChooser --> 267 // 268 // ### With VPC Attachment (Multi-Region) 269 // 270 // The example below illustrates the scenario where your policy document has static routes pointing to VPC attachments and you want to attach your VPCs to the core network before applying the desired policy document. Set the `createBasePolicy` argument of the `networkmanager.CoreNetwork` resource to `true` if your core network does not currently have any `LIVE` policies (e.g. this is the first `pulumi up` with the core network resource), since a `LIVE` policy is required before VPCs can be attached to the core network. Otherwise, if your core network already has a `LIVE` policy, you may exclude the `createBasePolicy` argument. For multi-region in a core network that does not yet have a `LIVE` policy, there are 2 options: 271 // 272 // - Option 1: Use the `basePolicyDocument` argument that allows the most customizations to a base policy. Use this to customize the `edgeLocations` `asn`. In the example below, `us-west-2`, `us-east-1` and specific ASNs are used in the base policy. 273 // - Option 2: Pass a list of regions to the `networkmanager.CoreNetwork` resource `basePolicyRegions` argument. In the example below, `us-west-2` and `us-east-1` are specified in the base policy. 274 // 275 // ### Option 1 - using basePolicyDocument 276 // 277 // <!--Start PulumiCodeChooser --> 278 // ```go 279 // package main 280 // 281 // import ( 282 // 283 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkmanager" 284 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 285 // 286 // ) 287 // func main() { 288 // pulumi.Run(func(ctx *pulumi.Context) error { 289 // exampleGlobalNetwork, err := networkmanager.NewGlobalNetwork(ctx, "example", nil) 290 // if err != nil { 291 // return err 292 // } 293 // base, err := networkmanager.GetCoreNetworkPolicyDocument(ctx, &networkmanager.GetCoreNetworkPolicyDocumentArgs{ 294 // CoreNetworkConfigurations: []networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfiguration{ 295 // { 296 // AsnRanges: []string{ 297 // "65022-65534", 298 // }, 299 // EdgeLocations: []networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocation{ 300 // { 301 // Location: "us-west-2", 302 // Asn: pulumi.StringRef("65500"), 303 // }, 304 // { 305 // Location: "us-east-1", 306 // Asn: pulumi.StringRef("65501"), 307 // }, 308 // }, 309 // }, 310 // }, 311 // Segments: []networkmanager.GetCoreNetworkPolicyDocumentSegment{ 312 // { 313 // Name: "segment", 314 // }, 315 // }, 316 // }, nil); 317 // if err != nil { 318 // return err 319 // } 320 // exampleCoreNetwork, err := networkmanager.NewCoreNetwork(ctx, "example", &networkmanager.CoreNetworkArgs{ 321 // GlobalNetworkId: exampleGlobalNetwork.ID(), 322 // BasePolicyDocument: pulumi.String(base.Json), 323 // CreateBasePolicy: pulumi.Bool(true), 324 // }) 325 // if err != nil { 326 // return err 327 // } 328 // var splat0 []interface{} 329 // for _, val0 := range exampleUsWest2AwsSubnet { 330 // splat0 = append(splat0, val0.Arn) 331 // } 332 // exampleUsWest2, err := networkmanager.NewVpcAttachment(ctx, "example_us_west_2", &networkmanager.VpcAttachmentArgs{ 333 // CoreNetworkId: exampleCoreNetwork.ID(), 334 // SubnetArns: toPulumiArray(splat0), 335 // VpcArn: pulumi.Any(exampleUsWest2AwsVpc.Arn), 336 // }) 337 // if err != nil { 338 // return err 339 // } 340 // var splat1 []interface{} 341 // for _, val0 := range exampleUsEast1AwsSubnet { 342 // splat1 = append(splat1, val0.Arn) 343 // } 344 // exampleUsEast1, err := networkmanager.NewVpcAttachment(ctx, "example_us_east_1", &networkmanager.VpcAttachmentArgs{ 345 // CoreNetworkId: exampleCoreNetwork.ID(), 346 // SubnetArns: toPulumiArray(splat1), 347 // VpcArn: pulumi.Any(exampleUsEast1AwsVpc.Arn), 348 // }) 349 // if err != nil { 350 // return err 351 // } 352 // example := networkmanager.GetCoreNetworkPolicyDocumentOutput(ctx, networkmanager.GetCoreNetworkPolicyDocumentOutputArgs{ 353 // CoreNetworkConfigurations: networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArray{ 354 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArgs{ 355 // AsnRanges: pulumi.StringArray{ 356 // pulumi.String("65022-65534"), 357 // }, 358 // EdgeLocations: networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArray{ 359 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArgs{ 360 // Location: pulumi.String("us-west-2"), 361 // Asn: pulumi.String("65500"), 362 // }, 363 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArgs{ 364 // Location: pulumi.String("us-east-1"), 365 // Asn: pulumi.String("65501"), 366 // }, 367 // }, 368 // }, 369 // }, 370 // Segments: networkmanager.GetCoreNetworkPolicyDocumentSegmentArray{ 371 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentArgs{ 372 // Name: pulumi.String("segment"), 373 // }, 374 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentArgs{ 375 // Name: pulumi.String("segment2"), 376 // }, 377 // }, 378 // SegmentActions: networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArray{ 379 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArgs{ 380 // Action: pulumi.String("create-route"), 381 // Segment: pulumi.String("segment"), 382 // DestinationCidrBlocks: pulumi.StringArray{ 383 // pulumi.String("10.0.0.0/16"), 384 // }, 385 // Destinations: pulumi.StringArray{ 386 // exampleUsWest2.ID(), 387 // }, 388 // }, 389 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArgs{ 390 // Action: pulumi.String("create-route"), 391 // Segment: pulumi.String("segment"), 392 // DestinationCidrBlocks: pulumi.StringArray{ 393 // pulumi.String("10.1.0.0/16"), 394 // }, 395 // Destinations: pulumi.StringArray{ 396 // exampleUsEast1.ID(), 397 // }, 398 // }, 399 // }, 400 // }, nil); 401 // _, err = networkmanager.NewCoreNetworkPolicyAttachment(ctx, "example", &networkmanager.CoreNetworkPolicyAttachmentArgs{ 402 // CoreNetworkId: exampleCoreNetwork.ID(), 403 // PolicyDocument: example.ApplyT(func(example networkmanager.GetCoreNetworkPolicyDocumentResult) (*string, error) { 404 // return &example.Json, nil 405 // }).(pulumi.StringPtrOutput), 406 // }) 407 // if err != nil { 408 // return err 409 // } 410 // return nil 411 // }) 412 // } 413 // func toPulumiArray(arr []) pulumi.Array { 414 // var pulumiArr pulumi.Array 415 // for _, v := range arr { 416 // pulumiArr = append(pulumiArr, pulumi.(v)) 417 // } 418 // return pulumiArr 419 // } 420 // ``` 421 // <!--End PulumiCodeChooser --> 422 // 423 // ### Option 2 - using basePolicyRegions 424 // 425 // <!--Start PulumiCodeChooser --> 426 // ```go 427 // package main 428 // 429 // import ( 430 // 431 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkmanager" 432 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 433 // 434 // ) 435 // func main() { 436 // pulumi.Run(func(ctx *pulumi.Context) error { 437 // exampleGlobalNetwork, err := networkmanager.NewGlobalNetwork(ctx, "example", nil) 438 // if err != nil { 439 // return err 440 // } 441 // exampleCoreNetwork, err := networkmanager.NewCoreNetwork(ctx, "example", &networkmanager.CoreNetworkArgs{ 442 // GlobalNetworkId: exampleGlobalNetwork.ID(), 443 // BasePolicyRegions: pulumi.StringArray{ 444 // pulumi.String("us-west-2"), 445 // pulumi.String("us-east-1"), 446 // }, 447 // CreateBasePolicy: pulumi.Bool(true), 448 // }) 449 // if err != nil { 450 // return err 451 // } 452 // var splat0 []interface{} 453 // for _, val0 := range exampleUsWest2AwsSubnet { 454 // splat0 = append(splat0, val0.Arn) 455 // } 456 // exampleUsWest2, err := networkmanager.NewVpcAttachment(ctx, "example_us_west_2", &networkmanager.VpcAttachmentArgs{ 457 // CoreNetworkId: exampleCoreNetwork.ID(), 458 // SubnetArns: toPulumiArray(splat0), 459 // VpcArn: pulumi.Any(exampleUsWest2AwsVpc.Arn), 460 // }) 461 // if err != nil { 462 // return err 463 // } 464 // var splat1 []interface{} 465 // for _, val0 := range exampleUsEast1AwsSubnet { 466 // splat1 = append(splat1, val0.Arn) 467 // } 468 // exampleUsEast1, err := networkmanager.NewVpcAttachment(ctx, "example_us_east_1", &networkmanager.VpcAttachmentArgs{ 469 // CoreNetworkId: exampleCoreNetwork.ID(), 470 // SubnetArns: toPulumiArray(splat1), 471 // VpcArn: pulumi.Any(exampleUsEast1AwsVpc.Arn), 472 // }) 473 // if err != nil { 474 // return err 475 // } 476 // example := networkmanager.GetCoreNetworkPolicyDocumentOutput(ctx, networkmanager.GetCoreNetworkPolicyDocumentOutputArgs{ 477 // CoreNetworkConfigurations: networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArray{ 478 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationArgs{ 479 // AsnRanges: pulumi.StringArray{ 480 // pulumi.String("65022-65534"), 481 // }, 482 // EdgeLocations: networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArray{ 483 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArgs{ 484 // Location: pulumi.String("us-west-2"), 485 // }, 486 // &networkmanager.GetCoreNetworkPolicyDocumentCoreNetworkConfigurationEdgeLocationArgs{ 487 // Location: pulumi.String("us-east-1"), 488 // }, 489 // }, 490 // }, 491 // }, 492 // Segments: networkmanager.GetCoreNetworkPolicyDocumentSegmentArray{ 493 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentArgs{ 494 // Name: pulumi.String("segment"), 495 // }, 496 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentArgs{ 497 // Name: pulumi.String("segment2"), 498 // }, 499 // }, 500 // SegmentActions: networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArray{ 501 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArgs{ 502 // Action: pulumi.String("create-route"), 503 // Segment: pulumi.String("segment"), 504 // DestinationCidrBlocks: pulumi.StringArray{ 505 // pulumi.String("10.0.0.0/16"), 506 // }, 507 // Destinations: pulumi.StringArray{ 508 // exampleUsWest2.ID(), 509 // }, 510 // }, 511 // &networkmanager.GetCoreNetworkPolicyDocumentSegmentActionArgs{ 512 // Action: pulumi.String("create-route"), 513 // Segment: pulumi.String("segment"), 514 // DestinationCidrBlocks: pulumi.StringArray{ 515 // pulumi.String("10.1.0.0/16"), 516 // }, 517 // Destinations: pulumi.StringArray{ 518 // exampleUsEast1.ID(), 519 // }, 520 // }, 521 // }, 522 // }, nil); 523 // _, err = networkmanager.NewCoreNetworkPolicyAttachment(ctx, "example", &networkmanager.CoreNetworkPolicyAttachmentArgs{ 524 // CoreNetworkId: exampleCoreNetwork.ID(), 525 // PolicyDocument: example.ApplyT(func(example networkmanager.GetCoreNetworkPolicyDocumentResult) (*string, error) { 526 // return &example.Json, nil 527 // }).(pulumi.StringPtrOutput), 528 // }) 529 // if err != nil { 530 // return err 531 // } 532 // return nil 533 // }) 534 // } 535 // func toPulumiArray(arr []) pulumi.Array { 536 // var pulumiArr pulumi.Array 537 // for _, v := range arr { 538 // pulumiArr = append(pulumiArr, pulumi.(v)) 539 // } 540 // return pulumiArr 541 // } 542 // ``` 543 // <!--End PulumiCodeChooser --> 544 // 545 // ## Import 546 // 547 // Using `pulumi import`, import `aws_networkmanager_core_network_policy_attachment` using the core network ID. For example: 548 // 549 // ```sh 550 // $ pulumi import aws:networkmanager/coreNetworkPolicyAttachment:CoreNetworkPolicyAttachment example core-network-0d47f6t230mz46dy4 551 // ``` 552 type CoreNetworkPolicyAttachment struct { 553 pulumi.CustomResourceState 554 555 // The ID of the core network that a policy will be attached to and made `LIVE`. 556 CoreNetworkId pulumi.StringOutput `pulumi:"coreNetworkId"` 557 // Policy document for creating a core network. Note that updating this argument will result in the new policy document version being set as the `LATEST` and `LIVE` policy document. Refer to the [Core network policies documentation](https://docs.aws.amazon.com/network-manager/latest/cloudwan/cloudwan-policy-change-sets.html) for more information. 558 PolicyDocument pulumi.StringOutput `pulumi:"policyDocument"` 559 // Current state of a core network. 560 State pulumi.StringOutput `pulumi:"state"` 561 } 562 563 // NewCoreNetworkPolicyAttachment registers a new resource with the given unique name, arguments, and options. 564 func NewCoreNetworkPolicyAttachment(ctx *pulumi.Context, 565 name string, args *CoreNetworkPolicyAttachmentArgs, opts ...pulumi.ResourceOption) (*CoreNetworkPolicyAttachment, error) { 566 if args == nil { 567 return nil, errors.New("missing one or more required arguments") 568 } 569 570 if args.CoreNetworkId == nil { 571 return nil, errors.New("invalid value for required argument 'CoreNetworkId'") 572 } 573 if args.PolicyDocument == nil { 574 return nil, errors.New("invalid value for required argument 'PolicyDocument'") 575 } 576 opts = internal.PkgResourceDefaultOpts(opts) 577 var resource CoreNetworkPolicyAttachment 578 err := ctx.RegisterResource("aws:networkmanager/coreNetworkPolicyAttachment:CoreNetworkPolicyAttachment", name, args, &resource, opts...) 579 if err != nil { 580 return nil, err 581 } 582 return &resource, nil 583 } 584 585 // GetCoreNetworkPolicyAttachment gets an existing CoreNetworkPolicyAttachment resource's state with the given name, ID, and optional 586 // state properties that are used to uniquely qualify the lookup (nil if not required). 587 func GetCoreNetworkPolicyAttachment(ctx *pulumi.Context, 588 name string, id pulumi.IDInput, state *CoreNetworkPolicyAttachmentState, opts ...pulumi.ResourceOption) (*CoreNetworkPolicyAttachment, error) { 589 var resource CoreNetworkPolicyAttachment 590 err := ctx.ReadResource("aws:networkmanager/coreNetworkPolicyAttachment:CoreNetworkPolicyAttachment", name, id, state, &resource, opts...) 591 if err != nil { 592 return nil, err 593 } 594 return &resource, nil 595 } 596 597 // Input properties used for looking up and filtering CoreNetworkPolicyAttachment resources. 598 type coreNetworkPolicyAttachmentState struct { 599 // The ID of the core network that a policy will be attached to and made `LIVE`. 600 CoreNetworkId *string `pulumi:"coreNetworkId"` 601 // Policy document for creating a core network. Note that updating this argument will result in the new policy document version being set as the `LATEST` and `LIVE` policy document. Refer to the [Core network policies documentation](https://docs.aws.amazon.com/network-manager/latest/cloudwan/cloudwan-policy-change-sets.html) for more information. 602 PolicyDocument *string `pulumi:"policyDocument"` 603 // Current state of a core network. 604 State *string `pulumi:"state"` 605 } 606 607 type CoreNetworkPolicyAttachmentState struct { 608 // The ID of the core network that a policy will be attached to and made `LIVE`. 609 CoreNetworkId pulumi.StringPtrInput 610 // Policy document for creating a core network. Note that updating this argument will result in the new policy document version being set as the `LATEST` and `LIVE` policy document. Refer to the [Core network policies documentation](https://docs.aws.amazon.com/network-manager/latest/cloudwan/cloudwan-policy-change-sets.html) for more information. 611 PolicyDocument pulumi.StringPtrInput 612 // Current state of a core network. 613 State pulumi.StringPtrInput 614 } 615 616 func (CoreNetworkPolicyAttachmentState) ElementType() reflect.Type { 617 return reflect.TypeOf((*coreNetworkPolicyAttachmentState)(nil)).Elem() 618 } 619 620 type coreNetworkPolicyAttachmentArgs struct { 621 // The ID of the core network that a policy will be attached to and made `LIVE`. 622 CoreNetworkId string `pulumi:"coreNetworkId"` 623 // Policy document for creating a core network. Note that updating this argument will result in the new policy document version being set as the `LATEST` and `LIVE` policy document. Refer to the [Core network policies documentation](https://docs.aws.amazon.com/network-manager/latest/cloudwan/cloudwan-policy-change-sets.html) for more information. 624 PolicyDocument string `pulumi:"policyDocument"` 625 } 626 627 // The set of arguments for constructing a CoreNetworkPolicyAttachment resource. 628 type CoreNetworkPolicyAttachmentArgs struct { 629 // The ID of the core network that a policy will be attached to and made `LIVE`. 630 CoreNetworkId pulumi.StringInput 631 // Policy document for creating a core network. Note that updating this argument will result in the new policy document version being set as the `LATEST` and `LIVE` policy document. Refer to the [Core network policies documentation](https://docs.aws.amazon.com/network-manager/latest/cloudwan/cloudwan-policy-change-sets.html) for more information. 632 PolicyDocument pulumi.StringInput 633 } 634 635 func (CoreNetworkPolicyAttachmentArgs) ElementType() reflect.Type { 636 return reflect.TypeOf((*coreNetworkPolicyAttachmentArgs)(nil)).Elem() 637 } 638 639 type CoreNetworkPolicyAttachmentInput interface { 640 pulumi.Input 641 642 ToCoreNetworkPolicyAttachmentOutput() CoreNetworkPolicyAttachmentOutput 643 ToCoreNetworkPolicyAttachmentOutputWithContext(ctx context.Context) CoreNetworkPolicyAttachmentOutput 644 } 645 646 func (*CoreNetworkPolicyAttachment) ElementType() reflect.Type { 647 return reflect.TypeOf((**CoreNetworkPolicyAttachment)(nil)).Elem() 648 } 649 650 func (i *CoreNetworkPolicyAttachment) ToCoreNetworkPolicyAttachmentOutput() CoreNetworkPolicyAttachmentOutput { 651 return i.ToCoreNetworkPolicyAttachmentOutputWithContext(context.Background()) 652 } 653 654 func (i *CoreNetworkPolicyAttachment) ToCoreNetworkPolicyAttachmentOutputWithContext(ctx context.Context) CoreNetworkPolicyAttachmentOutput { 655 return pulumi.ToOutputWithContext(ctx, i).(CoreNetworkPolicyAttachmentOutput) 656 } 657 658 // CoreNetworkPolicyAttachmentArrayInput is an input type that accepts CoreNetworkPolicyAttachmentArray and CoreNetworkPolicyAttachmentArrayOutput values. 659 // You can construct a concrete instance of `CoreNetworkPolicyAttachmentArrayInput` via: 660 // 661 // CoreNetworkPolicyAttachmentArray{ CoreNetworkPolicyAttachmentArgs{...} } 662 type CoreNetworkPolicyAttachmentArrayInput interface { 663 pulumi.Input 664 665 ToCoreNetworkPolicyAttachmentArrayOutput() CoreNetworkPolicyAttachmentArrayOutput 666 ToCoreNetworkPolicyAttachmentArrayOutputWithContext(context.Context) CoreNetworkPolicyAttachmentArrayOutput 667 } 668 669 type CoreNetworkPolicyAttachmentArray []CoreNetworkPolicyAttachmentInput 670 671 func (CoreNetworkPolicyAttachmentArray) ElementType() reflect.Type { 672 return reflect.TypeOf((*[]*CoreNetworkPolicyAttachment)(nil)).Elem() 673 } 674 675 func (i CoreNetworkPolicyAttachmentArray) ToCoreNetworkPolicyAttachmentArrayOutput() CoreNetworkPolicyAttachmentArrayOutput { 676 return i.ToCoreNetworkPolicyAttachmentArrayOutputWithContext(context.Background()) 677 } 678 679 func (i CoreNetworkPolicyAttachmentArray) ToCoreNetworkPolicyAttachmentArrayOutputWithContext(ctx context.Context) CoreNetworkPolicyAttachmentArrayOutput { 680 return pulumi.ToOutputWithContext(ctx, i).(CoreNetworkPolicyAttachmentArrayOutput) 681 } 682 683 // CoreNetworkPolicyAttachmentMapInput is an input type that accepts CoreNetworkPolicyAttachmentMap and CoreNetworkPolicyAttachmentMapOutput values. 684 // You can construct a concrete instance of `CoreNetworkPolicyAttachmentMapInput` via: 685 // 686 // CoreNetworkPolicyAttachmentMap{ "key": CoreNetworkPolicyAttachmentArgs{...} } 687 type CoreNetworkPolicyAttachmentMapInput interface { 688 pulumi.Input 689 690 ToCoreNetworkPolicyAttachmentMapOutput() CoreNetworkPolicyAttachmentMapOutput 691 ToCoreNetworkPolicyAttachmentMapOutputWithContext(context.Context) CoreNetworkPolicyAttachmentMapOutput 692 } 693 694 type CoreNetworkPolicyAttachmentMap map[string]CoreNetworkPolicyAttachmentInput 695 696 func (CoreNetworkPolicyAttachmentMap) ElementType() reflect.Type { 697 return reflect.TypeOf((*map[string]*CoreNetworkPolicyAttachment)(nil)).Elem() 698 } 699 700 func (i CoreNetworkPolicyAttachmentMap) ToCoreNetworkPolicyAttachmentMapOutput() CoreNetworkPolicyAttachmentMapOutput { 701 return i.ToCoreNetworkPolicyAttachmentMapOutputWithContext(context.Background()) 702 } 703 704 func (i CoreNetworkPolicyAttachmentMap) ToCoreNetworkPolicyAttachmentMapOutputWithContext(ctx context.Context) CoreNetworkPolicyAttachmentMapOutput { 705 return pulumi.ToOutputWithContext(ctx, i).(CoreNetworkPolicyAttachmentMapOutput) 706 } 707 708 type CoreNetworkPolicyAttachmentOutput struct{ *pulumi.OutputState } 709 710 func (CoreNetworkPolicyAttachmentOutput) ElementType() reflect.Type { 711 return reflect.TypeOf((**CoreNetworkPolicyAttachment)(nil)).Elem() 712 } 713 714 func (o CoreNetworkPolicyAttachmentOutput) ToCoreNetworkPolicyAttachmentOutput() CoreNetworkPolicyAttachmentOutput { 715 return o 716 } 717 718 func (o CoreNetworkPolicyAttachmentOutput) ToCoreNetworkPolicyAttachmentOutputWithContext(ctx context.Context) CoreNetworkPolicyAttachmentOutput { 719 return o 720 } 721 722 // The ID of the core network that a policy will be attached to and made `LIVE`. 723 func (o CoreNetworkPolicyAttachmentOutput) CoreNetworkId() pulumi.StringOutput { 724 return o.ApplyT(func(v *CoreNetworkPolicyAttachment) pulumi.StringOutput { return v.CoreNetworkId }).(pulumi.StringOutput) 725 } 726 727 // Policy document for creating a core network. Note that updating this argument will result in the new policy document version being set as the `LATEST` and `LIVE` policy document. Refer to the [Core network policies documentation](https://docs.aws.amazon.com/network-manager/latest/cloudwan/cloudwan-policy-change-sets.html) for more information. 728 func (o CoreNetworkPolicyAttachmentOutput) PolicyDocument() pulumi.StringOutput { 729 return o.ApplyT(func(v *CoreNetworkPolicyAttachment) pulumi.StringOutput { return v.PolicyDocument }).(pulumi.StringOutput) 730 } 731 732 // Current state of a core network. 733 func (o CoreNetworkPolicyAttachmentOutput) State() pulumi.StringOutput { 734 return o.ApplyT(func(v *CoreNetworkPolicyAttachment) pulumi.StringOutput { return v.State }).(pulumi.StringOutput) 735 } 736 737 type CoreNetworkPolicyAttachmentArrayOutput struct{ *pulumi.OutputState } 738 739 func (CoreNetworkPolicyAttachmentArrayOutput) ElementType() reflect.Type { 740 return reflect.TypeOf((*[]*CoreNetworkPolicyAttachment)(nil)).Elem() 741 } 742 743 func (o CoreNetworkPolicyAttachmentArrayOutput) ToCoreNetworkPolicyAttachmentArrayOutput() CoreNetworkPolicyAttachmentArrayOutput { 744 return o 745 } 746 747 func (o CoreNetworkPolicyAttachmentArrayOutput) ToCoreNetworkPolicyAttachmentArrayOutputWithContext(ctx context.Context) CoreNetworkPolicyAttachmentArrayOutput { 748 return o 749 } 750 751 func (o CoreNetworkPolicyAttachmentArrayOutput) Index(i pulumi.IntInput) CoreNetworkPolicyAttachmentOutput { 752 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *CoreNetworkPolicyAttachment { 753 return vs[0].([]*CoreNetworkPolicyAttachment)[vs[1].(int)] 754 }).(CoreNetworkPolicyAttachmentOutput) 755 } 756 757 type CoreNetworkPolicyAttachmentMapOutput struct{ *pulumi.OutputState } 758 759 func (CoreNetworkPolicyAttachmentMapOutput) ElementType() reflect.Type { 760 return reflect.TypeOf((*map[string]*CoreNetworkPolicyAttachment)(nil)).Elem() 761 } 762 763 func (o CoreNetworkPolicyAttachmentMapOutput) ToCoreNetworkPolicyAttachmentMapOutput() CoreNetworkPolicyAttachmentMapOutput { 764 return o 765 } 766 767 func (o CoreNetworkPolicyAttachmentMapOutput) ToCoreNetworkPolicyAttachmentMapOutputWithContext(ctx context.Context) CoreNetworkPolicyAttachmentMapOutput { 768 return o 769 } 770 771 func (o CoreNetworkPolicyAttachmentMapOutput) MapIndex(k pulumi.StringInput) CoreNetworkPolicyAttachmentOutput { 772 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *CoreNetworkPolicyAttachment { 773 return vs[0].(map[string]*CoreNetworkPolicyAttachment)[vs[1].(string)] 774 }).(CoreNetworkPolicyAttachmentOutput) 775 } 776 777 func init() { 778 pulumi.RegisterInputType(reflect.TypeOf((*CoreNetworkPolicyAttachmentInput)(nil)).Elem(), &CoreNetworkPolicyAttachment{}) 779 pulumi.RegisterInputType(reflect.TypeOf((*CoreNetworkPolicyAttachmentArrayInput)(nil)).Elem(), CoreNetworkPolicyAttachmentArray{}) 780 pulumi.RegisterInputType(reflect.TypeOf((*CoreNetworkPolicyAttachmentMapInput)(nil)).Elem(), CoreNetworkPolicyAttachmentMap{}) 781 pulumi.RegisterOutputType(CoreNetworkPolicyAttachmentOutput{}) 782 pulumi.RegisterOutputType(CoreNetworkPolicyAttachmentArrayOutput{}) 783 pulumi.RegisterOutputType(CoreNetworkPolicyAttachmentMapOutput{}) 784 }