github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/shield/drtAccessRoleArnAssociation.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 shield 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 // Authorizes the Shield Response Team (SRT) using the specified role, to access your AWS account to assist with DDoS attack mitigation during potential attacks. 16 // For more information see [Configure AWS SRT Support](https://docs.aws.amazon.com/waf/latest/developerguide/authorize-srt.html) 17 // 18 // ## Example Usage 19 // 20 // ### Basic Usage 21 // 22 // <!--Start PulumiCodeChooser --> 23 // ```go 24 // package main 25 // 26 // import ( 27 // 28 // "encoding/json" 29 // 30 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 31 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/shield" 32 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 33 // 34 // ) 35 // 36 // func main() { 37 // pulumi.Run(func(ctx *pulumi.Context) error { 38 // tmpJSON0, err := json.Marshal(map[string]interface{}{ 39 // "Version": "2012-10-17", 40 // "Statement": []map[string]interface{}{ 41 // map[string]interface{}{ 42 // "Sid": "", 43 // "Effect": "Allow", 44 // "Principal": map[string]interface{}{ 45 // "Service": "drt.shield.amazonaws.com", 46 // }, 47 // "Action": "sts:AssumeRole", 48 // }, 49 // }, 50 // }) 51 // if err != nil { 52 // return err 53 // } 54 // json0 := string(tmpJSON0) 55 // test, err := iam.NewRole(ctx, "test", &iam.RoleArgs{ 56 // Name: pulumi.Any(awsShieldDrtAccessRoleArn), 57 // AssumeRolePolicy: pulumi.String(json0), 58 // }) 59 // if err != nil { 60 // return err 61 // } 62 // _, err = iam.NewRolePolicyAttachment(ctx, "test", &iam.RolePolicyAttachmentArgs{ 63 // Role: test.Name, 64 // PolicyArn: pulumi.String("arn:aws:iam::aws:policy/service-role/AWSShieldDRTAccessPolicy"), 65 // }) 66 // if err != nil { 67 // return err 68 // } 69 // _, err = shield.NewDrtAccessRoleArnAssociation(ctx, "test", &shield.DrtAccessRoleArnAssociationArgs{ 70 // RoleArn: test.Arn, 71 // }) 72 // if err != nil { 73 // return err 74 // } 75 // return nil 76 // }) 77 // } 78 // 79 // ``` 80 // <!--End PulumiCodeChooser --> 81 // 82 // ## Import 83 // 84 // Using `pulumi import`, import Shield DRT access role ARN association using the AWS account ID. For example: 85 // 86 // ```sh 87 // $ pulumi import aws:shield/drtAccessRoleArnAssociation:DrtAccessRoleArnAssociation example 123456789012 88 // ``` 89 type DrtAccessRoleArnAssociation struct { 90 pulumi.CustomResourceState 91 92 // The Amazon Resource Name (ARN) of the role the SRT will use to access your AWS account. Prior to making the AssociateDRTRole request, you must attach the `AWSShieldDRTAccessPolicy` managed policy to this role. 93 RoleArn pulumi.StringOutput `pulumi:"roleArn"` 94 Timeouts DrtAccessRoleArnAssociationTimeoutsPtrOutput `pulumi:"timeouts"` 95 } 96 97 // NewDrtAccessRoleArnAssociation registers a new resource with the given unique name, arguments, and options. 98 func NewDrtAccessRoleArnAssociation(ctx *pulumi.Context, 99 name string, args *DrtAccessRoleArnAssociationArgs, opts ...pulumi.ResourceOption) (*DrtAccessRoleArnAssociation, error) { 100 if args == nil { 101 return nil, errors.New("missing one or more required arguments") 102 } 103 104 if args.RoleArn == nil { 105 return nil, errors.New("invalid value for required argument 'RoleArn'") 106 } 107 opts = internal.PkgResourceDefaultOpts(opts) 108 var resource DrtAccessRoleArnAssociation 109 err := ctx.RegisterResource("aws:shield/drtAccessRoleArnAssociation:DrtAccessRoleArnAssociation", name, args, &resource, opts...) 110 if err != nil { 111 return nil, err 112 } 113 return &resource, nil 114 } 115 116 // GetDrtAccessRoleArnAssociation gets an existing DrtAccessRoleArnAssociation resource's state with the given name, ID, and optional 117 // state properties that are used to uniquely qualify the lookup (nil if not required). 118 func GetDrtAccessRoleArnAssociation(ctx *pulumi.Context, 119 name string, id pulumi.IDInput, state *DrtAccessRoleArnAssociationState, opts ...pulumi.ResourceOption) (*DrtAccessRoleArnAssociation, error) { 120 var resource DrtAccessRoleArnAssociation 121 err := ctx.ReadResource("aws:shield/drtAccessRoleArnAssociation:DrtAccessRoleArnAssociation", name, id, state, &resource, opts...) 122 if err != nil { 123 return nil, err 124 } 125 return &resource, nil 126 } 127 128 // Input properties used for looking up and filtering DrtAccessRoleArnAssociation resources. 129 type drtAccessRoleArnAssociationState struct { 130 // The Amazon Resource Name (ARN) of the role the SRT will use to access your AWS account. Prior to making the AssociateDRTRole request, you must attach the `AWSShieldDRTAccessPolicy` managed policy to this role. 131 RoleArn *string `pulumi:"roleArn"` 132 Timeouts *DrtAccessRoleArnAssociationTimeouts `pulumi:"timeouts"` 133 } 134 135 type DrtAccessRoleArnAssociationState struct { 136 // The Amazon Resource Name (ARN) of the role the SRT will use to access your AWS account. Prior to making the AssociateDRTRole request, you must attach the `AWSShieldDRTAccessPolicy` managed policy to this role. 137 RoleArn pulumi.StringPtrInput 138 Timeouts DrtAccessRoleArnAssociationTimeoutsPtrInput 139 } 140 141 func (DrtAccessRoleArnAssociationState) ElementType() reflect.Type { 142 return reflect.TypeOf((*drtAccessRoleArnAssociationState)(nil)).Elem() 143 } 144 145 type drtAccessRoleArnAssociationArgs struct { 146 // The Amazon Resource Name (ARN) of the role the SRT will use to access your AWS account. Prior to making the AssociateDRTRole request, you must attach the `AWSShieldDRTAccessPolicy` managed policy to this role. 147 RoleArn string `pulumi:"roleArn"` 148 Timeouts *DrtAccessRoleArnAssociationTimeouts `pulumi:"timeouts"` 149 } 150 151 // The set of arguments for constructing a DrtAccessRoleArnAssociation resource. 152 type DrtAccessRoleArnAssociationArgs struct { 153 // The Amazon Resource Name (ARN) of the role the SRT will use to access your AWS account. Prior to making the AssociateDRTRole request, you must attach the `AWSShieldDRTAccessPolicy` managed policy to this role. 154 RoleArn pulumi.StringInput 155 Timeouts DrtAccessRoleArnAssociationTimeoutsPtrInput 156 } 157 158 func (DrtAccessRoleArnAssociationArgs) ElementType() reflect.Type { 159 return reflect.TypeOf((*drtAccessRoleArnAssociationArgs)(nil)).Elem() 160 } 161 162 type DrtAccessRoleArnAssociationInput interface { 163 pulumi.Input 164 165 ToDrtAccessRoleArnAssociationOutput() DrtAccessRoleArnAssociationOutput 166 ToDrtAccessRoleArnAssociationOutputWithContext(ctx context.Context) DrtAccessRoleArnAssociationOutput 167 } 168 169 func (*DrtAccessRoleArnAssociation) ElementType() reflect.Type { 170 return reflect.TypeOf((**DrtAccessRoleArnAssociation)(nil)).Elem() 171 } 172 173 func (i *DrtAccessRoleArnAssociation) ToDrtAccessRoleArnAssociationOutput() DrtAccessRoleArnAssociationOutput { 174 return i.ToDrtAccessRoleArnAssociationOutputWithContext(context.Background()) 175 } 176 177 func (i *DrtAccessRoleArnAssociation) ToDrtAccessRoleArnAssociationOutputWithContext(ctx context.Context) DrtAccessRoleArnAssociationOutput { 178 return pulumi.ToOutputWithContext(ctx, i).(DrtAccessRoleArnAssociationOutput) 179 } 180 181 // DrtAccessRoleArnAssociationArrayInput is an input type that accepts DrtAccessRoleArnAssociationArray and DrtAccessRoleArnAssociationArrayOutput values. 182 // You can construct a concrete instance of `DrtAccessRoleArnAssociationArrayInput` via: 183 // 184 // DrtAccessRoleArnAssociationArray{ DrtAccessRoleArnAssociationArgs{...} } 185 type DrtAccessRoleArnAssociationArrayInput interface { 186 pulumi.Input 187 188 ToDrtAccessRoleArnAssociationArrayOutput() DrtAccessRoleArnAssociationArrayOutput 189 ToDrtAccessRoleArnAssociationArrayOutputWithContext(context.Context) DrtAccessRoleArnAssociationArrayOutput 190 } 191 192 type DrtAccessRoleArnAssociationArray []DrtAccessRoleArnAssociationInput 193 194 func (DrtAccessRoleArnAssociationArray) ElementType() reflect.Type { 195 return reflect.TypeOf((*[]*DrtAccessRoleArnAssociation)(nil)).Elem() 196 } 197 198 func (i DrtAccessRoleArnAssociationArray) ToDrtAccessRoleArnAssociationArrayOutput() DrtAccessRoleArnAssociationArrayOutput { 199 return i.ToDrtAccessRoleArnAssociationArrayOutputWithContext(context.Background()) 200 } 201 202 func (i DrtAccessRoleArnAssociationArray) ToDrtAccessRoleArnAssociationArrayOutputWithContext(ctx context.Context) DrtAccessRoleArnAssociationArrayOutput { 203 return pulumi.ToOutputWithContext(ctx, i).(DrtAccessRoleArnAssociationArrayOutput) 204 } 205 206 // DrtAccessRoleArnAssociationMapInput is an input type that accepts DrtAccessRoleArnAssociationMap and DrtAccessRoleArnAssociationMapOutput values. 207 // You can construct a concrete instance of `DrtAccessRoleArnAssociationMapInput` via: 208 // 209 // DrtAccessRoleArnAssociationMap{ "key": DrtAccessRoleArnAssociationArgs{...} } 210 type DrtAccessRoleArnAssociationMapInput interface { 211 pulumi.Input 212 213 ToDrtAccessRoleArnAssociationMapOutput() DrtAccessRoleArnAssociationMapOutput 214 ToDrtAccessRoleArnAssociationMapOutputWithContext(context.Context) DrtAccessRoleArnAssociationMapOutput 215 } 216 217 type DrtAccessRoleArnAssociationMap map[string]DrtAccessRoleArnAssociationInput 218 219 func (DrtAccessRoleArnAssociationMap) ElementType() reflect.Type { 220 return reflect.TypeOf((*map[string]*DrtAccessRoleArnAssociation)(nil)).Elem() 221 } 222 223 func (i DrtAccessRoleArnAssociationMap) ToDrtAccessRoleArnAssociationMapOutput() DrtAccessRoleArnAssociationMapOutput { 224 return i.ToDrtAccessRoleArnAssociationMapOutputWithContext(context.Background()) 225 } 226 227 func (i DrtAccessRoleArnAssociationMap) ToDrtAccessRoleArnAssociationMapOutputWithContext(ctx context.Context) DrtAccessRoleArnAssociationMapOutput { 228 return pulumi.ToOutputWithContext(ctx, i).(DrtAccessRoleArnAssociationMapOutput) 229 } 230 231 type DrtAccessRoleArnAssociationOutput struct{ *pulumi.OutputState } 232 233 func (DrtAccessRoleArnAssociationOutput) ElementType() reflect.Type { 234 return reflect.TypeOf((**DrtAccessRoleArnAssociation)(nil)).Elem() 235 } 236 237 func (o DrtAccessRoleArnAssociationOutput) ToDrtAccessRoleArnAssociationOutput() DrtAccessRoleArnAssociationOutput { 238 return o 239 } 240 241 func (o DrtAccessRoleArnAssociationOutput) ToDrtAccessRoleArnAssociationOutputWithContext(ctx context.Context) DrtAccessRoleArnAssociationOutput { 242 return o 243 } 244 245 // The Amazon Resource Name (ARN) of the role the SRT will use to access your AWS account. Prior to making the AssociateDRTRole request, you must attach the `AWSShieldDRTAccessPolicy` managed policy to this role. 246 func (o DrtAccessRoleArnAssociationOutput) RoleArn() pulumi.StringOutput { 247 return o.ApplyT(func(v *DrtAccessRoleArnAssociation) pulumi.StringOutput { return v.RoleArn }).(pulumi.StringOutput) 248 } 249 250 func (o DrtAccessRoleArnAssociationOutput) Timeouts() DrtAccessRoleArnAssociationTimeoutsPtrOutput { 251 return o.ApplyT(func(v *DrtAccessRoleArnAssociation) DrtAccessRoleArnAssociationTimeoutsPtrOutput { return v.Timeouts }).(DrtAccessRoleArnAssociationTimeoutsPtrOutput) 252 } 253 254 type DrtAccessRoleArnAssociationArrayOutput struct{ *pulumi.OutputState } 255 256 func (DrtAccessRoleArnAssociationArrayOutput) ElementType() reflect.Type { 257 return reflect.TypeOf((*[]*DrtAccessRoleArnAssociation)(nil)).Elem() 258 } 259 260 func (o DrtAccessRoleArnAssociationArrayOutput) ToDrtAccessRoleArnAssociationArrayOutput() DrtAccessRoleArnAssociationArrayOutput { 261 return o 262 } 263 264 func (o DrtAccessRoleArnAssociationArrayOutput) ToDrtAccessRoleArnAssociationArrayOutputWithContext(ctx context.Context) DrtAccessRoleArnAssociationArrayOutput { 265 return o 266 } 267 268 func (o DrtAccessRoleArnAssociationArrayOutput) Index(i pulumi.IntInput) DrtAccessRoleArnAssociationOutput { 269 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DrtAccessRoleArnAssociation { 270 return vs[0].([]*DrtAccessRoleArnAssociation)[vs[1].(int)] 271 }).(DrtAccessRoleArnAssociationOutput) 272 } 273 274 type DrtAccessRoleArnAssociationMapOutput struct{ *pulumi.OutputState } 275 276 func (DrtAccessRoleArnAssociationMapOutput) ElementType() reflect.Type { 277 return reflect.TypeOf((*map[string]*DrtAccessRoleArnAssociation)(nil)).Elem() 278 } 279 280 func (o DrtAccessRoleArnAssociationMapOutput) ToDrtAccessRoleArnAssociationMapOutput() DrtAccessRoleArnAssociationMapOutput { 281 return o 282 } 283 284 func (o DrtAccessRoleArnAssociationMapOutput) ToDrtAccessRoleArnAssociationMapOutputWithContext(ctx context.Context) DrtAccessRoleArnAssociationMapOutput { 285 return o 286 } 287 288 func (o DrtAccessRoleArnAssociationMapOutput) MapIndex(k pulumi.StringInput) DrtAccessRoleArnAssociationOutput { 289 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DrtAccessRoleArnAssociation { 290 return vs[0].(map[string]*DrtAccessRoleArnAssociation)[vs[1].(string)] 291 }).(DrtAccessRoleArnAssociationOutput) 292 } 293 294 func init() { 295 pulumi.RegisterInputType(reflect.TypeOf((*DrtAccessRoleArnAssociationInput)(nil)).Elem(), &DrtAccessRoleArnAssociation{}) 296 pulumi.RegisterInputType(reflect.TypeOf((*DrtAccessRoleArnAssociationArrayInput)(nil)).Elem(), DrtAccessRoleArnAssociationArray{}) 297 pulumi.RegisterInputType(reflect.TypeOf((*DrtAccessRoleArnAssociationMapInput)(nil)).Elem(), DrtAccessRoleArnAssociationMap{}) 298 pulumi.RegisterOutputType(DrtAccessRoleArnAssociationOutput{}) 299 pulumi.RegisterOutputType(DrtAccessRoleArnAssociationArrayOutput{}) 300 pulumi.RegisterOutputType(DrtAccessRoleArnAssociationMapOutput{}) 301 }