/
service_catalog.ex
1269 lines (1001 loc) · 41.4 KB
/
service_catalog.ex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
# See https://github.com/aws-beam/aws-codegen for more details.
defmodule AWS.ServiceCatalog do
@moduledoc """
Service Catalog
[Service Catalog](http://aws.amazon.com/servicecatalog) enables organizations to create and manage catalogs of IT services that are approved for Amazon Web
Services.
To get the most out of this documentation, you should be familiar with the
terminology discussed in [Service Catalog
Concepts](http://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html).
"""
alias AWS.Client
alias AWS.Request
def metadata do
%{
abbreviation: nil,
api_version: "2015-12-10",
content_type: "application/x-amz-json-1.1",
credential_scope: nil,
endpoint_prefix: "servicecatalog",
global?: false,
protocol: "json",
service_id: "Service Catalog",
signature_version: "v4",
signing_name: "servicecatalog",
target_prefix: "AWS242ServiceCatalogService"
}
end
@doc """
Accepts an offer to share the specified portfolio.
"""
def accept_portfolio_share(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "AcceptPortfolioShare", input, options)
end
@doc """
Associates the specified budget with the specified resource.
"""
def associate_budget_with_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "AssociateBudgetWithResource", input, options)
end
@doc """
Associates the specified principal ARN with the specified portfolio.
If you share the portfolio with principal name sharing enabled, the
`PrincipalARN` association is included in the share.
The `PortfolioID`, `PrincipalARN`, and `PrincipalType` parameters are required.
You can associate a maximum of 10 Principals with a portfolio using
`PrincipalType` as `IAM_PATTERN`.
When you associate a principal with portfolio, a potential privilege escalation
path may occur when that portfolio is then shared with other accounts. For a
user in a recipient account who is *not* an Service Catalog Admin, but still has
the ability to create Principals (Users/Groups/Roles), that user could create a
role that matches a principal name association for the portfolio. Although this
user may not know which principal names are associated through Service Catalog,
they may be able to guess the user. If this potential escalation path is a
concern, then Service Catalog recommends using `PrincipalType` as `IAM`. With
this configuration, the `PrincipalARN` must already exist in the recipient
account before it can be associated.
"""
def associate_principal_with_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "AssociatePrincipalWithPortfolio", input, options)
end
@doc """
Associates the specified product with the specified portfolio.
A delegated admin is authorized to invoke this command.
"""
def associate_product_with_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "AssociateProductWithPortfolio", input, options)
end
@doc """
Associates a self-service action with a provisioning artifact.
"""
def associate_service_action_with_provisioning_artifact(
%Client{} = client,
input,
options \\ []
) do
meta = metadata()
Request.request_post(
client,
meta,
"AssociateServiceActionWithProvisioningArtifact",
input,
options
)
end
@doc """
Associate the specified TagOption with the specified portfolio or product.
"""
def associate_tag_option_with_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "AssociateTagOptionWithResource", input, options)
end
@doc """
Associates multiple self-service actions with provisioning artifacts.
"""
def batch_associate_service_action_with_provisioning_artifact(
%Client{} = client,
input,
options \\ []
) do
meta = metadata()
Request.request_post(
client,
meta,
"BatchAssociateServiceActionWithProvisioningArtifact",
input,
options
)
end
@doc """
Disassociates a batch of self-service actions from the specified provisioning
artifact.
"""
def batch_disassociate_service_action_from_provisioning_artifact(
%Client{} = client,
input,
options \\ []
) do
meta = metadata()
Request.request_post(
client,
meta,
"BatchDisassociateServiceActionFromProvisioningArtifact",
input,
options
)
end
@doc """
Copies the specified source product to the specified target product or a new
product.
You can copy a product to the same account or another account. You can copy a
product to the same Region or another Region. If you copy a product to another
account, you must first share the product in a portfolio using
`CreatePortfolioShare`.
This operation is performed asynchronously. To track the progress of the
operation, use `DescribeCopyProductStatus`.
"""
def copy_product(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CopyProduct", input, options)
end
@doc """
Creates a constraint.
A delegated admin is authorized to invoke this command.
"""
def create_constraint(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateConstraint", input, options)
end
@doc """
Creates a portfolio.
A delegated admin is authorized to invoke this command.
"""
def create_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreatePortfolio", input, options)
end
@doc """
Shares the specified portfolio with the specified account or organization node.
Shares to an organization node can only be created by the management account of
an organization or by a delegated administrator. You can share portfolios to an
organization, an organizational unit, or a specific account.
Note that if a delegated admin is de-registered, they can no longer create
portfolio shares.
`AWSOrganizationsAccess` must be enabled in order to create a portfolio share to
an organization node.
You can't share a shared resource, including portfolios that contain a shared
product.
If the portfolio share with the specified account or organization node already
exists, this action will have no effect and will not return an error. To update
an existing share, you must use the ` UpdatePortfolioShare` API instead.
When you associate a principal with portfolio, a potential privilege escalation
path may occur when that portfolio is then shared with other accounts. For a
user in a recipient account who is *not* an Service Catalog Admin, but still has
the ability to create Principals (Users/Groups/Roles), that user could create a
role that matches a principal name association for the portfolio. Although this
user may not know which principal names are associated through Service Catalog,
they may be able to guess the user. If this potential escalation path is a
concern, then Service Catalog recommends using `PrincipalType` as `IAM`. With
this configuration, the `PrincipalARN` must already exist in the recipient
account before it can be associated.
"""
def create_portfolio_share(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreatePortfolioShare", input, options)
end
@doc """
Creates a product.
A delegated admin is authorized to invoke this command.
The user or role that performs this operation must have the
`cloudformation:GetTemplate` IAM policy permission. This policy permission is
required when using the `ImportFromPhysicalId` template source in the
information data section.
"""
def create_product(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateProduct", input, options)
end
@doc """
Creates a plan.
A plan includes the list of resources to be created (when provisioning a new
product) or modified (when updating a provisioned product) when the plan is
executed.
You can create one plan for each provisioned product. To create a plan for an
existing provisioned product, the product status must be AVAILABLE or TAINTED.
To view the resource changes in the change set, use
`DescribeProvisionedProductPlan`. To create or modify the provisioned product,
use `ExecuteProvisionedProductPlan`.
"""
def create_provisioned_product_plan(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateProvisionedProductPlan", input, options)
end
@doc """
Creates a provisioning artifact (also known as a version) for the specified
product.
You cannot create a provisioning artifact for a product that was shared with
you.
The user or role that performs this operation must have the
`cloudformation:GetTemplate` IAM policy permission. This policy permission is
required when using the `ImportFromPhysicalId` template source in the
information data section.
"""
def create_provisioning_artifact(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateProvisioningArtifact", input, options)
end
@doc """
Creates a self-service action.
"""
def create_service_action(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateServiceAction", input, options)
end
@doc """
Creates a TagOption.
"""
def create_tag_option(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateTagOption", input, options)
end
@doc """
Deletes the specified constraint.
A delegated admin is authorized to invoke this command.
"""
def delete_constraint(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteConstraint", input, options)
end
@doc """
Deletes the specified portfolio.
You cannot delete a portfolio if it was shared with you or if it has associated
products, users, constraints, or shared accounts.
A delegated admin is authorized to invoke this command.
"""
def delete_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeletePortfolio", input, options)
end
@doc """
Stops sharing the specified portfolio with the specified account or organization
node.
Shares to an organization node can only be deleted by the management account of
an organization or by a delegated administrator.
Note that if a delegated admin is de-registered, portfolio shares created from
that account are removed.
"""
def delete_portfolio_share(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeletePortfolioShare", input, options)
end
@doc """
Deletes the specified product.
You cannot delete a product if it was shared with you or is associated with a
portfolio.
A delegated admin is authorized to invoke this command.
"""
def delete_product(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteProduct", input, options)
end
@doc """
Deletes the specified plan.
"""
def delete_provisioned_product_plan(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteProvisionedProductPlan", input, options)
end
@doc """
Deletes the specified provisioning artifact (also known as a version) for the
specified product.
You cannot delete a provisioning artifact associated with a product that was
shared with you. You cannot delete the last provisioning artifact for a product,
because a product must have at least one provisioning artifact.
"""
def delete_provisioning_artifact(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteProvisioningArtifact", input, options)
end
@doc """
Deletes a self-service action.
"""
def delete_service_action(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteServiceAction", input, options)
end
@doc """
Deletes the specified TagOption.
You cannot delete a TagOption if it is associated with a product or portfolio.
"""
def delete_tag_option(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteTagOption", input, options)
end
@doc """
Gets information about the specified constraint.
"""
def describe_constraint(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeConstraint", input, options)
end
@doc """
Gets the status of the specified copy product operation.
"""
def describe_copy_product_status(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeCopyProductStatus", input, options)
end
@doc """
Gets information about the specified portfolio.
A delegated admin is authorized to invoke this command.
"""
def describe_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribePortfolio", input, options)
end
@doc """
Gets the status of the specified portfolio share operation.
This API can only be called by the management account in the organization or by
a delegated admin.
"""
def describe_portfolio_share_status(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribePortfolioShareStatus", input, options)
end
@doc """
Returns a summary of each of the portfolio shares that were created for the
specified portfolio.
You can use this API to determine which accounts or organizational nodes this
portfolio have been shared, whether the recipient entity has imported the share,
and whether TagOptions are included with the share.
The `PortfolioId` and `Type` parameters are both required.
"""
def describe_portfolio_shares(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribePortfolioShares", input, options)
end
@doc """
Gets information about the specified product.
Running this operation with administrator access results in a failure.
`DescribeProductAsAdmin` should be used instead.
"""
def describe_product(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeProduct", input, options)
end
@doc """
Gets information about the specified product.
This operation is run with administrator access.
"""
def describe_product_as_admin(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeProductAsAdmin", input, options)
end
@doc """
Gets information about the specified product.
"""
def describe_product_view(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeProductView", input, options)
end
@doc """
Gets information about the specified provisioned product.
"""
def describe_provisioned_product(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeProvisionedProduct", input, options)
end
@doc """
Gets information about the resource changes for the specified plan.
"""
def describe_provisioned_product_plan(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeProvisionedProductPlan", input, options)
end
@doc """
Gets information about the specified provisioning artifact (also known as a
version) for the specified product.
"""
def describe_provisioning_artifact(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeProvisioningArtifact", input, options)
end
@doc """
Gets information about the configuration required to provision the specified
product using the specified provisioning artifact.
If the output contains a TagOption key with an empty list of values, there is a
TagOption conflict for that key. The end user cannot take action to fix the
conflict, and launch is not blocked. In subsequent calls to `ProvisionProduct`,
do not include conflicted TagOption keys as tags, or this causes the error
"Parameter validation failed: Missing required parameter in Tags[*N*]:*Value*".
Tag the provisioned product with the value
`sc-tagoption-conflict-portfolioId-productId`.
"""
def describe_provisioning_parameters(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeProvisioningParameters", input, options)
end
@doc """
Gets information about the specified request operation.
Use this operation after calling a request operation (for example,
`ProvisionProduct`, `TerminateProvisionedProduct`, or
`UpdateProvisionedProduct`).
If a provisioned product was transferred to a new owner using
`UpdateProvisionedProductProperties`, the new owner will be able to describe all
past records for that product. The previous owner will no longer be able to
describe the records, but will be able to use `ListRecordHistory` to see the
product's history from when he was the owner.
"""
def describe_record(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeRecord", input, options)
end
@doc """
Describes a self-service action.
"""
def describe_service_action(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeServiceAction", input, options)
end
@doc """
Finds the default parameters for a specific self-service action on a specific
provisioned product and returns a map of the results to the user.
"""
def describe_service_action_execution_parameters(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeServiceActionExecutionParameters", input, options)
end
@doc """
Gets information about the specified TagOption.
"""
def describe_tag_option(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeTagOption", input, options)
end
@doc """
Disable portfolio sharing through the Organizations service.
This command will not delete your current shares, but prevents you from creating
new shares throughout your organization. Current shares are not kept in sync
with your organization structure if the structure changes after calling this
API. Only the management account in the organization can call this API.
You cannot call this API if there are active delegated administrators in the
organization.
Note that a delegated administrator is not authorized to invoke
`DisableAWSOrganizationsAccess`.
If you share an Service Catalog portfolio in an organization within
Organizations, and then disable Organizations access for Service Catalog, the
portfolio access permissions will not sync with the latest changes to the
organization structure. Specifically, accounts that you removed from the
organization after disabling Service Catalog access will retain access to the
previously shared portfolio.
"""
def disable_aws_organizations_access(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DisableAWSOrganizationsAccess", input, options)
end
@doc """
Disassociates the specified budget from the specified resource.
"""
def disassociate_budget_from_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DisassociateBudgetFromResource", input, options)
end
@doc """
Disassociates a previously associated principal ARN from a specified portfolio.
The `PrincipalType` and `PrincipalARN` must match the
`AssociatePrincipalWithPortfolio` call request details. For example, to
disassociate an association created with a `PrincipalARN` of `PrincipalType` IAM
you must use the `PrincipalType` IAM when calling
`DisassociatePrincipalFromPortfolio`.
For portfolios that have been shared with principal name sharing enabled: after
disassociating a principal, share recipient accounts will no longer be able to
provision products in this portfolio using a role matching the name of the
associated principal.
For more information, review
[associate-principal-with-portfolio](https://docs.aws.amazon.com/cli/latest/reference/servicecatalog/associate-principal-with-portfolio.html#options)
in the Amazon Web Services CLI Command Reference.
If you disassociate a principal from a portfolio, with PrincipalType as `IAM`,
the same principal will still have access to the portfolio if it matches one of
the associated principals of type `IAM_PATTERN`. To fully remove access for a
principal, verify all the associated Principals of type `IAM_PATTERN`, and then
ensure you disassociate any `IAM_PATTERN` principals that match the principal
whose access you are removing.
"""
def disassociate_principal_from_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DisassociatePrincipalFromPortfolio", input, options)
end
@doc """
Disassociates the specified product from the specified portfolio.
A delegated admin is authorized to invoke this command.
"""
def disassociate_product_from_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DisassociateProductFromPortfolio", input, options)
end
@doc """
Disassociates the specified self-service action association from the specified
provisioning artifact.
"""
def disassociate_service_action_from_provisioning_artifact(
%Client{} = client,
input,
options \\ []
) do
meta = metadata()
Request.request_post(
client,
meta,
"DisassociateServiceActionFromProvisioningArtifact",
input,
options
)
end
@doc """
Disassociates the specified TagOption from the specified resource.
"""
def disassociate_tag_option_from_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DisassociateTagOptionFromResource", input, options)
end
@doc """
Enable portfolio sharing feature through Organizations.
This API will allow Service Catalog to receive updates on your organization in
order to sync your shares with the current structure. This API can only be
called by the management account in the organization.
When you call this API, Service Catalog calls
`organizations:EnableAWSServiceAccess` on your behalf so that your shares stay
in sync with any changes in your Organizations structure.
Note that a delegated administrator is not authorized to invoke
`EnableAWSOrganizationsAccess`.
If you have previously disabled Organizations access for Service Catalog, and
then enable access again, the portfolio access permissions might not sync with
the latest changes to the organization structure. Specifically, accounts that
you removed from the organization after disabling Service Catalog access, and
before you enabled access again, can retain access to the previously shared
portfolio. As a result, an account that has been removed from the organization
might still be able to create or manage Amazon Web Services resources when it is
no longer authorized to do so. Amazon Web Services is working to resolve this
issue.
"""
def enable_aws_organizations_access(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "EnableAWSOrganizationsAccess", input, options)
end
@doc """
Provisions or modifies a product based on the resource changes for the specified
plan.
"""
def execute_provisioned_product_plan(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ExecuteProvisionedProductPlan", input, options)
end
@doc """
Executes a self-service action against a provisioned product.
"""
def execute_provisioned_product_service_action(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ExecuteProvisionedProductServiceAction", input, options)
end
@doc """
Get the Access Status for Organizations portfolio share feature.
This API can only be called by the management account in the organization or by
a delegated admin.
"""
def get_aws_organizations_access_status(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetAWSOrganizationsAccessStatus", input, options)
end
@doc """
This API takes either a `ProvisonedProductId` or a `ProvisionedProductName`,
along with a list of one or more output keys, and responds with the key/value
pairs of those outputs.
"""
def get_provisioned_product_outputs(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetProvisionedProductOutputs", input, options)
end
@doc """
Requests the import of a resource as an Service Catalog provisioned product that
is associated to an Service Catalog product and provisioning artifact.
Once imported, all supported governance actions are supported on the provisioned
product.
Resource import only supports CloudFormation stack ARNs. CloudFormation
StackSets, and non-root nested stacks, are not supported.
The CloudFormation stack must have one of the following statuses to be imported:
`CREATE_COMPLETE`, `UPDATE_COMPLETE`, `UPDATE_ROLLBACK_COMPLETE`,
`IMPORT_COMPLETE`, and `IMPORT_ROLLBACK_COMPLETE`.
Import of the resource requires that the CloudFormation stack template matches
the associated Service Catalog product provisioning artifact.
When you import an existing CloudFormation stack into a portfolio, Service
Catalog does not apply the product's associated constraints during the import
process. Service Catalog applies the constraints after you call
`UpdateProvisionedProduct` for the provisioned product.
The user or role that performs this operation must have the
`cloudformation:GetTemplate` and `cloudformation:DescribeStacks` IAM policy
permissions.
You can only import one provisioned product at a time. The product's
CloudFormation stack must have the `IMPORT_COMPLETE` status before you import
another.
"""
def import_as_provisioned_product(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ImportAsProvisionedProduct", input, options)
end
@doc """
Lists all imported portfolios for which account-to-account shares were accepted
by this account.
By specifying the `PortfolioShareType`, you can list portfolios for which
organizational shares were accepted by this account.
"""
def list_accepted_portfolio_shares(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListAcceptedPortfolioShares", input, options)
end
@doc """
Lists all the budgets associated to the specified resource.
"""
def list_budgets_for_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListBudgetsForResource", input, options)
end
@doc """
Lists the constraints for the specified portfolio and product.
"""
def list_constraints_for_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListConstraintsForPortfolio", input, options)
end
@doc """
Lists the paths to the specified product.
A path describes how the user gets access to a specified product and is
necessary when provisioning a product. A path also determines the constraints
that are put on a product. A path is dependent on a specific product, porfolio,
and principal.
When provisioning a product that's been added to a portfolio, you must grant
your user, group, or role access to the portfolio. For more information, see
[Granting users access](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)
in the *Service Catalog User Guide*.
"""
def list_launch_paths(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListLaunchPaths", input, options)
end
@doc """
Lists the organization nodes that have access to the specified portfolio.
This API can only be called by the management account in the organization or by
a delegated admin.
If a delegated admin is de-registered, they can no longer perform this
operation.
"""
def list_organization_portfolio_access(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListOrganizationPortfolioAccess", input, options)
end
@doc """
Lists the account IDs that have access to the specified portfolio.
A delegated admin can list the accounts that have access to the shared
portfolio. Note that if a delegated admin is de-registered, they can no longer
perform this operation.
"""
def list_portfolio_access(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListPortfolioAccess", input, options)
end
@doc """
Lists all portfolios in the catalog.
"""
def list_portfolios(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListPortfolios", input, options)
end
@doc """
Lists all portfolios that the specified product is associated with.
"""
def list_portfolios_for_product(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListPortfoliosForProduct", input, options)
end
@doc """
Lists all `PrincipalARN`s and corresponding `PrincipalType`s associated with the
specified portfolio.
"""
def list_principals_for_portfolio(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListPrincipalsForPortfolio", input, options)
end
@doc """
Lists the plans for the specified provisioned product or all plans to which the
user has access.
"""
def list_provisioned_product_plans(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListProvisionedProductPlans", input, options)
end
@doc """
Lists all provisioning artifacts (also known as versions) for the specified
product.
"""
def list_provisioning_artifacts(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListProvisioningArtifacts", input, options)
end
@doc """
Lists all provisioning artifacts (also known as versions) for the specified
self-service action.
"""
def list_provisioning_artifacts_for_service_action(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(
client,
meta,
"ListProvisioningArtifactsForServiceAction",
input,
options
)
end
@doc """
Lists the specified requests or all performed requests.
"""
def list_record_history(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListRecordHistory", input, options)
end
@doc """
Lists the resources associated with the specified TagOption.
"""
def list_resources_for_tag_option(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListResourcesForTagOption", input, options)
end
@doc """
Lists all self-service actions.
"""
def list_service_actions(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListServiceActions", input, options)
end
@doc """
Returns a paginated list of self-service actions associated with the specified
Product ID and Provisioning Artifact ID.
"""
def list_service_actions_for_provisioning_artifact(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(
client,
meta,
"ListServiceActionsForProvisioningArtifact",
input,
options
)
end
@doc """
Returns summary information about stack instances that are associated with the
specified `CFN_STACKSET` type provisioned product.
You can filter for stack instances that are associated with a specific Amazon
Web Services account name or Region.
"""
def list_stack_instances_for_provisioned_product(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListStackInstancesForProvisionedProduct", input, options)
end