diff --git a/VERSION b/VERSION index 66e6456ae0a..ca433734a4c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.11.314 \ No newline at end of file +1.11.315 \ No newline at end of file diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/FMSClient.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/FMSClient.h index 26d99e889af..b6a52a86fcc 100644 --- a/generated/src/aws-cpp-sdk-fms/include/aws/fms/FMSClient.h +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/FMSClient.h @@ -414,8 +414,8 @@ namespace FMS /** *

Returns information about the specified account's administrative scope. The - * admistrative scope defines the resources that an Firewall Manager administrator - * can manage.

See Also:

See Also:

AWS * API Reference

*/ @@ -468,19 +468,8 @@ namespace FMS /** *

Returns detailed compliance information about the specified member account. * Details include resources that are in and out of compliance with the specified - * policy.

See Also:

The reasons for resources being considered compliant depend on + * the Firewall Manager policy type.

See Also:

AWS * API Reference

*/ @@ -1112,14 +1101,19 @@ namespace FMS * organization that you created with Organizations, Firewall Manager automatically * applies the policy to the resources in that account that are within scope of the * policy.

Firewall Manager provides the following types of policies:

- * */ inline Policy& WithResourceType(const char* value) { SetResourceType(value); return *this;} diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/PolicyOption.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/PolicyOption.h index 2212a919ef6..ac656fa5f05 100644 --- a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/PolicyOption.h +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/PolicyOption.h @@ -7,6 +7,7 @@ #include #include #include +#include #include namespace Aws @@ -25,9 +26,9 @@ namespace Model { /** - *

Contains the Network Firewall firewall policy options to configure the - * policy's deployment model and third-party firewall policy - * settings.

See Also:

Contains the settings to configure a network ACL policy, a Network Firewall + * firewall policy deployment model, or a third-party firewall + * policy.

See Also:

AWS * API Reference

*/ @@ -101,6 +102,37 @@ namespace Model */ inline PolicyOption& WithThirdPartyFirewallPolicy(ThirdPartyFirewallPolicy&& value) { SetThirdPartyFirewallPolicy(std::move(value)); return *this;} + + /** + *

Defines a Firewall Manager network ACL policy.

+ */ + inline const NetworkAclCommonPolicy& GetNetworkAclCommonPolicy() const{ return m_networkAclCommonPolicy; } + + /** + *

Defines a Firewall Manager network ACL policy.

+ */ + inline bool NetworkAclCommonPolicyHasBeenSet() const { return m_networkAclCommonPolicyHasBeenSet; } + + /** + *

Defines a Firewall Manager network ACL policy.

+ */ + inline void SetNetworkAclCommonPolicy(const NetworkAclCommonPolicy& value) { m_networkAclCommonPolicyHasBeenSet = true; m_networkAclCommonPolicy = value; } + + /** + *

Defines a Firewall Manager network ACL policy.

+ */ + inline void SetNetworkAclCommonPolicy(NetworkAclCommonPolicy&& value) { m_networkAclCommonPolicyHasBeenSet = true; m_networkAclCommonPolicy = std::move(value); } + + /** + *

Defines a Firewall Manager network ACL policy.

+ */ + inline PolicyOption& WithNetworkAclCommonPolicy(const NetworkAclCommonPolicy& value) { SetNetworkAclCommonPolicy(value); return *this;} + + /** + *

Defines a Firewall Manager network ACL policy.

+ */ + inline PolicyOption& WithNetworkAclCommonPolicy(NetworkAclCommonPolicy&& value) { SetNetworkAclCommonPolicy(std::move(value)); return *this;} + private: NetworkFirewallPolicy m_networkFirewallPolicy; @@ -108,6 +140,9 @@ namespace Model ThirdPartyFirewallPolicy m_thirdPartyFirewallPolicy; bool m_thirdPartyFirewallPolicyHasBeenSet = false; + + NetworkAclCommonPolicy m_networkAclCommonPolicy; + bool m_networkAclCommonPolicyHasBeenSet = false; }; } // namespace Model diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/PolicySummary.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/PolicySummary.h index f165e78b96a..0ae77dea71e 100644 --- a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/PolicySummary.h +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/PolicySummary.h @@ -166,16 +166,7 @@ namespace Model *

The type of resource protected by or in scope of the policy. This is in the * format shown in the Amazon - * Web Services Resource Types Reference. For WAF and Shield Advanced, examples - * include AWS::ElasticLoadBalancingV2::LoadBalancer and - * AWS::CloudFront::Distribution. For a security group common policy, - * valid values are AWS::EC2::NetworkInterface and - * AWS::EC2::Instance. For a security group content audit policy, - * valid values are AWS::EC2::SecurityGroup, - * AWS::EC2::NetworkInterface, and AWS::EC2::Instance. - * For a security group usage audit policy, the value is - * AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS - * Firewall policy, the value is AWS::EC2::VPC.

+ * Web Services Resource Types Reference.

*/ inline const Aws::String& GetResourceType() const{ return m_resourceType; } @@ -183,16 +174,7 @@ namespace Model *

The type of resource protected by or in scope of the policy. This is in the * format shown in the Amazon - * Web Services Resource Types Reference. For WAF and Shield Advanced, examples - * include AWS::ElasticLoadBalancingV2::LoadBalancer and - * AWS::CloudFront::Distribution. For a security group common policy, - * valid values are AWS::EC2::NetworkInterface and - * AWS::EC2::Instance. For a security group content audit policy, - * valid values are AWS::EC2::SecurityGroup, - * AWS::EC2::NetworkInterface, and AWS::EC2::Instance. - * For a security group usage audit policy, the value is - * AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS - * Firewall policy, the value is AWS::EC2::VPC.

+ * Web Services Resource Types Reference.

*/ inline bool ResourceTypeHasBeenSet() const { return m_resourceTypeHasBeenSet; } @@ -200,16 +182,7 @@ namespace Model *

The type of resource protected by or in scope of the policy. This is in the * format shown in the Amazon - * Web Services Resource Types Reference. For WAF and Shield Advanced, examples - * include AWS::ElasticLoadBalancingV2::LoadBalancer and - * AWS::CloudFront::Distribution. For a security group common policy, - * valid values are AWS::EC2::NetworkInterface and - * AWS::EC2::Instance. For a security group content audit policy, - * valid values are AWS::EC2::SecurityGroup, - * AWS::EC2::NetworkInterface, and AWS::EC2::Instance. - * For a security group usage audit policy, the value is - * AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS - * Firewall policy, the value is AWS::EC2::VPC.

+ * Web Services Resource Types Reference.

*/ inline void SetResourceType(const Aws::String& value) { m_resourceTypeHasBeenSet = true; m_resourceType = value; } @@ -217,16 +190,7 @@ namespace Model *

The type of resource protected by or in scope of the policy. This is in the * format shown in the Amazon - * Web Services Resource Types Reference. For WAF and Shield Advanced, examples - * include AWS::ElasticLoadBalancingV2::LoadBalancer and - * AWS::CloudFront::Distribution. For a security group common policy, - * valid values are AWS::EC2::NetworkInterface and - * AWS::EC2::Instance. For a security group content audit policy, - * valid values are AWS::EC2::SecurityGroup, - * AWS::EC2::NetworkInterface, and AWS::EC2::Instance. - * For a security group usage audit policy, the value is - * AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS - * Firewall policy, the value is AWS::EC2::VPC.

+ * Web Services Resource Types Reference.

*/ inline void SetResourceType(Aws::String&& value) { m_resourceTypeHasBeenSet = true; m_resourceType = std::move(value); } @@ -234,16 +198,7 @@ namespace Model *

The type of resource protected by or in scope of the policy. This is in the * format shown in the Amazon - * Web Services Resource Types Reference. For WAF and Shield Advanced, examples - * include AWS::ElasticLoadBalancingV2::LoadBalancer and - * AWS::CloudFront::Distribution. For a security group common policy, - * valid values are AWS::EC2::NetworkInterface and - * AWS::EC2::Instance. For a security group content audit policy, - * valid values are AWS::EC2::SecurityGroup, - * AWS::EC2::NetworkInterface, and AWS::EC2::Instance. - * For a security group usage audit policy, the value is - * AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS - * Firewall policy, the value is AWS::EC2::VPC.

+ * Web Services Resource Types Reference.

*/ inline void SetResourceType(const char* value) { m_resourceTypeHasBeenSet = true; m_resourceType.assign(value); } @@ -251,16 +206,7 @@ namespace Model *

The type of resource protected by or in scope of the policy. This is in the * format shown in the Amazon - * Web Services Resource Types Reference. For WAF and Shield Advanced, examples - * include AWS::ElasticLoadBalancingV2::LoadBalancer and - * AWS::CloudFront::Distribution. For a security group common policy, - * valid values are AWS::EC2::NetworkInterface and - * AWS::EC2::Instance. For a security group content audit policy, - * valid values are AWS::EC2::SecurityGroup, - * AWS::EC2::NetworkInterface, and AWS::EC2::Instance. - * For a security group usage audit policy, the value is - * AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS - * Firewall policy, the value is AWS::EC2::VPC.

+ * Web Services Resource Types Reference.

*/ inline PolicySummary& WithResourceType(const Aws::String& value) { SetResourceType(value); return *this;} @@ -268,16 +214,7 @@ namespace Model *

The type of resource protected by or in scope of the policy. This is in the * format shown in the Amazon - * Web Services Resource Types Reference. For WAF and Shield Advanced, examples - * include AWS::ElasticLoadBalancingV2::LoadBalancer and - * AWS::CloudFront::Distribution. For a security group common policy, - * valid values are AWS::EC2::NetworkInterface and - * AWS::EC2::Instance. For a security group content audit policy, - * valid values are AWS::EC2::SecurityGroup, - * AWS::EC2::NetworkInterface, and AWS::EC2::Instance. - * For a security group usage audit policy, the value is - * AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS - * Firewall policy, the value is AWS::EC2::VPC.

+ * Web Services Resource Types Reference.

*/ inline PolicySummary& WithResourceType(Aws::String&& value) { SetResourceType(std::move(value)); return *this;} @@ -285,16 +222,7 @@ namespace Model *

The type of resource protected by or in scope of the policy. This is in the * format shown in the Amazon - * Web Services Resource Types Reference. For WAF and Shield Advanced, examples - * include AWS::ElasticLoadBalancingV2::LoadBalancer and - * AWS::CloudFront::Distribution. For a security group common policy, - * valid values are AWS::EC2::NetworkInterface and - * AWS::EC2::Instance. For a security group content audit policy, - * valid values are AWS::EC2::SecurityGroup, - * AWS::EC2::NetworkInterface, and AWS::EC2::Instance. - * For a security group usage audit policy, the value is - * AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS - * Firewall policy, the value is AWS::EC2::VPC.

+ * Web Services Resource Types Reference.

*/ inline PolicySummary& WithResourceType(const char* value) { SetResourceType(value); return *this;} diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/RemediationAction.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/RemediationAction.h index cbd22024776..9c4eea0ebc6 100644 --- a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/RemediationAction.h +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/RemediationAction.h @@ -14,6 +14,10 @@ #include #include #include +#include +#include +#include +#include #include namespace Aws @@ -340,6 +344,148 @@ namespace Model */ inline RemediationAction& WithFMSPolicyUpdateFirewallCreationConfigAction(FMSPolicyUpdateFirewallCreationConfigAction&& value) { SetFMSPolicyUpdateFirewallCreationConfigAction(std::move(value)); return *this;} + + /** + *

Information about the CreateNetworkAcl action in Amazon EC2.

+ */ + inline const CreateNetworkAclAction& GetCreateNetworkAclAction() const{ return m_createNetworkAclAction; } + + /** + *

Information about the CreateNetworkAcl action in Amazon EC2.

+ */ + inline bool CreateNetworkAclActionHasBeenSet() const { return m_createNetworkAclActionHasBeenSet; } + + /** + *

Information about the CreateNetworkAcl action in Amazon EC2.

+ */ + inline void SetCreateNetworkAclAction(const CreateNetworkAclAction& value) { m_createNetworkAclActionHasBeenSet = true; m_createNetworkAclAction = value; } + + /** + *

Information about the CreateNetworkAcl action in Amazon EC2.

+ */ + inline void SetCreateNetworkAclAction(CreateNetworkAclAction&& value) { m_createNetworkAclActionHasBeenSet = true; m_createNetworkAclAction = std::move(value); } + + /** + *

Information about the CreateNetworkAcl action in Amazon EC2.

+ */ + inline RemediationAction& WithCreateNetworkAclAction(const CreateNetworkAclAction& value) { SetCreateNetworkAclAction(value); return *this;} + + /** + *

Information about the CreateNetworkAcl action in Amazon EC2.

+ */ + inline RemediationAction& WithCreateNetworkAclAction(CreateNetworkAclAction&& value) { SetCreateNetworkAclAction(std::move(value)); return *this;} + + + /** + *

Information about the ReplaceNetworkAclAssociation action in + * Amazon EC2.

+ */ + inline const ReplaceNetworkAclAssociationAction& GetReplaceNetworkAclAssociationAction() const{ return m_replaceNetworkAclAssociationAction; } + + /** + *

Information about the ReplaceNetworkAclAssociation action in + * Amazon EC2.

+ */ + inline bool ReplaceNetworkAclAssociationActionHasBeenSet() const { return m_replaceNetworkAclAssociationActionHasBeenSet; } + + /** + *

Information about the ReplaceNetworkAclAssociation action in + * Amazon EC2.

+ */ + inline void SetReplaceNetworkAclAssociationAction(const ReplaceNetworkAclAssociationAction& value) { m_replaceNetworkAclAssociationActionHasBeenSet = true; m_replaceNetworkAclAssociationAction = value; } + + /** + *

Information about the ReplaceNetworkAclAssociation action in + * Amazon EC2.

+ */ + inline void SetReplaceNetworkAclAssociationAction(ReplaceNetworkAclAssociationAction&& value) { m_replaceNetworkAclAssociationActionHasBeenSet = true; m_replaceNetworkAclAssociationAction = std::move(value); } + + /** + *

Information about the ReplaceNetworkAclAssociation action in + * Amazon EC2.

+ */ + inline RemediationAction& WithReplaceNetworkAclAssociationAction(const ReplaceNetworkAclAssociationAction& value) { SetReplaceNetworkAclAssociationAction(value); return *this;} + + /** + *

Information about the ReplaceNetworkAclAssociation action in + * Amazon EC2.

+ */ + inline RemediationAction& WithReplaceNetworkAclAssociationAction(ReplaceNetworkAclAssociationAction&& value) { SetReplaceNetworkAclAssociationAction(std::move(value)); return *this;} + + + /** + *

Information about the CreateNetworkAclEntries action in Amazon + * EC2.

+ */ + inline const CreateNetworkAclEntriesAction& GetCreateNetworkAclEntriesAction() const{ return m_createNetworkAclEntriesAction; } + + /** + *

Information about the CreateNetworkAclEntries action in Amazon + * EC2.

+ */ + inline bool CreateNetworkAclEntriesActionHasBeenSet() const { return m_createNetworkAclEntriesActionHasBeenSet; } + + /** + *

Information about the CreateNetworkAclEntries action in Amazon + * EC2.

+ */ + inline void SetCreateNetworkAclEntriesAction(const CreateNetworkAclEntriesAction& value) { m_createNetworkAclEntriesActionHasBeenSet = true; m_createNetworkAclEntriesAction = value; } + + /** + *

Information about the CreateNetworkAclEntries action in Amazon + * EC2.

+ */ + inline void SetCreateNetworkAclEntriesAction(CreateNetworkAclEntriesAction&& value) { m_createNetworkAclEntriesActionHasBeenSet = true; m_createNetworkAclEntriesAction = std::move(value); } + + /** + *

Information about the CreateNetworkAclEntries action in Amazon + * EC2.

+ */ + inline RemediationAction& WithCreateNetworkAclEntriesAction(const CreateNetworkAclEntriesAction& value) { SetCreateNetworkAclEntriesAction(value); return *this;} + + /** + *

Information about the CreateNetworkAclEntries action in Amazon + * EC2.

+ */ + inline RemediationAction& WithCreateNetworkAclEntriesAction(CreateNetworkAclEntriesAction&& value) { SetCreateNetworkAclEntriesAction(std::move(value)); return *this;} + + + /** + *

Information about the DeleteNetworkAclEntries action in Amazon + * EC2.

+ */ + inline const DeleteNetworkAclEntriesAction& GetDeleteNetworkAclEntriesAction() const{ return m_deleteNetworkAclEntriesAction; } + + /** + *

Information about the DeleteNetworkAclEntries action in Amazon + * EC2.

+ */ + inline bool DeleteNetworkAclEntriesActionHasBeenSet() const { return m_deleteNetworkAclEntriesActionHasBeenSet; } + + /** + *

Information about the DeleteNetworkAclEntries action in Amazon + * EC2.

+ */ + inline void SetDeleteNetworkAclEntriesAction(const DeleteNetworkAclEntriesAction& value) { m_deleteNetworkAclEntriesActionHasBeenSet = true; m_deleteNetworkAclEntriesAction = value; } + + /** + *

Information about the DeleteNetworkAclEntries action in Amazon + * EC2.

+ */ + inline void SetDeleteNetworkAclEntriesAction(DeleteNetworkAclEntriesAction&& value) { m_deleteNetworkAclEntriesActionHasBeenSet = true; m_deleteNetworkAclEntriesAction = std::move(value); } + + /** + *

Information about the DeleteNetworkAclEntries action in Amazon + * EC2.

+ */ + inline RemediationAction& WithDeleteNetworkAclEntriesAction(const DeleteNetworkAclEntriesAction& value) { SetDeleteNetworkAclEntriesAction(value); return *this;} + + /** + *

Information about the DeleteNetworkAclEntries action in Amazon + * EC2.

+ */ + inline RemediationAction& WithDeleteNetworkAclEntriesAction(DeleteNetworkAclEntriesAction&& value) { SetDeleteNetworkAclEntriesAction(std::move(value)); return *this;} + private: Aws::String m_description; @@ -368,6 +514,18 @@ namespace Model FMSPolicyUpdateFirewallCreationConfigAction m_fMSPolicyUpdateFirewallCreationConfigAction; bool m_fMSPolicyUpdateFirewallCreationConfigActionHasBeenSet = false; + + CreateNetworkAclAction m_createNetworkAclAction; + bool m_createNetworkAclActionHasBeenSet = false; + + ReplaceNetworkAclAssociationAction m_replaceNetworkAclAssociationAction; + bool m_replaceNetworkAclAssociationActionHasBeenSet = false; + + CreateNetworkAclEntriesAction m_createNetworkAclEntriesAction; + bool m_createNetworkAclEntriesActionHasBeenSet = false; + + DeleteNetworkAclEntriesAction m_deleteNetworkAclEntriesAction; + bool m_deleteNetworkAclEntriesActionHasBeenSet = false; }; } // namespace Model diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ReplaceNetworkAclAssociationAction.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ReplaceNetworkAclAssociationAction.h new file mode 100644 index 00000000000..29b6c238793 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ReplaceNetworkAclAssociationAction.h @@ -0,0 +1,183 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace FMS +{ +namespace Model +{ + + /** + *

Information about the ReplaceNetworkAclAssociation action in + * Amazon EC2. This is a remediation option in + * RemediationAction.

See Also:

AWS + * API Reference

+ */ + class ReplaceNetworkAclAssociationAction + { + public: + AWS_FMS_API ReplaceNetworkAclAssociationAction(); + AWS_FMS_API ReplaceNetworkAclAssociationAction(Aws::Utils::Json::JsonView jsonValue); + AWS_FMS_API ReplaceNetworkAclAssociationAction& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_FMS_API Aws::Utils::Json::JsonValue Jsonize() const; + + + /** + *

Brief description of this remediation action.

+ */ + inline const Aws::String& GetDescription() const{ return m_description; } + + /** + *

Brief description of this remediation action.

+ */ + inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; } + + /** + *

Brief description of this remediation action.

+ */ + inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; } + + /** + *

Brief description of this remediation action.

+ */ + inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); } + + /** + *

Brief description of this remediation action.

+ */ + inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); } + + /** + *

Brief description of this remediation action.

+ */ + inline ReplaceNetworkAclAssociationAction& WithDescription(const Aws::String& value) { SetDescription(value); return *this;} + + /** + *

Brief description of this remediation action.

+ */ + inline ReplaceNetworkAclAssociationAction& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;} + + /** + *

Brief description of this remediation action.

+ */ + inline ReplaceNetworkAclAssociationAction& WithDescription(const char* value) { SetDescription(value); return *this;} + + + + inline const ActionTarget& GetAssociationId() const{ return m_associationId; } + + + inline bool AssociationIdHasBeenSet() const { return m_associationIdHasBeenSet; } + + + inline void SetAssociationId(const ActionTarget& value) { m_associationIdHasBeenSet = true; m_associationId = value; } + + + inline void SetAssociationId(ActionTarget&& value) { m_associationIdHasBeenSet = true; m_associationId = std::move(value); } + + + inline ReplaceNetworkAclAssociationAction& WithAssociationId(const ActionTarget& value) { SetAssociationId(value); return *this;} + + + inline ReplaceNetworkAclAssociationAction& WithAssociationId(ActionTarget&& value) { SetAssociationId(std::move(value)); return *this;} + + + /** + *

The network ACL that's associated with the remediation action.

+ */ + inline const ActionTarget& GetNetworkAclId() const{ return m_networkAclId; } + + /** + *

The network ACL that's associated with the remediation action.

+ */ + inline bool NetworkAclIdHasBeenSet() const { return m_networkAclIdHasBeenSet; } + + /** + *

The network ACL that's associated with the remediation action.

+ */ + inline void SetNetworkAclId(const ActionTarget& value) { m_networkAclIdHasBeenSet = true; m_networkAclId = value; } + + /** + *

The network ACL that's associated with the remediation action.

+ */ + inline void SetNetworkAclId(ActionTarget&& value) { m_networkAclIdHasBeenSet = true; m_networkAclId = std::move(value); } + + /** + *

The network ACL that's associated with the remediation action.

+ */ + inline ReplaceNetworkAclAssociationAction& WithNetworkAclId(const ActionTarget& value) { SetNetworkAclId(value); return *this;} + + /** + *

The network ACL that's associated with the remediation action.

+ */ + inline ReplaceNetworkAclAssociationAction& WithNetworkAclId(ActionTarget&& value) { SetNetworkAclId(std::move(value)); return *this;} + + + /** + *

Indicates whether it is possible for Firewall Manager to perform this + * remediation action. A false value indicates that auto remediation is disabled or + * Firewall Manager is unable to perform the action due to a conflict of some + * kind.

+ */ + inline bool GetFMSCanRemediate() const{ return m_fMSCanRemediate; } + + /** + *

Indicates whether it is possible for Firewall Manager to perform this + * remediation action. A false value indicates that auto remediation is disabled or + * Firewall Manager is unable to perform the action due to a conflict of some + * kind.

+ */ + inline bool FMSCanRemediateHasBeenSet() const { return m_fMSCanRemediateHasBeenSet; } + + /** + *

Indicates whether it is possible for Firewall Manager to perform this + * remediation action. A false value indicates that auto remediation is disabled or + * Firewall Manager is unable to perform the action due to a conflict of some + * kind.

+ */ + inline void SetFMSCanRemediate(bool value) { m_fMSCanRemediateHasBeenSet = true; m_fMSCanRemediate = value; } + + /** + *

Indicates whether it is possible for Firewall Manager to perform this + * remediation action. A false value indicates that auto remediation is disabled or + * Firewall Manager is unable to perform the action due to a conflict of some + * kind.

+ */ + inline ReplaceNetworkAclAssociationAction& WithFMSCanRemediate(bool value) { SetFMSCanRemediate(value); return *this;} + + private: + + Aws::String m_description; + bool m_descriptionHasBeenSet = false; + + ActionTarget m_associationId; + bool m_associationIdHasBeenSet = false; + + ActionTarget m_networkAclId; + bool m_networkAclIdHasBeenSet = false; + + bool m_fMSCanRemediate; + bool m_fMSCanRemediateHasBeenSet = false; + }; + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ResourceViolation.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ResourceViolation.h index b9aa357cdff..55b30392921 100644 --- a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ResourceViolation.h +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ResourceViolation.h @@ -21,13 +21,14 @@ #include #include #include -#include #include #include #include #include #include #include +#include +#include #include namespace Aws @@ -627,43 +628,6 @@ namespace Model inline ResourceViolation& WithDnsRuleGroupLimitExceededViolation(DnsRuleGroupLimitExceededViolation&& value) { SetDnsRuleGroupLimitExceededViolation(std::move(value)); return *this;} - /** - *

A list of possible remediation action lists. Each individual possible - * remediation action is a list of individual remediation actions.

- */ - inline const PossibleRemediationActions& GetPossibleRemediationActions() const{ return m_possibleRemediationActions; } - - /** - *

A list of possible remediation action lists. Each individual possible - * remediation action is a list of individual remediation actions.

- */ - inline bool PossibleRemediationActionsHasBeenSet() const { return m_possibleRemediationActionsHasBeenSet; } - - /** - *

A list of possible remediation action lists. Each individual possible - * remediation action is a list of individual remediation actions.

- */ - inline void SetPossibleRemediationActions(const PossibleRemediationActions& value) { m_possibleRemediationActionsHasBeenSet = true; m_possibleRemediationActions = value; } - - /** - *

A list of possible remediation action lists. Each individual possible - * remediation action is a list of individual remediation actions.

- */ - inline void SetPossibleRemediationActions(PossibleRemediationActions&& value) { m_possibleRemediationActionsHasBeenSet = true; m_possibleRemediationActions = std::move(value); } - - /** - *

A list of possible remediation action lists. Each individual possible - * remediation action is a list of individual remediation actions.

- */ - inline ResourceViolation& WithPossibleRemediationActions(const PossibleRemediationActions& value) { SetPossibleRemediationActions(value); return *this;} - - /** - *

A list of possible remediation action lists. Each individual possible - * remediation action is a list of individual remediation actions.

- */ - inline ResourceViolation& WithPossibleRemediationActions(PossibleRemediationActions&& value) { SetPossibleRemediationActions(std::move(value)); return *this;} - - /** *

Contains details about the firewall subnet that violates the policy * scope.

@@ -879,6 +843,74 @@ namespace Model */ inline ResourceViolation& WithFirewallSubnetMissingVPCEndpointViolation(FirewallSubnetMissingVPCEndpointViolation&& value) { SetFirewallSubnetMissingVPCEndpointViolation(std::move(value)); return *this;} + + /** + *

Violation detail for the entries in a network ACL resource.

+ */ + inline const InvalidNetworkAclEntriesViolation& GetInvalidNetworkAclEntriesViolation() const{ return m_invalidNetworkAclEntriesViolation; } + + /** + *

Violation detail for the entries in a network ACL resource.

+ */ + inline bool InvalidNetworkAclEntriesViolationHasBeenSet() const { return m_invalidNetworkAclEntriesViolationHasBeenSet; } + + /** + *

Violation detail for the entries in a network ACL resource.

+ */ + inline void SetInvalidNetworkAclEntriesViolation(const InvalidNetworkAclEntriesViolation& value) { m_invalidNetworkAclEntriesViolationHasBeenSet = true; m_invalidNetworkAclEntriesViolation = value; } + + /** + *

Violation detail for the entries in a network ACL resource.

+ */ + inline void SetInvalidNetworkAclEntriesViolation(InvalidNetworkAclEntriesViolation&& value) { m_invalidNetworkAclEntriesViolationHasBeenSet = true; m_invalidNetworkAclEntriesViolation = std::move(value); } + + /** + *

Violation detail for the entries in a network ACL resource.

+ */ + inline ResourceViolation& WithInvalidNetworkAclEntriesViolation(const InvalidNetworkAclEntriesViolation& value) { SetInvalidNetworkAclEntriesViolation(value); return *this;} + + /** + *

Violation detail for the entries in a network ACL resource.

+ */ + inline ResourceViolation& WithInvalidNetworkAclEntriesViolation(InvalidNetworkAclEntriesViolation&& value) { SetInvalidNetworkAclEntriesViolation(std::move(value)); return *this;} + + + /** + *

A list of possible remediation action lists. Each individual possible + * remediation action is a list of individual remediation actions.

+ */ + inline const PossibleRemediationActions& GetPossibleRemediationActions() const{ return m_possibleRemediationActions; } + + /** + *

A list of possible remediation action lists. Each individual possible + * remediation action is a list of individual remediation actions.

+ */ + inline bool PossibleRemediationActionsHasBeenSet() const { return m_possibleRemediationActionsHasBeenSet; } + + /** + *

A list of possible remediation action lists. Each individual possible + * remediation action is a list of individual remediation actions.

+ */ + inline void SetPossibleRemediationActions(const PossibleRemediationActions& value) { m_possibleRemediationActionsHasBeenSet = true; m_possibleRemediationActions = value; } + + /** + *

A list of possible remediation action lists. Each individual possible + * remediation action is a list of individual remediation actions.

+ */ + inline void SetPossibleRemediationActions(PossibleRemediationActions&& value) { m_possibleRemediationActionsHasBeenSet = true; m_possibleRemediationActions = std::move(value); } + + /** + *

A list of possible remediation action lists. Each individual possible + * remediation action is a list of individual remediation actions.

+ */ + inline ResourceViolation& WithPossibleRemediationActions(const PossibleRemediationActions& value) { SetPossibleRemediationActions(value); return *this;} + + /** + *

A list of possible remediation action lists. Each individual possible + * remediation action is a list of individual remediation actions.

+ */ + inline ResourceViolation& WithPossibleRemediationActions(PossibleRemediationActions&& value) { SetPossibleRemediationActions(std::move(value)); return *this;} + private: AwsVPCSecurityGroupViolation m_awsVPCSecurityGroupViolation; @@ -929,9 +961,6 @@ namespace Model DnsRuleGroupLimitExceededViolation m_dnsRuleGroupLimitExceededViolation; bool m_dnsRuleGroupLimitExceededViolationHasBeenSet = false; - PossibleRemediationActions m_possibleRemediationActions; - bool m_possibleRemediationActionsHasBeenSet = false; - FirewallSubnetIsOutOfScopeViolation m_firewallSubnetIsOutOfScopeViolation; bool m_firewallSubnetIsOutOfScopeViolationHasBeenSet = false; @@ -949,6 +978,12 @@ namespace Model FirewallSubnetMissingVPCEndpointViolation m_firewallSubnetMissingVPCEndpointViolation; bool m_firewallSubnetMissingVPCEndpointViolationHasBeenSet = false; + + InvalidNetworkAclEntriesViolation m_invalidNetworkAclEntriesViolation; + bool m_invalidNetworkAclEntriesViolationHasBeenSet = false; + + PossibleRemediationActions m_possibleRemediationActions; + bool m_possibleRemediationActionsHasBeenSet = false; }; } // namespace Model diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/SecurityServicePolicyData.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/SecurityServicePolicyData.h index dbfed21b6d8..17e1bfc919d 100644 --- a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/SecurityServicePolicyData.h +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/SecurityServicePolicyData.h @@ -169,7 +169,7 @@ namespace Model * true, otherwise Firewall Manager won't be able to create the * policy. When you enable revertManualSecurityGroupChanges, Firewall * Manager identifies and reports when the security groups created by this policy - * become non-compliant.

Firewall Manager won't distrubute system tags + * become non-compliant.

Firewall Manager won't distribute system tags * added by Amazon Web Services services into the replica security groups. System * tags begin with the aws: prefix.

  • Example: Shared * VPCs. Apply the preceding policy to resources in shared VPCs as well as to those @@ -397,7 +397,7 @@ namespace Model * true, otherwise Firewall Manager won't be able to create the * policy. When you enable revertManualSecurityGroupChanges, Firewall * Manager identifies and reports when the security groups created by this policy - * become non-compliant.

    Firewall Manager won't distrubute system tags + * become non-compliant.

    Firewall Manager won't distribute system tags * added by Amazon Web Services services into the replica security groups. System * tags begin with the aws: prefix.

  • Example: Shared * VPCs. Apply the preceding policy to resources in shared VPCs as well as to those @@ -625,7 +625,7 @@ namespace Model * true, otherwise Firewall Manager won't be able to create the * policy. When you enable revertManualSecurityGroupChanges, Firewall * Manager identifies and reports when the security groups created by this policy - * become non-compliant.

    Firewall Manager won't distrubute system tags + * become non-compliant.

    Firewall Manager won't distribute system tags * added by Amazon Web Services services into the replica security groups. System * tags begin with the aws: prefix.

  • Example: Shared * VPCs. Apply the preceding policy to resources in shared VPCs as well as to those @@ -853,7 +853,7 @@ namespace Model * true, otherwise Firewall Manager won't be able to create the * policy. When you enable revertManualSecurityGroupChanges, Firewall * Manager identifies and reports when the security groups created by this policy - * become non-compliant.

    Firewall Manager won't distrubute system tags + * become non-compliant.

    Firewall Manager won't distribute system tags * added by Amazon Web Services services into the replica security groups. System * tags begin with the aws: prefix.

  • Example: Shared * VPCs. Apply the preceding policy to resources in shared VPCs as well as to those @@ -1081,7 +1081,7 @@ namespace Model * true, otherwise Firewall Manager won't be able to create the * policy. When you enable revertManualSecurityGroupChanges, Firewall * Manager identifies and reports when the security groups created by this policy - * become non-compliant.

    Firewall Manager won't distrubute system tags + * become non-compliant.

    Firewall Manager won't distribute system tags * added by Amazon Web Services services into the replica security groups. System * tags begin with the aws: prefix.

  • Example: Shared * VPCs. Apply the preceding policy to resources in shared VPCs as well as to those @@ -1309,7 +1309,7 @@ namespace Model * true, otherwise Firewall Manager won't be able to create the * policy. When you enable revertManualSecurityGroupChanges, Firewall * Manager identifies and reports when the security groups created by this policy - * become non-compliant.

    Firewall Manager won't distrubute system tags + * become non-compliant.

    Firewall Manager won't distribute system tags * added by Amazon Web Services services into the replica security groups. System * tags begin with the aws: prefix.

  • Example: Shared * VPCs. Apply the preceding policy to resources in shared VPCs as well as to those @@ -1537,7 +1537,7 @@ namespace Model * true, otherwise Firewall Manager won't be able to create the * policy. When you enable revertManualSecurityGroupChanges, Firewall * Manager identifies and reports when the security groups created by this policy - * become non-compliant.

    Firewall Manager won't distrubute system tags + * become non-compliant.

    Firewall Manager won't distribute system tags * added by Amazon Web Services services into the replica security groups. System * tags begin with the aws: prefix.

  • Example: Shared * VPCs. Apply the preceding policy to resources in shared VPCs as well as to those @@ -1765,7 +1765,7 @@ namespace Model * true, otherwise Firewall Manager won't be able to create the * policy. When you enable revertManualSecurityGroupChanges, Firewall * Manager identifies and reports when the security groups created by this policy - * become non-compliant.

    Firewall Manager won't distrubute system tags + * become non-compliant.

    Firewall Manager won't distribute system tags * added by Amazon Web Services services into the replica security groups. System * tags begin with the aws: prefix.

  • Example: Shared * VPCs. Apply the preceding policy to resources in shared VPCs as well as to those @@ -1927,38 +1927,38 @@ namespace Model /** - *

    Contains the Network Firewall firewall policy options to configure a - * centralized deployment model.

    + *

    Contains the settings to configure a network ACL policy, a Network Firewall + * firewall policy deployment model, or a third-party firewall policy.

    */ inline const PolicyOption& GetPolicyOption() const{ return m_policyOption; } /** - *

    Contains the Network Firewall firewall policy options to configure a - * centralized deployment model.

    + *

    Contains the settings to configure a network ACL policy, a Network Firewall + * firewall policy deployment model, or a third-party firewall policy.

    */ inline bool PolicyOptionHasBeenSet() const { return m_policyOptionHasBeenSet; } /** - *

    Contains the Network Firewall firewall policy options to configure a - * centralized deployment model.

    + *

    Contains the settings to configure a network ACL policy, a Network Firewall + * firewall policy deployment model, or a third-party firewall policy.

    */ inline void SetPolicyOption(const PolicyOption& value) { m_policyOptionHasBeenSet = true; m_policyOption = value; } /** - *

    Contains the Network Firewall firewall policy options to configure a - * centralized deployment model.

    + *

    Contains the settings to configure a network ACL policy, a Network Firewall + * firewall policy deployment model, or a third-party firewall policy.

    */ inline void SetPolicyOption(PolicyOption&& value) { m_policyOptionHasBeenSet = true; m_policyOption = std::move(value); } /** - *

    Contains the Network Firewall firewall policy options to configure a - * centralized deployment model.

    + *

    Contains the settings to configure a network ACL policy, a Network Firewall + * firewall policy deployment model, or a third-party firewall policy.

    */ inline SecurityServicePolicyData& WithPolicyOption(const PolicyOption& value) { SetPolicyOption(value); return *this;} /** - *

    Contains the Network Firewall firewall policy options to configure a - * centralized deployment model.

    + *

    Contains the settings to configure a network ACL policy, a Network Firewall + * firewall policy deployment model, or a third-party firewall policy.

    */ inline SecurityServicePolicyData& WithPolicyOption(PolicyOption&& value) { SetPolicyOption(std::move(value)); return *this;} diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/SecurityServiceType.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/SecurityServiceType.h index b4e20620b65..c631951b806 100644 --- a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/SecurityServiceType.h +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/SecurityServiceType.h @@ -25,7 +25,8 @@ namespace Model NETWORK_FIREWALL, DNS_FIREWALL, THIRD_PARTY_FIREWALL, - IMPORT_NETWORK_FIREWALL + IMPORT_NETWORK_FIREWALL, + NETWORK_ACL_COMMON }; namespace SecurityServiceTypeMapper diff --git a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ViolationReason.h b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ViolationReason.h index 16058cad370..1b73fab912c 100644 --- a/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ViolationReason.h +++ b/generated/src/aws-cpp-sdk-fms/include/aws/fms/model/ViolationReason.h @@ -43,7 +43,8 @@ namespace Model BLACK_HOLE_ROUTE_DETECTED_IN_FIREWALL_SUBNET, RESOURCE_MISSING_DNS_FIREWALL, ROUTE_HAS_OUT_OF_SCOPE_ENDPOINT, - FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT + FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT, + INVALID_NETWORK_ACL_ENTRY }; namespace ViolationReasonMapper diff --git a/generated/src/aws-cpp-sdk-fms/source/model/CreateNetworkAclAction.cpp b/generated/src/aws-cpp-sdk-fms/source/model/CreateNetworkAclAction.cpp new file mode 100644 index 00000000000..6795f574552 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/CreateNetworkAclAction.cpp @@ -0,0 +1,91 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +CreateNetworkAclAction::CreateNetworkAclAction() : + m_descriptionHasBeenSet(false), + m_vpcHasBeenSet(false), + m_fMSCanRemediate(false), + m_fMSCanRemediateHasBeenSet(false) +{ +} + +CreateNetworkAclAction::CreateNetworkAclAction(JsonView jsonValue) : + m_descriptionHasBeenSet(false), + m_vpcHasBeenSet(false), + m_fMSCanRemediate(false), + m_fMSCanRemediateHasBeenSet(false) +{ + *this = jsonValue; +} + +CreateNetworkAclAction& CreateNetworkAclAction::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Description")) + { + m_description = jsonValue.GetString("Description"); + + m_descriptionHasBeenSet = true; + } + + if(jsonValue.ValueExists("Vpc")) + { + m_vpc = jsonValue.GetObject("Vpc"); + + m_vpcHasBeenSet = true; + } + + if(jsonValue.ValueExists("FMSCanRemediate")) + { + m_fMSCanRemediate = jsonValue.GetBool("FMSCanRemediate"); + + m_fMSCanRemediateHasBeenSet = true; + } + + return *this; +} + +JsonValue CreateNetworkAclAction::Jsonize() const +{ + JsonValue payload; + + if(m_descriptionHasBeenSet) + { + payload.WithString("Description", m_description); + + } + + if(m_vpcHasBeenSet) + { + payload.WithObject("Vpc", m_vpc.Jsonize()); + + } + + if(m_fMSCanRemediateHasBeenSet) + { + payload.WithBool("FMSCanRemediate", m_fMSCanRemediate); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/CreateNetworkAclEntriesAction.cpp b/generated/src/aws-cpp-sdk-fms/source/model/CreateNetworkAclEntriesAction.cpp new file mode 100644 index 00000000000..3f936dd4923 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/CreateNetworkAclEntriesAction.cpp @@ -0,0 +1,114 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +CreateNetworkAclEntriesAction::CreateNetworkAclEntriesAction() : + m_descriptionHasBeenSet(false), + m_networkAclIdHasBeenSet(false), + m_networkAclEntriesToBeCreatedHasBeenSet(false), + m_fMSCanRemediate(false), + m_fMSCanRemediateHasBeenSet(false) +{ +} + +CreateNetworkAclEntriesAction::CreateNetworkAclEntriesAction(JsonView jsonValue) : + m_descriptionHasBeenSet(false), + m_networkAclIdHasBeenSet(false), + m_networkAclEntriesToBeCreatedHasBeenSet(false), + m_fMSCanRemediate(false), + m_fMSCanRemediateHasBeenSet(false) +{ + *this = jsonValue; +} + +CreateNetworkAclEntriesAction& CreateNetworkAclEntriesAction::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Description")) + { + m_description = jsonValue.GetString("Description"); + + m_descriptionHasBeenSet = true; + } + + if(jsonValue.ValueExists("NetworkAclId")) + { + m_networkAclId = jsonValue.GetObject("NetworkAclId"); + + m_networkAclIdHasBeenSet = true; + } + + if(jsonValue.ValueExists("NetworkAclEntriesToBeCreated")) + { + Aws::Utils::Array networkAclEntriesToBeCreatedJsonList = jsonValue.GetArray("NetworkAclEntriesToBeCreated"); + for(unsigned networkAclEntriesToBeCreatedIndex = 0; networkAclEntriesToBeCreatedIndex < networkAclEntriesToBeCreatedJsonList.GetLength(); ++networkAclEntriesToBeCreatedIndex) + { + m_networkAclEntriesToBeCreated.push_back(networkAclEntriesToBeCreatedJsonList[networkAclEntriesToBeCreatedIndex].AsObject()); + } + m_networkAclEntriesToBeCreatedHasBeenSet = true; + } + + if(jsonValue.ValueExists("FMSCanRemediate")) + { + m_fMSCanRemediate = jsonValue.GetBool("FMSCanRemediate"); + + m_fMSCanRemediateHasBeenSet = true; + } + + return *this; +} + +JsonValue CreateNetworkAclEntriesAction::Jsonize() const +{ + JsonValue payload; + + if(m_descriptionHasBeenSet) + { + payload.WithString("Description", m_description); + + } + + if(m_networkAclIdHasBeenSet) + { + payload.WithObject("NetworkAclId", m_networkAclId.Jsonize()); + + } + + if(m_networkAclEntriesToBeCreatedHasBeenSet) + { + Aws::Utils::Array networkAclEntriesToBeCreatedJsonList(m_networkAclEntriesToBeCreated.size()); + for(unsigned networkAclEntriesToBeCreatedIndex = 0; networkAclEntriesToBeCreatedIndex < networkAclEntriesToBeCreatedJsonList.GetLength(); ++networkAclEntriesToBeCreatedIndex) + { + networkAclEntriesToBeCreatedJsonList[networkAclEntriesToBeCreatedIndex].AsObject(m_networkAclEntriesToBeCreated[networkAclEntriesToBeCreatedIndex].Jsonize()); + } + payload.WithArray("NetworkAclEntriesToBeCreated", std::move(networkAclEntriesToBeCreatedJsonList)); + + } + + if(m_fMSCanRemediateHasBeenSet) + { + payload.WithBool("FMSCanRemediate", m_fMSCanRemediate); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/DeleteNetworkAclEntriesAction.cpp b/generated/src/aws-cpp-sdk-fms/source/model/DeleteNetworkAclEntriesAction.cpp new file mode 100644 index 00000000000..015217380b9 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/DeleteNetworkAclEntriesAction.cpp @@ -0,0 +1,114 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +DeleteNetworkAclEntriesAction::DeleteNetworkAclEntriesAction() : + m_descriptionHasBeenSet(false), + m_networkAclIdHasBeenSet(false), + m_networkAclEntriesToBeDeletedHasBeenSet(false), + m_fMSCanRemediate(false), + m_fMSCanRemediateHasBeenSet(false) +{ +} + +DeleteNetworkAclEntriesAction::DeleteNetworkAclEntriesAction(JsonView jsonValue) : + m_descriptionHasBeenSet(false), + m_networkAclIdHasBeenSet(false), + m_networkAclEntriesToBeDeletedHasBeenSet(false), + m_fMSCanRemediate(false), + m_fMSCanRemediateHasBeenSet(false) +{ + *this = jsonValue; +} + +DeleteNetworkAclEntriesAction& DeleteNetworkAclEntriesAction::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Description")) + { + m_description = jsonValue.GetString("Description"); + + m_descriptionHasBeenSet = true; + } + + if(jsonValue.ValueExists("NetworkAclId")) + { + m_networkAclId = jsonValue.GetObject("NetworkAclId"); + + m_networkAclIdHasBeenSet = true; + } + + if(jsonValue.ValueExists("NetworkAclEntriesToBeDeleted")) + { + Aws::Utils::Array networkAclEntriesToBeDeletedJsonList = jsonValue.GetArray("NetworkAclEntriesToBeDeleted"); + for(unsigned networkAclEntriesToBeDeletedIndex = 0; networkAclEntriesToBeDeletedIndex < networkAclEntriesToBeDeletedJsonList.GetLength(); ++networkAclEntriesToBeDeletedIndex) + { + m_networkAclEntriesToBeDeleted.push_back(networkAclEntriesToBeDeletedJsonList[networkAclEntriesToBeDeletedIndex].AsObject()); + } + m_networkAclEntriesToBeDeletedHasBeenSet = true; + } + + if(jsonValue.ValueExists("FMSCanRemediate")) + { + m_fMSCanRemediate = jsonValue.GetBool("FMSCanRemediate"); + + m_fMSCanRemediateHasBeenSet = true; + } + + return *this; +} + +JsonValue DeleteNetworkAclEntriesAction::Jsonize() const +{ + JsonValue payload; + + if(m_descriptionHasBeenSet) + { + payload.WithString("Description", m_description); + + } + + if(m_networkAclIdHasBeenSet) + { + payload.WithObject("NetworkAclId", m_networkAclId.Jsonize()); + + } + + if(m_networkAclEntriesToBeDeletedHasBeenSet) + { + Aws::Utils::Array networkAclEntriesToBeDeletedJsonList(m_networkAclEntriesToBeDeleted.size()); + for(unsigned networkAclEntriesToBeDeletedIndex = 0; networkAclEntriesToBeDeletedIndex < networkAclEntriesToBeDeletedJsonList.GetLength(); ++networkAclEntriesToBeDeletedIndex) + { + networkAclEntriesToBeDeletedJsonList[networkAclEntriesToBeDeletedIndex].AsObject(m_networkAclEntriesToBeDeleted[networkAclEntriesToBeDeletedIndex].Jsonize()); + } + payload.WithArray("NetworkAclEntriesToBeDeleted", std::move(networkAclEntriesToBeDeletedJsonList)); + + } + + if(m_fMSCanRemediateHasBeenSet) + { + payload.WithBool("FMSCanRemediate", m_fMSCanRemediate); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/EntryDescription.cpp b/generated/src/aws-cpp-sdk-fms/source/model/EntryDescription.cpp new file mode 100644 index 00000000000..05f0dc295a3 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/EntryDescription.cpp @@ -0,0 +1,92 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +EntryDescription::EntryDescription() : + m_entryDetailHasBeenSet(false), + m_entryRuleNumber(0), + m_entryRuleNumberHasBeenSet(false), + m_entryType(EntryType::NOT_SET), + m_entryTypeHasBeenSet(false) +{ +} + +EntryDescription::EntryDescription(JsonView jsonValue) : + m_entryDetailHasBeenSet(false), + m_entryRuleNumber(0), + m_entryRuleNumberHasBeenSet(false), + m_entryType(EntryType::NOT_SET), + m_entryTypeHasBeenSet(false) +{ + *this = jsonValue; +} + +EntryDescription& EntryDescription::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("EntryDetail")) + { + m_entryDetail = jsonValue.GetObject("EntryDetail"); + + m_entryDetailHasBeenSet = true; + } + + if(jsonValue.ValueExists("EntryRuleNumber")) + { + m_entryRuleNumber = jsonValue.GetInteger("EntryRuleNumber"); + + m_entryRuleNumberHasBeenSet = true; + } + + if(jsonValue.ValueExists("EntryType")) + { + m_entryType = EntryTypeMapper::GetEntryTypeForName(jsonValue.GetString("EntryType")); + + m_entryTypeHasBeenSet = true; + } + + return *this; +} + +JsonValue EntryDescription::Jsonize() const +{ + JsonValue payload; + + if(m_entryDetailHasBeenSet) + { + payload.WithObject("EntryDetail", m_entryDetail.Jsonize()); + + } + + if(m_entryRuleNumberHasBeenSet) + { + payload.WithInteger("EntryRuleNumber", m_entryRuleNumber); + + } + + if(m_entryTypeHasBeenSet) + { + payload.WithString("EntryType", EntryTypeMapper::GetNameForEntryType(m_entryType)); + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/EntryType.cpp b/generated/src/aws-cpp-sdk-fms/source/model/EntryType.cpp new file mode 100644 index 00000000000..0b49fff7af1 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/EntryType.cpp @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace FMS + { + namespace Model + { + namespace EntryTypeMapper + { + + static const int FMS_MANAGED_FIRST_ENTRY_HASH = HashingUtils::HashString("FMS_MANAGED_FIRST_ENTRY"); + static const int FMS_MANAGED_LAST_ENTRY_HASH = HashingUtils::HashString("FMS_MANAGED_LAST_ENTRY"); + static const int CUSTOM_ENTRY_HASH = HashingUtils::HashString("CUSTOM_ENTRY"); + + + EntryType GetEntryTypeForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == FMS_MANAGED_FIRST_ENTRY_HASH) + { + return EntryType::FMS_MANAGED_FIRST_ENTRY; + } + else if (hashCode == FMS_MANAGED_LAST_ENTRY_HASH) + { + return EntryType::FMS_MANAGED_LAST_ENTRY; + } + else if (hashCode == CUSTOM_ENTRY_HASH) + { + return EntryType::CUSTOM_ENTRY; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return EntryType::NOT_SET; + } + + Aws::String GetNameForEntryType(EntryType enumValue) + { + switch(enumValue) + { + case EntryType::NOT_SET: + return {}; + case EntryType::FMS_MANAGED_FIRST_ENTRY: + return "FMS_MANAGED_FIRST_ENTRY"; + case EntryType::FMS_MANAGED_LAST_ENTRY: + return "FMS_MANAGED_LAST_ENTRY"; + case EntryType::CUSTOM_ENTRY: + return "CUSTOM_ENTRY"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace EntryTypeMapper + } // namespace Model + } // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/EntryViolation.cpp b/generated/src/aws-cpp-sdk-fms/source/model/EntryViolation.cpp new file mode 100644 index 00000000000..396f557ab73 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/EntryViolation.cpp @@ -0,0 +1,150 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +EntryViolation::EntryViolation() : + m_expectedEntryHasBeenSet(false), + m_expectedEvaluationOrderHasBeenSet(false), + m_actualEvaluationOrderHasBeenSet(false), + m_entryAtExpectedEvaluationOrderHasBeenSet(false), + m_entriesWithConflictsHasBeenSet(false), + m_entryViolationReasonsHasBeenSet(false) +{ +} + +EntryViolation::EntryViolation(JsonView jsonValue) : + m_expectedEntryHasBeenSet(false), + m_expectedEvaluationOrderHasBeenSet(false), + m_actualEvaluationOrderHasBeenSet(false), + m_entryAtExpectedEvaluationOrderHasBeenSet(false), + m_entriesWithConflictsHasBeenSet(false), + m_entryViolationReasonsHasBeenSet(false) +{ + *this = jsonValue; +} + +EntryViolation& EntryViolation::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("ExpectedEntry")) + { + m_expectedEntry = jsonValue.GetObject("ExpectedEntry"); + + m_expectedEntryHasBeenSet = true; + } + + if(jsonValue.ValueExists("ExpectedEvaluationOrder")) + { + m_expectedEvaluationOrder = jsonValue.GetString("ExpectedEvaluationOrder"); + + m_expectedEvaluationOrderHasBeenSet = true; + } + + if(jsonValue.ValueExists("ActualEvaluationOrder")) + { + m_actualEvaluationOrder = jsonValue.GetString("ActualEvaluationOrder"); + + m_actualEvaluationOrderHasBeenSet = true; + } + + if(jsonValue.ValueExists("EntryAtExpectedEvaluationOrder")) + { + m_entryAtExpectedEvaluationOrder = jsonValue.GetObject("EntryAtExpectedEvaluationOrder"); + + m_entryAtExpectedEvaluationOrderHasBeenSet = true; + } + + if(jsonValue.ValueExists("EntriesWithConflicts")) + { + Aws::Utils::Array entriesWithConflictsJsonList = jsonValue.GetArray("EntriesWithConflicts"); + for(unsigned entriesWithConflictsIndex = 0; entriesWithConflictsIndex < entriesWithConflictsJsonList.GetLength(); ++entriesWithConflictsIndex) + { + m_entriesWithConflicts.push_back(entriesWithConflictsJsonList[entriesWithConflictsIndex].AsObject()); + } + m_entriesWithConflictsHasBeenSet = true; + } + + if(jsonValue.ValueExists("EntryViolationReasons")) + { + Aws::Utils::Array entryViolationReasonsJsonList = jsonValue.GetArray("EntryViolationReasons"); + for(unsigned entryViolationReasonsIndex = 0; entryViolationReasonsIndex < entryViolationReasonsJsonList.GetLength(); ++entryViolationReasonsIndex) + { + m_entryViolationReasons.push_back(EntryViolationReasonMapper::GetEntryViolationReasonForName(entryViolationReasonsJsonList[entryViolationReasonsIndex].AsString())); + } + m_entryViolationReasonsHasBeenSet = true; + } + + return *this; +} + +JsonValue EntryViolation::Jsonize() const +{ + JsonValue payload; + + if(m_expectedEntryHasBeenSet) + { + payload.WithObject("ExpectedEntry", m_expectedEntry.Jsonize()); + + } + + if(m_expectedEvaluationOrderHasBeenSet) + { + payload.WithString("ExpectedEvaluationOrder", m_expectedEvaluationOrder); + + } + + if(m_actualEvaluationOrderHasBeenSet) + { + payload.WithString("ActualEvaluationOrder", m_actualEvaluationOrder); + + } + + if(m_entryAtExpectedEvaluationOrderHasBeenSet) + { + payload.WithObject("EntryAtExpectedEvaluationOrder", m_entryAtExpectedEvaluationOrder.Jsonize()); + + } + + if(m_entriesWithConflictsHasBeenSet) + { + Aws::Utils::Array entriesWithConflictsJsonList(m_entriesWithConflicts.size()); + for(unsigned entriesWithConflictsIndex = 0; entriesWithConflictsIndex < entriesWithConflictsJsonList.GetLength(); ++entriesWithConflictsIndex) + { + entriesWithConflictsJsonList[entriesWithConflictsIndex].AsObject(m_entriesWithConflicts[entriesWithConflictsIndex].Jsonize()); + } + payload.WithArray("EntriesWithConflicts", std::move(entriesWithConflictsJsonList)); + + } + + if(m_entryViolationReasonsHasBeenSet) + { + Aws::Utils::Array entryViolationReasonsJsonList(m_entryViolationReasons.size()); + for(unsigned entryViolationReasonsIndex = 0; entryViolationReasonsIndex < entryViolationReasonsJsonList.GetLength(); ++entryViolationReasonsIndex) + { + entryViolationReasonsJsonList[entryViolationReasonsIndex].AsString(EntryViolationReasonMapper::GetNameForEntryViolationReason(m_entryViolationReasons[entryViolationReasonsIndex])); + } + payload.WithArray("EntryViolationReasons", std::move(entryViolationReasonsJsonList)); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/EntryViolationReason.cpp b/generated/src/aws-cpp-sdk-fms/source/model/EntryViolationReason.cpp new file mode 100644 index 00000000000..4650b12f6b5 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/EntryViolationReason.cpp @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace FMS + { + namespace Model + { + namespace EntryViolationReasonMapper + { + + static const int MISSING_EXPECTED_ENTRY_HASH = HashingUtils::HashString("MISSING_EXPECTED_ENTRY"); + static const int INCORRECT_ENTRY_ORDER_HASH = HashingUtils::HashString("INCORRECT_ENTRY_ORDER"); + static const int ENTRY_CONFLICT_HASH = HashingUtils::HashString("ENTRY_CONFLICT"); + + + EntryViolationReason GetEntryViolationReasonForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == MISSING_EXPECTED_ENTRY_HASH) + { + return EntryViolationReason::MISSING_EXPECTED_ENTRY; + } + else if (hashCode == INCORRECT_ENTRY_ORDER_HASH) + { + return EntryViolationReason::INCORRECT_ENTRY_ORDER; + } + else if (hashCode == ENTRY_CONFLICT_HASH) + { + return EntryViolationReason::ENTRY_CONFLICT; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return EntryViolationReason::NOT_SET; + } + + Aws::String GetNameForEntryViolationReason(EntryViolationReason enumValue) + { + switch(enumValue) + { + case EntryViolationReason::NOT_SET: + return {}; + case EntryViolationReason::MISSING_EXPECTED_ENTRY: + return "MISSING_EXPECTED_ENTRY"; + case EntryViolationReason::INCORRECT_ENTRY_ORDER: + return "INCORRECT_ENTRY_ORDER"; + case EntryViolationReason::ENTRY_CONFLICT: + return "ENTRY_CONFLICT"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace EntryViolationReasonMapper + } // namespace Model + } // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/InvalidNetworkAclEntriesViolation.cpp b/generated/src/aws-cpp-sdk-fms/source/model/InvalidNetworkAclEntriesViolation.cpp new file mode 100644 index 00000000000..a90777a6be9 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/InvalidNetworkAclEntriesViolation.cpp @@ -0,0 +1,127 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +InvalidNetworkAclEntriesViolation::InvalidNetworkAclEntriesViolation() : + m_vpcHasBeenSet(false), + m_subnetHasBeenSet(false), + m_subnetAvailabilityZoneHasBeenSet(false), + m_currentAssociatedNetworkAclHasBeenSet(false), + m_entryViolationsHasBeenSet(false) +{ +} + +InvalidNetworkAclEntriesViolation::InvalidNetworkAclEntriesViolation(JsonView jsonValue) : + m_vpcHasBeenSet(false), + m_subnetHasBeenSet(false), + m_subnetAvailabilityZoneHasBeenSet(false), + m_currentAssociatedNetworkAclHasBeenSet(false), + m_entryViolationsHasBeenSet(false) +{ + *this = jsonValue; +} + +InvalidNetworkAclEntriesViolation& InvalidNetworkAclEntriesViolation::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Vpc")) + { + m_vpc = jsonValue.GetString("Vpc"); + + m_vpcHasBeenSet = true; + } + + if(jsonValue.ValueExists("Subnet")) + { + m_subnet = jsonValue.GetString("Subnet"); + + m_subnetHasBeenSet = true; + } + + if(jsonValue.ValueExists("SubnetAvailabilityZone")) + { + m_subnetAvailabilityZone = jsonValue.GetString("SubnetAvailabilityZone"); + + m_subnetAvailabilityZoneHasBeenSet = true; + } + + if(jsonValue.ValueExists("CurrentAssociatedNetworkAcl")) + { + m_currentAssociatedNetworkAcl = jsonValue.GetString("CurrentAssociatedNetworkAcl"); + + m_currentAssociatedNetworkAclHasBeenSet = true; + } + + if(jsonValue.ValueExists("EntryViolations")) + { + Aws::Utils::Array entryViolationsJsonList = jsonValue.GetArray("EntryViolations"); + for(unsigned entryViolationsIndex = 0; entryViolationsIndex < entryViolationsJsonList.GetLength(); ++entryViolationsIndex) + { + m_entryViolations.push_back(entryViolationsJsonList[entryViolationsIndex].AsObject()); + } + m_entryViolationsHasBeenSet = true; + } + + return *this; +} + +JsonValue InvalidNetworkAclEntriesViolation::Jsonize() const +{ + JsonValue payload; + + if(m_vpcHasBeenSet) + { + payload.WithString("Vpc", m_vpc); + + } + + if(m_subnetHasBeenSet) + { + payload.WithString("Subnet", m_subnet); + + } + + if(m_subnetAvailabilityZoneHasBeenSet) + { + payload.WithString("SubnetAvailabilityZone", m_subnetAvailabilityZone); + + } + + if(m_currentAssociatedNetworkAclHasBeenSet) + { + payload.WithString("CurrentAssociatedNetworkAcl", m_currentAssociatedNetworkAcl); + + } + + if(m_entryViolationsHasBeenSet) + { + Aws::Utils::Array entryViolationsJsonList(m_entryViolations.size()); + for(unsigned entryViolationsIndex = 0; entryViolationsIndex < entryViolationsJsonList.GetLength(); ++entryViolationsIndex) + { + entryViolationsJsonList[entryViolationsIndex].AsObject(m_entryViolations[entryViolationsIndex].Jsonize()); + } + payload.WithArray("EntryViolations", std::move(entryViolationsJsonList)); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclCommonPolicy.cpp b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclCommonPolicy.cpp new file mode 100644 index 00000000000..8f9a462ff10 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclCommonPolicy.cpp @@ -0,0 +1,59 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +NetworkAclCommonPolicy::NetworkAclCommonPolicy() : + m_networkAclEntrySetHasBeenSet(false) +{ +} + +NetworkAclCommonPolicy::NetworkAclCommonPolicy(JsonView jsonValue) : + m_networkAclEntrySetHasBeenSet(false) +{ + *this = jsonValue; +} + +NetworkAclCommonPolicy& NetworkAclCommonPolicy::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("NetworkAclEntrySet")) + { + m_networkAclEntrySet = jsonValue.GetObject("NetworkAclEntrySet"); + + m_networkAclEntrySetHasBeenSet = true; + } + + return *this; +} + +JsonValue NetworkAclCommonPolicy::Jsonize() const +{ + JsonValue payload; + + if(m_networkAclEntrySetHasBeenSet) + { + payload.WithObject("NetworkAclEntrySet", m_networkAclEntrySet.Jsonize()); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclEntry.cpp b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclEntry.cpp new file mode 100644 index 00000000000..f63b07548f9 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclEntry.cpp @@ -0,0 +1,152 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +NetworkAclEntry::NetworkAclEntry() : + m_icmpTypeCodeHasBeenSet(false), + m_protocolHasBeenSet(false), + m_portRangeHasBeenSet(false), + m_cidrBlockHasBeenSet(false), + m_ipv6CidrBlockHasBeenSet(false), + m_ruleAction(NetworkAclRuleAction::NOT_SET), + m_ruleActionHasBeenSet(false), + m_egress(false), + m_egressHasBeenSet(false) +{ +} + +NetworkAclEntry::NetworkAclEntry(JsonView jsonValue) : + m_icmpTypeCodeHasBeenSet(false), + m_protocolHasBeenSet(false), + m_portRangeHasBeenSet(false), + m_cidrBlockHasBeenSet(false), + m_ipv6CidrBlockHasBeenSet(false), + m_ruleAction(NetworkAclRuleAction::NOT_SET), + m_ruleActionHasBeenSet(false), + m_egress(false), + m_egressHasBeenSet(false) +{ + *this = jsonValue; +} + +NetworkAclEntry& NetworkAclEntry::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("IcmpTypeCode")) + { + m_icmpTypeCode = jsonValue.GetObject("IcmpTypeCode"); + + m_icmpTypeCodeHasBeenSet = true; + } + + if(jsonValue.ValueExists("Protocol")) + { + m_protocol = jsonValue.GetString("Protocol"); + + m_protocolHasBeenSet = true; + } + + if(jsonValue.ValueExists("PortRange")) + { + m_portRange = jsonValue.GetObject("PortRange"); + + m_portRangeHasBeenSet = true; + } + + if(jsonValue.ValueExists("CidrBlock")) + { + m_cidrBlock = jsonValue.GetString("CidrBlock"); + + m_cidrBlockHasBeenSet = true; + } + + if(jsonValue.ValueExists("Ipv6CidrBlock")) + { + m_ipv6CidrBlock = jsonValue.GetString("Ipv6CidrBlock"); + + m_ipv6CidrBlockHasBeenSet = true; + } + + if(jsonValue.ValueExists("RuleAction")) + { + m_ruleAction = NetworkAclRuleActionMapper::GetNetworkAclRuleActionForName(jsonValue.GetString("RuleAction")); + + m_ruleActionHasBeenSet = true; + } + + if(jsonValue.ValueExists("Egress")) + { + m_egress = jsonValue.GetBool("Egress"); + + m_egressHasBeenSet = true; + } + + return *this; +} + +JsonValue NetworkAclEntry::Jsonize() const +{ + JsonValue payload; + + if(m_icmpTypeCodeHasBeenSet) + { + payload.WithObject("IcmpTypeCode", m_icmpTypeCode.Jsonize()); + + } + + if(m_protocolHasBeenSet) + { + payload.WithString("Protocol", m_protocol); + + } + + if(m_portRangeHasBeenSet) + { + payload.WithObject("PortRange", m_portRange.Jsonize()); + + } + + if(m_cidrBlockHasBeenSet) + { + payload.WithString("CidrBlock", m_cidrBlock); + + } + + if(m_ipv6CidrBlockHasBeenSet) + { + payload.WithString("Ipv6CidrBlock", m_ipv6CidrBlock); + + } + + if(m_ruleActionHasBeenSet) + { + payload.WithString("RuleAction", NetworkAclRuleActionMapper::GetNameForNetworkAclRuleAction(m_ruleAction)); + } + + if(m_egressHasBeenSet) + { + payload.WithBool("Egress", m_egress); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclEntrySet.cpp b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclEntrySet.cpp new file mode 100644 index 00000000000..1bcfdc5a31a --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclEntrySet.cpp @@ -0,0 +1,124 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +NetworkAclEntrySet::NetworkAclEntrySet() : + m_firstEntriesHasBeenSet(false), + m_forceRemediateForFirstEntries(false), + m_forceRemediateForFirstEntriesHasBeenSet(false), + m_lastEntriesHasBeenSet(false), + m_forceRemediateForLastEntries(false), + m_forceRemediateForLastEntriesHasBeenSet(false) +{ +} + +NetworkAclEntrySet::NetworkAclEntrySet(JsonView jsonValue) : + m_firstEntriesHasBeenSet(false), + m_forceRemediateForFirstEntries(false), + m_forceRemediateForFirstEntriesHasBeenSet(false), + m_lastEntriesHasBeenSet(false), + m_forceRemediateForLastEntries(false), + m_forceRemediateForLastEntriesHasBeenSet(false) +{ + *this = jsonValue; +} + +NetworkAclEntrySet& NetworkAclEntrySet::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("FirstEntries")) + { + Aws::Utils::Array firstEntriesJsonList = jsonValue.GetArray("FirstEntries"); + for(unsigned firstEntriesIndex = 0; firstEntriesIndex < firstEntriesJsonList.GetLength(); ++firstEntriesIndex) + { + m_firstEntries.push_back(firstEntriesJsonList[firstEntriesIndex].AsObject()); + } + m_firstEntriesHasBeenSet = true; + } + + if(jsonValue.ValueExists("ForceRemediateForFirstEntries")) + { + m_forceRemediateForFirstEntries = jsonValue.GetBool("ForceRemediateForFirstEntries"); + + m_forceRemediateForFirstEntriesHasBeenSet = true; + } + + if(jsonValue.ValueExists("LastEntries")) + { + Aws::Utils::Array lastEntriesJsonList = jsonValue.GetArray("LastEntries"); + for(unsigned lastEntriesIndex = 0; lastEntriesIndex < lastEntriesJsonList.GetLength(); ++lastEntriesIndex) + { + m_lastEntries.push_back(lastEntriesJsonList[lastEntriesIndex].AsObject()); + } + m_lastEntriesHasBeenSet = true; + } + + if(jsonValue.ValueExists("ForceRemediateForLastEntries")) + { + m_forceRemediateForLastEntries = jsonValue.GetBool("ForceRemediateForLastEntries"); + + m_forceRemediateForLastEntriesHasBeenSet = true; + } + + return *this; +} + +JsonValue NetworkAclEntrySet::Jsonize() const +{ + JsonValue payload; + + if(m_firstEntriesHasBeenSet) + { + Aws::Utils::Array firstEntriesJsonList(m_firstEntries.size()); + for(unsigned firstEntriesIndex = 0; firstEntriesIndex < firstEntriesJsonList.GetLength(); ++firstEntriesIndex) + { + firstEntriesJsonList[firstEntriesIndex].AsObject(m_firstEntries[firstEntriesIndex].Jsonize()); + } + payload.WithArray("FirstEntries", std::move(firstEntriesJsonList)); + + } + + if(m_forceRemediateForFirstEntriesHasBeenSet) + { + payload.WithBool("ForceRemediateForFirstEntries", m_forceRemediateForFirstEntries); + + } + + if(m_lastEntriesHasBeenSet) + { + Aws::Utils::Array lastEntriesJsonList(m_lastEntries.size()); + for(unsigned lastEntriesIndex = 0; lastEntriesIndex < lastEntriesJsonList.GetLength(); ++lastEntriesIndex) + { + lastEntriesJsonList[lastEntriesIndex].AsObject(m_lastEntries[lastEntriesIndex].Jsonize()); + } + payload.WithArray("LastEntries", std::move(lastEntriesJsonList)); + + } + + if(m_forceRemediateForLastEntriesHasBeenSet) + { + payload.WithBool("ForceRemediateForLastEntries", m_forceRemediateForLastEntries); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclIcmpTypeCode.cpp b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclIcmpTypeCode.cpp new file mode 100644 index 00000000000..0e01dcce674 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclIcmpTypeCode.cpp @@ -0,0 +1,78 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +NetworkAclIcmpTypeCode::NetworkAclIcmpTypeCode() : + m_code(0), + m_codeHasBeenSet(false), + m_type(0), + m_typeHasBeenSet(false) +{ +} + +NetworkAclIcmpTypeCode::NetworkAclIcmpTypeCode(JsonView jsonValue) : + m_code(0), + m_codeHasBeenSet(false), + m_type(0), + m_typeHasBeenSet(false) +{ + *this = jsonValue; +} + +NetworkAclIcmpTypeCode& NetworkAclIcmpTypeCode::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Code")) + { + m_code = jsonValue.GetInteger("Code"); + + m_codeHasBeenSet = true; + } + + if(jsonValue.ValueExists("Type")) + { + m_type = jsonValue.GetInteger("Type"); + + m_typeHasBeenSet = true; + } + + return *this; +} + +JsonValue NetworkAclIcmpTypeCode::Jsonize() const +{ + JsonValue payload; + + if(m_codeHasBeenSet) + { + payload.WithInteger("Code", m_code); + + } + + if(m_typeHasBeenSet) + { + payload.WithInteger("Type", m_type); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclPortRange.cpp b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclPortRange.cpp new file mode 100644 index 00000000000..f1ec5432e4b --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclPortRange.cpp @@ -0,0 +1,78 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +NetworkAclPortRange::NetworkAclPortRange() : + m_from(0), + m_fromHasBeenSet(false), + m_to(0), + m_toHasBeenSet(false) +{ +} + +NetworkAclPortRange::NetworkAclPortRange(JsonView jsonValue) : + m_from(0), + m_fromHasBeenSet(false), + m_to(0), + m_toHasBeenSet(false) +{ + *this = jsonValue; +} + +NetworkAclPortRange& NetworkAclPortRange::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("From")) + { + m_from = jsonValue.GetInteger("From"); + + m_fromHasBeenSet = true; + } + + if(jsonValue.ValueExists("To")) + { + m_to = jsonValue.GetInteger("To"); + + m_toHasBeenSet = true; + } + + return *this; +} + +JsonValue NetworkAclPortRange::Jsonize() const +{ + JsonValue payload; + + if(m_fromHasBeenSet) + { + payload.WithInteger("From", m_from); + + } + + if(m_toHasBeenSet) + { + payload.WithInteger("To", m_to); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclRuleAction.cpp b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclRuleAction.cpp new file mode 100644 index 00000000000..725a950461f --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/NetworkAclRuleAction.cpp @@ -0,0 +1,72 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace FMS + { + namespace Model + { + namespace NetworkAclRuleActionMapper + { + + static const int allow_HASH = HashingUtils::HashString("allow"); + static const int deny_HASH = HashingUtils::HashString("deny"); + + + NetworkAclRuleAction GetNetworkAclRuleActionForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == allow_HASH) + { + return NetworkAclRuleAction::allow; + } + else if (hashCode == deny_HASH) + { + return NetworkAclRuleAction::deny; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return NetworkAclRuleAction::NOT_SET; + } + + Aws::String GetNameForNetworkAclRuleAction(NetworkAclRuleAction enumValue) + { + switch(enumValue) + { + case NetworkAclRuleAction::NOT_SET: + return {}; + case NetworkAclRuleAction::allow: + return "allow"; + case NetworkAclRuleAction::deny: + return "deny"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace NetworkAclRuleActionMapper + } // namespace Model + } // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/PolicyOption.cpp b/generated/src/aws-cpp-sdk-fms/source/model/PolicyOption.cpp index 57adad8fa35..d40a073a285 100644 --- a/generated/src/aws-cpp-sdk-fms/source/model/PolicyOption.cpp +++ b/generated/src/aws-cpp-sdk-fms/source/model/PolicyOption.cpp @@ -20,13 +20,15 @@ namespace Model PolicyOption::PolicyOption() : m_networkFirewallPolicyHasBeenSet(false), - m_thirdPartyFirewallPolicyHasBeenSet(false) + m_thirdPartyFirewallPolicyHasBeenSet(false), + m_networkAclCommonPolicyHasBeenSet(false) { } PolicyOption::PolicyOption(JsonView jsonValue) : m_networkFirewallPolicyHasBeenSet(false), - m_thirdPartyFirewallPolicyHasBeenSet(false) + m_thirdPartyFirewallPolicyHasBeenSet(false), + m_networkAclCommonPolicyHasBeenSet(false) { *this = jsonValue; } @@ -47,6 +49,13 @@ PolicyOption& PolicyOption::operator =(JsonView jsonValue) m_thirdPartyFirewallPolicyHasBeenSet = true; } + if(jsonValue.ValueExists("NetworkAclCommonPolicy")) + { + m_networkAclCommonPolicy = jsonValue.GetObject("NetworkAclCommonPolicy"); + + m_networkAclCommonPolicyHasBeenSet = true; + } + return *this; } @@ -66,6 +75,12 @@ JsonValue PolicyOption::Jsonize() const } + if(m_networkAclCommonPolicyHasBeenSet) + { + payload.WithObject("NetworkAclCommonPolicy", m_networkAclCommonPolicy.Jsonize()); + + } + return payload; } diff --git a/generated/src/aws-cpp-sdk-fms/source/model/RemediationAction.cpp b/generated/src/aws-cpp-sdk-fms/source/model/RemediationAction.cpp index 800f0545610..7c20b96747c 100644 --- a/generated/src/aws-cpp-sdk-fms/source/model/RemediationAction.cpp +++ b/generated/src/aws-cpp-sdk-fms/source/model/RemediationAction.cpp @@ -27,7 +27,11 @@ RemediationAction::RemediationAction() : m_eC2ReplaceRouteTableAssociationActionHasBeenSet(false), m_eC2AssociateRouteTableActionHasBeenSet(false), m_eC2CreateRouteTableActionHasBeenSet(false), - m_fMSPolicyUpdateFirewallCreationConfigActionHasBeenSet(false) + m_fMSPolicyUpdateFirewallCreationConfigActionHasBeenSet(false), + m_createNetworkAclActionHasBeenSet(false), + m_replaceNetworkAclAssociationActionHasBeenSet(false), + m_createNetworkAclEntriesActionHasBeenSet(false), + m_deleteNetworkAclEntriesActionHasBeenSet(false) { } @@ -40,7 +44,11 @@ RemediationAction::RemediationAction(JsonView jsonValue) : m_eC2ReplaceRouteTableAssociationActionHasBeenSet(false), m_eC2AssociateRouteTableActionHasBeenSet(false), m_eC2CreateRouteTableActionHasBeenSet(false), - m_fMSPolicyUpdateFirewallCreationConfigActionHasBeenSet(false) + m_fMSPolicyUpdateFirewallCreationConfigActionHasBeenSet(false), + m_createNetworkAclActionHasBeenSet(false), + m_replaceNetworkAclAssociationActionHasBeenSet(false), + m_createNetworkAclEntriesActionHasBeenSet(false), + m_deleteNetworkAclEntriesActionHasBeenSet(false) { *this = jsonValue; } @@ -110,6 +118,34 @@ RemediationAction& RemediationAction::operator =(JsonView jsonValue) m_fMSPolicyUpdateFirewallCreationConfigActionHasBeenSet = true; } + if(jsonValue.ValueExists("CreateNetworkAclAction")) + { + m_createNetworkAclAction = jsonValue.GetObject("CreateNetworkAclAction"); + + m_createNetworkAclActionHasBeenSet = true; + } + + if(jsonValue.ValueExists("ReplaceNetworkAclAssociationAction")) + { + m_replaceNetworkAclAssociationAction = jsonValue.GetObject("ReplaceNetworkAclAssociationAction"); + + m_replaceNetworkAclAssociationActionHasBeenSet = true; + } + + if(jsonValue.ValueExists("CreateNetworkAclEntriesAction")) + { + m_createNetworkAclEntriesAction = jsonValue.GetObject("CreateNetworkAclEntriesAction"); + + m_createNetworkAclEntriesActionHasBeenSet = true; + } + + if(jsonValue.ValueExists("DeleteNetworkAclEntriesAction")) + { + m_deleteNetworkAclEntriesAction = jsonValue.GetObject("DeleteNetworkAclEntriesAction"); + + m_deleteNetworkAclEntriesActionHasBeenSet = true; + } + return *this; } @@ -171,6 +207,30 @@ JsonValue RemediationAction::Jsonize() const } + if(m_createNetworkAclActionHasBeenSet) + { + payload.WithObject("CreateNetworkAclAction", m_createNetworkAclAction.Jsonize()); + + } + + if(m_replaceNetworkAclAssociationActionHasBeenSet) + { + payload.WithObject("ReplaceNetworkAclAssociationAction", m_replaceNetworkAclAssociationAction.Jsonize()); + + } + + if(m_createNetworkAclEntriesActionHasBeenSet) + { + payload.WithObject("CreateNetworkAclEntriesAction", m_createNetworkAclEntriesAction.Jsonize()); + + } + + if(m_deleteNetworkAclEntriesActionHasBeenSet) + { + payload.WithObject("DeleteNetworkAclEntriesAction", m_deleteNetworkAclEntriesAction.Jsonize()); + + } + return payload; } diff --git a/generated/src/aws-cpp-sdk-fms/source/model/ReplaceNetworkAclAssociationAction.cpp b/generated/src/aws-cpp-sdk-fms/source/model/ReplaceNetworkAclAssociationAction.cpp new file mode 100644 index 00000000000..12017fff749 --- /dev/null +++ b/generated/src/aws-cpp-sdk-fms/source/model/ReplaceNetworkAclAssociationAction.cpp @@ -0,0 +1,106 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace FMS +{ +namespace Model +{ + +ReplaceNetworkAclAssociationAction::ReplaceNetworkAclAssociationAction() : + m_descriptionHasBeenSet(false), + m_associationIdHasBeenSet(false), + m_networkAclIdHasBeenSet(false), + m_fMSCanRemediate(false), + m_fMSCanRemediateHasBeenSet(false) +{ +} + +ReplaceNetworkAclAssociationAction::ReplaceNetworkAclAssociationAction(JsonView jsonValue) : + m_descriptionHasBeenSet(false), + m_associationIdHasBeenSet(false), + m_networkAclIdHasBeenSet(false), + m_fMSCanRemediate(false), + m_fMSCanRemediateHasBeenSet(false) +{ + *this = jsonValue; +} + +ReplaceNetworkAclAssociationAction& ReplaceNetworkAclAssociationAction::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Description")) + { + m_description = jsonValue.GetString("Description"); + + m_descriptionHasBeenSet = true; + } + + if(jsonValue.ValueExists("AssociationId")) + { + m_associationId = jsonValue.GetObject("AssociationId"); + + m_associationIdHasBeenSet = true; + } + + if(jsonValue.ValueExists("NetworkAclId")) + { + m_networkAclId = jsonValue.GetObject("NetworkAclId"); + + m_networkAclIdHasBeenSet = true; + } + + if(jsonValue.ValueExists("FMSCanRemediate")) + { + m_fMSCanRemediate = jsonValue.GetBool("FMSCanRemediate"); + + m_fMSCanRemediateHasBeenSet = true; + } + + return *this; +} + +JsonValue ReplaceNetworkAclAssociationAction::Jsonize() const +{ + JsonValue payload; + + if(m_descriptionHasBeenSet) + { + payload.WithString("Description", m_description); + + } + + if(m_associationIdHasBeenSet) + { + payload.WithObject("AssociationId", m_associationId.Jsonize()); + + } + + if(m_networkAclIdHasBeenSet) + { + payload.WithObject("NetworkAclId", m_networkAclId.Jsonize()); + + } + + if(m_fMSCanRemediateHasBeenSet) + { + payload.WithBool("FMSCanRemediate", m_fMSCanRemediate); + + } + + return payload; +} + +} // namespace Model +} // namespace FMS +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-fms/source/model/ResourceViolation.cpp b/generated/src/aws-cpp-sdk-fms/source/model/ResourceViolation.cpp index c0fff0ed2f0..b94aec24bd2 100644 --- a/generated/src/aws-cpp-sdk-fms/source/model/ResourceViolation.cpp +++ b/generated/src/aws-cpp-sdk-fms/source/model/ResourceViolation.cpp @@ -35,13 +35,14 @@ ResourceViolation::ResourceViolation() : m_dnsRuleGroupPriorityConflictViolationHasBeenSet(false), m_dnsDuplicateRuleGroupViolationHasBeenSet(false), m_dnsRuleGroupLimitExceededViolationHasBeenSet(false), - m_possibleRemediationActionsHasBeenSet(false), m_firewallSubnetIsOutOfScopeViolationHasBeenSet(false), m_routeHasOutOfScopeEndpointViolationHasBeenSet(false), m_thirdPartyFirewallMissingFirewallViolationHasBeenSet(false), m_thirdPartyFirewallMissingSubnetViolationHasBeenSet(false), m_thirdPartyFirewallMissingExpectedRouteTableViolationHasBeenSet(false), - m_firewallSubnetMissingVPCEndpointViolationHasBeenSet(false) + m_firewallSubnetMissingVPCEndpointViolationHasBeenSet(false), + m_invalidNetworkAclEntriesViolationHasBeenSet(false), + m_possibleRemediationActionsHasBeenSet(false) { } @@ -62,13 +63,14 @@ ResourceViolation::ResourceViolation(JsonView jsonValue) : m_dnsRuleGroupPriorityConflictViolationHasBeenSet(false), m_dnsDuplicateRuleGroupViolationHasBeenSet(false), m_dnsRuleGroupLimitExceededViolationHasBeenSet(false), - m_possibleRemediationActionsHasBeenSet(false), m_firewallSubnetIsOutOfScopeViolationHasBeenSet(false), m_routeHasOutOfScopeEndpointViolationHasBeenSet(false), m_thirdPartyFirewallMissingFirewallViolationHasBeenSet(false), m_thirdPartyFirewallMissingSubnetViolationHasBeenSet(false), m_thirdPartyFirewallMissingExpectedRouteTableViolationHasBeenSet(false), - m_firewallSubnetMissingVPCEndpointViolationHasBeenSet(false) + m_firewallSubnetMissingVPCEndpointViolationHasBeenSet(false), + m_invalidNetworkAclEntriesViolationHasBeenSet(false), + m_possibleRemediationActionsHasBeenSet(false) { *this = jsonValue; } @@ -187,13 +189,6 @@ ResourceViolation& ResourceViolation::operator =(JsonView jsonValue) m_dnsRuleGroupLimitExceededViolationHasBeenSet = true; } - if(jsonValue.ValueExists("PossibleRemediationActions")) - { - m_possibleRemediationActions = jsonValue.GetObject("PossibleRemediationActions"); - - m_possibleRemediationActionsHasBeenSet = true; - } - if(jsonValue.ValueExists("FirewallSubnetIsOutOfScopeViolation")) { m_firewallSubnetIsOutOfScopeViolation = jsonValue.GetObject("FirewallSubnetIsOutOfScopeViolation"); @@ -236,6 +231,20 @@ ResourceViolation& ResourceViolation::operator =(JsonView jsonValue) m_firewallSubnetMissingVPCEndpointViolationHasBeenSet = true; } + if(jsonValue.ValueExists("InvalidNetworkAclEntriesViolation")) + { + m_invalidNetworkAclEntriesViolation = jsonValue.GetObject("InvalidNetworkAclEntriesViolation"); + + m_invalidNetworkAclEntriesViolationHasBeenSet = true; + } + + if(jsonValue.ValueExists("PossibleRemediationActions")) + { + m_possibleRemediationActions = jsonValue.GetObject("PossibleRemediationActions"); + + m_possibleRemediationActionsHasBeenSet = true; + } + return *this; } @@ -339,12 +348,6 @@ JsonValue ResourceViolation::Jsonize() const } - if(m_possibleRemediationActionsHasBeenSet) - { - payload.WithObject("PossibleRemediationActions", m_possibleRemediationActions.Jsonize()); - - } - if(m_firewallSubnetIsOutOfScopeViolationHasBeenSet) { payload.WithObject("FirewallSubnetIsOutOfScopeViolation", m_firewallSubnetIsOutOfScopeViolation.Jsonize()); @@ -381,6 +384,18 @@ JsonValue ResourceViolation::Jsonize() const } + if(m_invalidNetworkAclEntriesViolationHasBeenSet) + { + payload.WithObject("InvalidNetworkAclEntriesViolation", m_invalidNetworkAclEntriesViolation.Jsonize()); + + } + + if(m_possibleRemediationActionsHasBeenSet) + { + payload.WithObject("PossibleRemediationActions", m_possibleRemediationActions.Jsonize()); + + } + return payload; } diff --git a/generated/src/aws-cpp-sdk-fms/source/model/SecurityServiceType.cpp b/generated/src/aws-cpp-sdk-fms/source/model/SecurityServiceType.cpp index 0914db76656..106e00e15dd 100644 --- a/generated/src/aws-cpp-sdk-fms/source/model/SecurityServiceType.cpp +++ b/generated/src/aws-cpp-sdk-fms/source/model/SecurityServiceType.cpp @@ -30,6 +30,7 @@ namespace Aws static const int DNS_FIREWALL_HASH = HashingUtils::HashString("DNS_FIREWALL"); static const int THIRD_PARTY_FIREWALL_HASH = HashingUtils::HashString("THIRD_PARTY_FIREWALL"); static const int IMPORT_NETWORK_FIREWALL_HASH = HashingUtils::HashString("IMPORT_NETWORK_FIREWALL"); + static const int NETWORK_ACL_COMMON_HASH = HashingUtils::HashString("NETWORK_ACL_COMMON"); SecurityServiceType GetSecurityServiceTypeForName(const Aws::String& name) @@ -75,6 +76,10 @@ namespace Aws { return SecurityServiceType::IMPORT_NETWORK_FIREWALL; } + else if (hashCode == NETWORK_ACL_COMMON_HASH) + { + return SecurityServiceType::NETWORK_ACL_COMMON; + } EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); if(overflowContainer) { @@ -111,6 +116,8 @@ namespace Aws return "THIRD_PARTY_FIREWALL"; case SecurityServiceType::IMPORT_NETWORK_FIREWALL: return "IMPORT_NETWORK_FIREWALL"; + case SecurityServiceType::NETWORK_ACL_COMMON: + return "NETWORK_ACL_COMMON"; default: EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); if(overflowContainer) diff --git a/generated/src/aws-cpp-sdk-fms/source/model/ViolationReason.cpp b/generated/src/aws-cpp-sdk-fms/source/model/ViolationReason.cpp index b49b4808cb4..b5104816211 100644 --- a/generated/src/aws-cpp-sdk-fms/source/model/ViolationReason.cpp +++ b/generated/src/aws-cpp-sdk-fms/source/model/ViolationReason.cpp @@ -48,6 +48,7 @@ namespace Aws static const int RESOURCE_MISSING_DNS_FIREWALL_HASH = HashingUtils::HashString("RESOURCE_MISSING_DNS_FIREWALL"); static const int ROUTE_HAS_OUT_OF_SCOPE_ENDPOINT_HASH = HashingUtils::HashString("ROUTE_HAS_OUT_OF_SCOPE_ENDPOINT"); static const int FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT_HASH = HashingUtils::HashString("FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT"); + static const int INVALID_NETWORK_ACL_ENTRY_HASH = HashingUtils::HashString("INVALID_NETWORK_ACL_ENTRY"); ViolationReason GetViolationReasonForName(const Aws::String& name) @@ -165,6 +166,10 @@ namespace Aws { return ViolationReason::FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT; } + else if (hashCode == INVALID_NETWORK_ACL_ENTRY_HASH) + { + return ViolationReason::INVALID_NETWORK_ACL_ENTRY; + } EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); if(overflowContainer) { @@ -237,6 +242,8 @@ namespace Aws return "ROUTE_HAS_OUT_OF_SCOPE_ENDPOINT"; case ViolationReason::FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT: return "FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT"; + case ViolationReason::INVALID_NETWORK_ACL_ENTRY: + return "INVALID_NETWORK_ACL_ENTRY"; default: EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); if(overflowContainer) diff --git a/generated/src/aws-cpp-sdk-ivs/include/aws/ivs/model/BatchError.h b/generated/src/aws-cpp-sdk-ivs/include/aws/ivs/model/BatchError.h index 2d93a81928d..394bd24825b 100644 --- a/generated/src/aws-cpp-sdk-ivs/include/aws/ivs/model/BatchError.h +++ b/generated/src/aws-cpp-sdk-ivs/include/aws/ivs/model/BatchError.h @@ -39,42 +39,42 @@ namespace Model /** - *

    Channel ARN.

    + *

    ARN of an IVS resource; e.g., channel.

    */ inline const Aws::String& GetArn() const{ return m_arn; } /** - *

    Channel ARN.

    + *

    ARN of an IVS resource; e.g., channel.

    */ inline bool ArnHasBeenSet() const { return m_arnHasBeenSet; } /** - *

    Channel ARN.

    + *

    ARN of an IVS resource; e.g., channel.

    */ inline void SetArn(const Aws::String& value) { m_arnHasBeenSet = true; m_arn = value; } /** - *

    Channel ARN.

    + *

    ARN of an IVS resource; e.g., channel.

    */ inline void SetArn(Aws::String&& value) { m_arnHasBeenSet = true; m_arn = std::move(value); } /** - *

    Channel ARN.

    + *

    ARN of an IVS resource; e.g., channel.

    */ inline void SetArn(const char* value) { m_arnHasBeenSet = true; m_arn.assign(value); } /** - *

    Channel ARN.

    + *

    ARN of an IVS resource; e.g., channel.

    */ inline BatchError& WithArn(const Aws::String& value) { SetArn(value); return *this;} /** - *

    Channel ARN.

    + *

    ARN of an IVS resource; e.g., channel.

    */ inline BatchError& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;} /** - *

    Channel ARN.

    + *

    ARN of an IVS resource; e.g., channel.

    */ inline BatchError& WithArn(const char* value) { SetArn(value); return *this;} diff --git a/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/CreateDBInstanceRequest.h b/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/CreateDBInstanceRequest.h index 72169f4469e..5c74ef8e957 100644 --- a/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/CreateDBInstanceRequest.h +++ b/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/CreateDBInstanceRequest.h @@ -4149,64 +4149,80 @@ namespace Model /** *

    The time zone of the DB instance. The time zone parameter is currently * supported only by Microsoft - * SQL Server.

    + * href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone">RDS + * for Db2 and RDS + * for SQL Server.

    */ inline const Aws::String& GetTimezone() const{ return m_timezone; } /** *

    The time zone of the DB instance. The time zone parameter is currently * supported only by Microsoft - * SQL Server.

    + * href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone">RDS + * for Db2 and RDS + * for SQL Server.

    */ inline bool TimezoneHasBeenSet() const { return m_timezoneHasBeenSet; } /** *

    The time zone of the DB instance. The time zone parameter is currently * supported only by Microsoft - * SQL Server.

    + * href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone">RDS + * for Db2 and RDS + * for SQL Server.

    */ inline void SetTimezone(const Aws::String& value) { m_timezoneHasBeenSet = true; m_timezone = value; } /** *

    The time zone of the DB instance. The time zone parameter is currently * supported only by Microsoft - * SQL Server.

    + * href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone">RDS + * for Db2 and RDS + * for SQL Server.

    */ inline void SetTimezone(Aws::String&& value) { m_timezoneHasBeenSet = true; m_timezone = std::move(value); } /** *

    The time zone of the DB instance. The time zone parameter is currently * supported only by Microsoft - * SQL Server.

    + * href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone">RDS + * for Db2 and RDS + * for SQL Server.

    */ inline void SetTimezone(const char* value) { m_timezoneHasBeenSet = true; m_timezone.assign(value); } /** *

    The time zone of the DB instance. The time zone parameter is currently * supported only by Microsoft - * SQL Server.

    + * href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone">RDS + * for Db2 and RDS + * for SQL Server.

    */ inline CreateDBInstanceRequest& WithTimezone(const Aws::String& value) { SetTimezone(value); return *this;} /** *

    The time zone of the DB instance. The time zone parameter is currently * supported only by Microsoft - * SQL Server.

    + * href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone">RDS + * for Db2 and RDS + * for SQL Server.

    */ inline CreateDBInstanceRequest& WithTimezone(Aws::String&& value) { SetTimezone(std::move(value)); return *this;} /** *

    The time zone of the DB instance. The time zone parameter is currently * supported only by Microsoft - * SQL Server.

    + * href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone">RDS + * for Db2 and RDS + * for SQL Server.

    */ inline CreateDBInstanceRequest& WithTimezone(const char* value) { SetTimezone(value); return *this;} diff --git a/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/DBInstance.h b/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/DBInstance.h index 899ee0f31db..6aaf9b5d452 100644 --- a/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/DBInstance.h +++ b/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/DBInstance.h @@ -2322,57 +2322,65 @@ namespace Model /** *

    The time zone of the DB instance. In most cases, the Timezone - * element is empty. Timezone content appears only for Microsoft SQL - * Server DB instances that were created with a time zone specified.

    + * element is empty. Timezone content appears only for RDS for Db2 and + * RDS for SQL Server DB instances that were created with a time zone + * specified.

    */ inline const Aws::String& GetTimezone() const{ return m_timezone; } /** *

    The time zone of the DB instance. In most cases, the Timezone - * element is empty. Timezone content appears only for Microsoft SQL - * Server DB instances that were created with a time zone specified.

    + * element is empty. Timezone content appears only for RDS for Db2 and + * RDS for SQL Server DB instances that were created with a time zone + * specified.

    */ inline bool TimezoneHasBeenSet() const { return m_timezoneHasBeenSet; } /** *

    The time zone of the DB instance. In most cases, the Timezone - * element is empty. Timezone content appears only for Microsoft SQL - * Server DB instances that were created with a time zone specified.

    + * element is empty. Timezone content appears only for RDS for Db2 and + * RDS for SQL Server DB instances that were created with a time zone + * specified.

    */ inline void SetTimezone(const Aws::String& value) { m_timezoneHasBeenSet = true; m_timezone = value; } /** *

    The time zone of the DB instance. In most cases, the Timezone - * element is empty. Timezone content appears only for Microsoft SQL - * Server DB instances that were created with a time zone specified.

    + * element is empty. Timezone content appears only for RDS for Db2 and + * RDS for SQL Server DB instances that were created with a time zone + * specified.

    */ inline void SetTimezone(Aws::String&& value) { m_timezoneHasBeenSet = true; m_timezone = std::move(value); } /** *

    The time zone of the DB instance. In most cases, the Timezone - * element is empty. Timezone content appears only for Microsoft SQL - * Server DB instances that were created with a time zone specified.

    + * element is empty. Timezone content appears only for RDS for Db2 and + * RDS for SQL Server DB instances that were created with a time zone + * specified.

    */ inline void SetTimezone(const char* value) { m_timezoneHasBeenSet = true; m_timezone.assign(value); } /** *

    The time zone of the DB instance. In most cases, the Timezone - * element is empty. Timezone content appears only for Microsoft SQL - * Server DB instances that were created with a time zone specified.

    + * element is empty. Timezone content appears only for RDS for Db2 and + * RDS for SQL Server DB instances that were created with a time zone + * specified.

    */ inline DBInstance& WithTimezone(const Aws::String& value) { SetTimezone(value); return *this;} /** *

    The time zone of the DB instance. In most cases, the Timezone - * element is empty. Timezone content appears only for Microsoft SQL - * Server DB instances that were created with a time zone specified.

    + * element is empty. Timezone content appears only for RDS for Db2 and + * RDS for SQL Server DB instances that were created with a time zone + * specified.

    */ inline DBInstance& WithTimezone(Aws::String&& value) { SetTimezone(std::move(value)); return *this;} /** *

    The time zone of the DB instance. In most cases, the Timezone - * element is empty. Timezone content appears only for Microsoft SQL - * Server DB instances that were created with a time zone specified.

    + * element is empty. Timezone content appears only for RDS for Db2 and + * RDS for SQL Server DB instances that were created with a time zone + * specified.

    */ inline DBInstance& WithTimezone(const char* value) { SetTimezone(value); return *this;} diff --git a/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/ModifyDBInstanceRequest.h b/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/ModifyDBInstanceRequest.h index c2ec1863b54..0c857e8ba78 100644 --- a/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/ModifyDBInstanceRequest.h +++ b/generated/src/aws-cpp-sdk-rds/include/aws/rds/model/ModifyDBInstanceRequest.h @@ -380,7 +380,7 @@ namespace Model * with a DB instance in a VPC in the Amazon RDS User Guide.

    *

    Changing the subnet group causes an outage during the change. The change is * applied during the next maintenance window, unless you enable - * ApplyImmediately.

    This parameter doesn't apply to RDS Custom + * ApplyImmediately.

    This setting doesn't apply to RDS Custom * DB instances.

    Constraints:

    • If supplied, must match * existing DB subnet group.

    Example: * mydbsubnetgroup

    @@ -396,7 +396,7 @@ namespace Model * with a DB instance in a VPC in the Amazon RDS User Guide.

    *

    Changing the subnet group causes an outage during the change. The change is * applied during the next maintenance window, unless you enable - * ApplyImmediately.

    This parameter doesn't apply to RDS Custom + * ApplyImmediately.

    This setting doesn't apply to RDS Custom * DB instances.

    Constraints:

    • If supplied, must match * existing DB subnet group.

    Example: * mydbsubnetgroup

    @@ -412,7 +412,7 @@ namespace Model * with a DB instance in a VPC in the Amazon RDS User Guide.

    *

    Changing the subnet group causes an outage during the change. The change is * applied during the next maintenance window, unless you enable - * ApplyImmediately.

    This parameter doesn't apply to RDS Custom + * ApplyImmediately.

    This setting doesn't apply to RDS Custom * DB instances.

    Constraints:

    • If supplied, must match * existing DB subnet group.

    Example: * mydbsubnetgroup

    @@ -428,7 +428,7 @@ namespace Model * with a DB instance in a VPC in the Amazon RDS User Guide.

    *

    Changing the subnet group causes an outage during the change. The change is * applied during the next maintenance window, unless you enable - * ApplyImmediately.

    This parameter doesn't apply to RDS Custom + * ApplyImmediately.

    This setting doesn't apply to RDS Custom * DB instances.

    Constraints:

    • If supplied, must match * existing DB subnet group.

    Example: * mydbsubnetgroup

    @@ -444,7 +444,7 @@ namespace Model * with a DB instance in a VPC in the Amazon RDS User Guide.

    *

    Changing the subnet group causes an outage during the change. The change is * applied during the next maintenance window, unless you enable - * ApplyImmediately.

    This parameter doesn't apply to RDS Custom + * ApplyImmediately.

    This setting doesn't apply to RDS Custom * DB instances.

    Constraints:

    • If supplied, must match * existing DB subnet group.

    Example: * mydbsubnetgroup

    @@ -460,7 +460,7 @@ namespace Model * with a DB instance in a VPC in the Amazon RDS User Guide.

    *

    Changing the subnet group causes an outage during the change. The change is * applied during the next maintenance window, unless you enable - * ApplyImmediately.

    This parameter doesn't apply to RDS Custom + * ApplyImmediately.

    This setting doesn't apply to RDS Custom * DB instances.

    Constraints:

    • If supplied, must match * existing DB subnet group.

    Example: * mydbsubnetgroup

    @@ -476,7 +476,7 @@ namespace Model * with a DB instance in a VPC in the Amazon RDS User Guide.

    *

    Changing the subnet group causes an outage during the change. The change is * applied during the next maintenance window, unless you enable - * ApplyImmediately.

    This parameter doesn't apply to RDS Custom + * ApplyImmediately.

    This setting doesn't apply to RDS Custom * DB instances.

    Constraints:

    • If supplied, must match * existing DB subnet group.

    Example: * mydbsubnetgroup

    @@ -492,7 +492,7 @@ namespace Model * with a DB instance in a VPC in the Amazon RDS User Guide.

    *

    Changing the subnet group causes an outage during the change. The change is * applied during the next maintenance window, unless you enable - * ApplyImmediately.

    This parameter doesn't apply to RDS Custom + * ApplyImmediately.

    This setting doesn't apply to RDS Custom * DB instances.

    Constraints:

    • If supplied, must match * existing DB subnet group.

    Example: * mydbsubnetgroup

    @@ -3840,7 +3840,11 @@ namespace Model * database can't be deleted when deletion protection is enabled. By default, * deletion protection isn't enabled. For more information, see - * Deleting a DB Instance.

    + * Deleting a DB Instance.

    This setting doesn't apply to Amazon Aurora + * DB instances. You can enable or disable deletion protection for the DB cluster. + * For more information, see ModifyDBCluster. DB instances in a DB + * cluster can be deleted even when deletion protection is enabled for the DB + * cluster.

    */ inline bool GetDeletionProtection() const{ return m_deletionProtection; } @@ -3849,7 +3853,11 @@ namespace Model * database can't be deleted when deletion protection is enabled. By default, * deletion protection isn't enabled. For more information, see - * Deleting a DB Instance.

    + * Deleting a DB Instance.

    This setting doesn't apply to Amazon Aurora + * DB instances. You can enable or disable deletion protection for the DB cluster. + * For more information, see ModifyDBCluster. DB instances in a DB + * cluster can be deleted even when deletion protection is enabled for the DB + * cluster.

    */ inline bool DeletionProtectionHasBeenSet() const { return m_deletionProtectionHasBeenSet; } @@ -3858,7 +3866,11 @@ namespace Model * database can't be deleted when deletion protection is enabled. By default, * deletion protection isn't enabled. For more information, see - * Deleting a DB Instance.

    + * Deleting a DB Instance.

    This setting doesn't apply to Amazon Aurora + * DB instances. You can enable or disable deletion protection for the DB cluster. + * For more information, see ModifyDBCluster. DB instances in a DB + * cluster can be deleted even when deletion protection is enabled for the DB + * cluster.

    */ inline void SetDeletionProtection(bool value) { m_deletionProtectionHasBeenSet = true; m_deletionProtection = value; } @@ -3867,7 +3879,11 @@ namespace Model * database can't be deleted when deletion protection is enabled. By default, * deletion protection isn't enabled. For more information, see - * Deleting a DB Instance.

    + * Deleting a DB Instance.

    This setting doesn't apply to Amazon Aurora + * DB instances. You can enable or disable deletion protection for the DB cluster. + * For more information, see ModifyDBCluster. DB instances in a DB + * cluster can be deleted even when deletion protection is enabled for the DB + * cluster.

    */ inline ModifyDBInstanceRequest& WithDeletionProtection(bool value) { SetDeletionProtection(value); return *this;} diff --git a/generated/src/aws-cpp-sdk-states/include/aws/states/SFNClient.h b/generated/src/aws-cpp-sdk-states/include/aws/states/SFNClient.h index d85bc7ad0db..f0525c8004c 100644 --- a/generated/src/aws-cpp-sdk-states/include/aws/states/SFNClient.h +++ b/generated/src/aws-cpp-sdk-states/include/aws/states/SFNClient.h @@ -1479,6 +1479,46 @@ namespace SFN return SubmitAsync(&SFNClient::UpdateStateMachineAlias, request, handler, context); } + /** + *

    Validates the syntax of a state machine definition.

    You can validate + * that a state machine definition is correct without creating a state machine + * resource. Step Functions will implicitly perform the same syntax check when you + * invoke CreateStateMachine and UpdateStateMachine. + * State machine definitions are specified using a JSON-based, structured language. + * For more information on Amazon States Language see Amazon + * States Language (ASL).

    Suggested uses for + * ValidateStateMachineDefinition:

    • Integrate + * automated checks into your code review or Continuous Integration (CI) process to + * validate state machine definitions before starting deployments.

    • + *

      Run the validation from a Git pre-commit hook to check your state machine + * definitions before committing them to your source repository.

    + *

    Errors found in the state machine definition will be returned in the + * response as a list of diagnostic elements, rather than raise an + * exception.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::ValidateStateMachineDefinitionOutcome ValidateStateMachineDefinition(const Model::ValidateStateMachineDefinitionRequest& request) const; + + /** + * A Callable wrapper for ValidateStateMachineDefinition that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::ValidateStateMachineDefinitionOutcomeCallable ValidateStateMachineDefinitionCallable(const ValidateStateMachineDefinitionRequestT& request) const + { + return SubmitCallable(&SFNClient::ValidateStateMachineDefinition, request); + } + + /** + * An Async wrapper for ValidateStateMachineDefinition that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void ValidateStateMachineDefinitionAsync(const ValidateStateMachineDefinitionRequestT& request, const ValidateStateMachineDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&SFNClient::ValidateStateMachineDefinition, request, handler, context); + } + void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); diff --git a/generated/src/aws-cpp-sdk-states/include/aws/states/SFNServiceClientModel.h b/generated/src/aws-cpp-sdk-states/include/aws/states/SFNServiceClientModel.h index 028b6a9916d..10eb9303083 100644 --- a/generated/src/aws-cpp-sdk-states/include/aws/states/SFNServiceClientModel.h +++ b/generated/src/aws-cpp-sdk-states/include/aws/states/SFNServiceClientModel.h @@ -54,6 +54,7 @@ #include #include #include +#include /* End of service model headers required in SFNClient header */ namespace Aws @@ -130,6 +131,7 @@ namespace Aws class UpdateMapRunRequest; class UpdateStateMachineRequest; class UpdateStateMachineAliasRequest; + class ValidateStateMachineDefinitionRequest; /* End of service model forward declarations required in SFNClient header */ /* Service model Outcome class definitions */ @@ -169,6 +171,7 @@ namespace Aws typedef Aws::Utils::Outcome UpdateMapRunOutcome; typedef Aws::Utils::Outcome UpdateStateMachineOutcome; typedef Aws::Utils::Outcome UpdateStateMachineAliasOutcome; + typedef Aws::Utils::Outcome ValidateStateMachineDefinitionOutcome; /* End of service model Outcome class definitions */ /* Service model Outcome callable definitions */ @@ -208,6 +211,7 @@ namespace Aws typedef std::future UpdateMapRunOutcomeCallable; typedef std::future UpdateStateMachineOutcomeCallable; typedef std::future UpdateStateMachineAliasOutcomeCallable; + typedef std::future ValidateStateMachineDefinitionOutcomeCallable; /* End of service model Outcome callable definitions */ } // namespace Model @@ -250,6 +254,7 @@ namespace Aws typedef std::function&) > UpdateMapRunResponseReceivedHandler; typedef std::function&) > UpdateStateMachineResponseReceivedHandler; typedef std::function&) > UpdateStateMachineAliasResponseReceivedHandler; + typedef std::function&) > ValidateStateMachineDefinitionResponseReceivedHandler; /* End of service model async handlers definitions */ } // namespace SFN } // namespace Aws diff --git a/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionDiagnostic.h b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionDiagnostic.h new file mode 100644 index 00000000000..676e76dd68f --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionDiagnostic.h @@ -0,0 +1,243 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace SFN +{ +namespace Model +{ + + /** + *

    Describes an error found during validation. Validation errors found in the + * definition return in the response as diagnostic elements, rather than + * raise an exception.

    See Also:

    AWS + * API Reference

    + */ + class ValidateStateMachineDefinitionDiagnostic + { + public: + AWS_SFN_API ValidateStateMachineDefinitionDiagnostic(); + AWS_SFN_API ValidateStateMachineDefinitionDiagnostic(Aws::Utils::Json::JsonView jsonValue); + AWS_SFN_API ValidateStateMachineDefinitionDiagnostic& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_SFN_API Aws::Utils::Json::JsonValue Jsonize() const; + + + /** + *

    A value of ERROR means that you cannot create or update a state + * machine with this definition.

    + */ + inline const ValidateStateMachineDefinitionSeverity& GetSeverity() const{ return m_severity; } + + /** + *

    A value of ERROR means that you cannot create or update a state + * machine with this definition.

    + */ + inline bool SeverityHasBeenSet() const { return m_severityHasBeenSet; } + + /** + *

    A value of ERROR means that you cannot create or update a state + * machine with this definition.

    + */ + inline void SetSeverity(const ValidateStateMachineDefinitionSeverity& value) { m_severityHasBeenSet = true; m_severity = value; } + + /** + *

    A value of ERROR means that you cannot create or update a state + * machine with this definition.

    + */ + inline void SetSeverity(ValidateStateMachineDefinitionSeverity&& value) { m_severityHasBeenSet = true; m_severity = std::move(value); } + + /** + *

    A value of ERROR means that you cannot create or update a state + * machine with this definition.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithSeverity(const ValidateStateMachineDefinitionSeverity& value) { SetSeverity(value); return *this;} + + /** + *

    A value of ERROR means that you cannot create or update a state + * machine with this definition.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithSeverity(ValidateStateMachineDefinitionSeverity&& value) { SetSeverity(std::move(value)); return *this;} + + + /** + *

    Identifying code for the diagnostic.

    + */ + inline const Aws::String& GetCode() const{ return m_code; } + + /** + *

    Identifying code for the diagnostic.

    + */ + inline bool CodeHasBeenSet() const { return m_codeHasBeenSet; } + + /** + *

    Identifying code for the diagnostic.

    + */ + inline void SetCode(const Aws::String& value) { m_codeHasBeenSet = true; m_code = value; } + + /** + *

    Identifying code for the diagnostic.

    + */ + inline void SetCode(Aws::String&& value) { m_codeHasBeenSet = true; m_code = std::move(value); } + + /** + *

    Identifying code for the diagnostic.

    + */ + inline void SetCode(const char* value) { m_codeHasBeenSet = true; m_code.assign(value); } + + /** + *

    Identifying code for the diagnostic.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithCode(const Aws::String& value) { SetCode(value); return *this;} + + /** + *

    Identifying code for the diagnostic.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithCode(Aws::String&& value) { SetCode(std::move(value)); return *this;} + + /** + *

    Identifying code for the diagnostic.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithCode(const char* value) { SetCode(value); return *this;} + + + /** + *

    Message describing the diagnostic condition.

    + */ + inline const Aws::String& GetMessage() const{ return m_message; } + + /** + *

    Message describing the diagnostic condition.

    + */ + inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; } + + /** + *

    Message describing the diagnostic condition.

    + */ + inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; } + + /** + *

    Message describing the diagnostic condition.

    + */ + inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); } + + /** + *

    Message describing the diagnostic condition.

    + */ + inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); } + + /** + *

    Message describing the diagnostic condition.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithMessage(const Aws::String& value) { SetMessage(value); return *this;} + + /** + *

    Message describing the diagnostic condition.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;} + + /** + *

    Message describing the diagnostic condition.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithMessage(const char* value) { SetMessage(value); return *this;} + + + /** + *

    Location of the issue in the state machine, if available.

    For errors + * specific to a field, the location could be in the format: + * /States/<StateName>/<FieldName>, for example: + * /States/FailState/ErrorPath.

    + */ + inline const Aws::String& GetLocation() const{ return m_location; } + + /** + *

    Location of the issue in the state machine, if available.

    For errors + * specific to a field, the location could be in the format: + * /States/<StateName>/<FieldName>, for example: + * /States/FailState/ErrorPath.

    + */ + inline bool LocationHasBeenSet() const { return m_locationHasBeenSet; } + + /** + *

    Location of the issue in the state machine, if available.

    For errors + * specific to a field, the location could be in the format: + * /States/<StateName>/<FieldName>, for example: + * /States/FailState/ErrorPath.

    + */ + inline void SetLocation(const Aws::String& value) { m_locationHasBeenSet = true; m_location = value; } + + /** + *

    Location of the issue in the state machine, if available.

    For errors + * specific to a field, the location could be in the format: + * /States/<StateName>/<FieldName>, for example: + * /States/FailState/ErrorPath.

    + */ + inline void SetLocation(Aws::String&& value) { m_locationHasBeenSet = true; m_location = std::move(value); } + + /** + *

    Location of the issue in the state machine, if available.

    For errors + * specific to a field, the location could be in the format: + * /States/<StateName>/<FieldName>, for example: + * /States/FailState/ErrorPath.

    + */ + inline void SetLocation(const char* value) { m_locationHasBeenSet = true; m_location.assign(value); } + + /** + *

    Location of the issue in the state machine, if available.

    For errors + * specific to a field, the location could be in the format: + * /States/<StateName>/<FieldName>, for example: + * /States/FailState/ErrorPath.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithLocation(const Aws::String& value) { SetLocation(value); return *this;} + + /** + *

    Location of the issue in the state machine, if available.

    For errors + * specific to a field, the location could be in the format: + * /States/<StateName>/<FieldName>, for example: + * /States/FailState/ErrorPath.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithLocation(Aws::String&& value) { SetLocation(std::move(value)); return *this;} + + /** + *

    Location of the issue in the state machine, if available.

    For errors + * specific to a field, the location could be in the format: + * /States/<StateName>/<FieldName>, for example: + * /States/FailState/ErrorPath.

    + */ + inline ValidateStateMachineDefinitionDiagnostic& WithLocation(const char* value) { SetLocation(value); return *this;} + + private: + + ValidateStateMachineDefinitionSeverity m_severity; + bool m_severityHasBeenSet = false; + + Aws::String m_code; + bool m_codeHasBeenSet = false; + + Aws::String m_message; + bool m_messageHasBeenSet = false; + + Aws::String m_location; + bool m_locationHasBeenSet = false; + }; + +} // namespace Model +} // namespace SFN +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionRequest.h b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionRequest.h new file mode 100644 index 00000000000..ee9e3ebf8b8 --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionRequest.h @@ -0,0 +1,150 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace SFN +{ +namespace Model +{ + + /** + */ + class ValidateStateMachineDefinitionRequest : public SFNRequest + { + public: + AWS_SFN_API ValidateStateMachineDefinitionRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "ValidateStateMachineDefinition"; } + + AWS_SFN_API Aws::String SerializePayload() const override; + + AWS_SFN_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; + + + /** + *

    The Amazon States Language definition of the state machine. For more + * information, see Amazon + * States Language (ASL).

    + */ + inline const Aws::String& GetDefinition() const{ return m_definition; } + + /** + *

    The Amazon States Language definition of the state machine. For more + * information, see Amazon + * States Language (ASL).

    + */ + inline bool DefinitionHasBeenSet() const { return m_definitionHasBeenSet; } + + /** + *

    The Amazon States Language definition of the state machine. For more + * information, see Amazon + * States Language (ASL).

    + */ + inline void SetDefinition(const Aws::String& value) { m_definitionHasBeenSet = true; m_definition = value; } + + /** + *

    The Amazon States Language definition of the state machine. For more + * information, see Amazon + * States Language (ASL).

    + */ + inline void SetDefinition(Aws::String&& value) { m_definitionHasBeenSet = true; m_definition = std::move(value); } + + /** + *

    The Amazon States Language definition of the state machine. For more + * information, see Amazon + * States Language (ASL).

    + */ + inline void SetDefinition(const char* value) { m_definitionHasBeenSet = true; m_definition.assign(value); } + + /** + *

    The Amazon States Language definition of the state machine. For more + * information, see Amazon + * States Language (ASL).

    + */ + inline ValidateStateMachineDefinitionRequest& WithDefinition(const Aws::String& value) { SetDefinition(value); return *this;} + + /** + *

    The Amazon States Language definition of the state machine. For more + * information, see Amazon + * States Language (ASL).

    + */ + inline ValidateStateMachineDefinitionRequest& WithDefinition(Aws::String&& value) { SetDefinition(std::move(value)); return *this;} + + /** + *

    The Amazon States Language definition of the state machine. For more + * information, see Amazon + * States Language (ASL).

    + */ + inline ValidateStateMachineDefinitionRequest& WithDefinition(const char* value) { SetDefinition(value); return *this;} + + + /** + *

    The target type of state machine for this definition. The default is + * STANDARD.

    + */ + inline const StateMachineType& GetType() const{ return m_type; } + + /** + *

    The target type of state machine for this definition. The default is + * STANDARD.

    + */ + inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; } + + /** + *

    The target type of state machine for this definition. The default is + * STANDARD.

    + */ + inline void SetType(const StateMachineType& value) { m_typeHasBeenSet = true; m_type = value; } + + /** + *

    The target type of state machine for this definition. The default is + * STANDARD.

    + */ + inline void SetType(StateMachineType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); } + + /** + *

    The target type of state machine for this definition. The default is + * STANDARD.

    + */ + inline ValidateStateMachineDefinitionRequest& WithType(const StateMachineType& value) { SetType(value); return *this;} + + /** + *

    The target type of state machine for this definition. The default is + * STANDARD.

    + */ + inline ValidateStateMachineDefinitionRequest& WithType(StateMachineType&& value) { SetType(std::move(value)); return *this;} + + private: + + Aws::String m_definition; + bool m_definitionHasBeenSet = false; + + StateMachineType m_type; + bool m_typeHasBeenSet = false; + }; + +} // namespace Model +} // namespace SFN +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionResult.h b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionResult.h new file mode 100644 index 00000000000..389afb38238 --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionResult.h @@ -0,0 +1,151 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace SFN +{ +namespace Model +{ + class ValidateStateMachineDefinitionResult + { + public: + AWS_SFN_API ValidateStateMachineDefinitionResult(); + AWS_SFN_API ValidateStateMachineDefinitionResult(const Aws::AmazonWebServiceResult& result); + AWS_SFN_API ValidateStateMachineDefinitionResult& operator=(const Aws::AmazonWebServiceResult& result); + + + /** + *

    The result value will be OK when no syntax errors are found, or + * FAIL if the workflow definition does not pass verification.

    + */ + inline const ValidateStateMachineDefinitionResultCode& GetResult() const{ return m_result; } + + /** + *

    The result value will be OK when no syntax errors are found, or + * FAIL if the workflow definition does not pass verification.

    + */ + inline void SetResult(const ValidateStateMachineDefinitionResultCode& value) { m_result = value; } + + /** + *

    The result value will be OK when no syntax errors are found, or + * FAIL if the workflow definition does not pass verification.

    + */ + inline void SetResult(ValidateStateMachineDefinitionResultCode&& value) { m_result = std::move(value); } + + /** + *

    The result value will be OK when no syntax errors are found, or + * FAIL if the workflow definition does not pass verification.

    + */ + inline ValidateStateMachineDefinitionResult& WithResult(const ValidateStateMachineDefinitionResultCode& value) { SetResult(value); return *this;} + + /** + *

    The result value will be OK when no syntax errors are found, or + * FAIL if the workflow definition does not pass verification.

    + */ + inline ValidateStateMachineDefinitionResult& WithResult(ValidateStateMachineDefinitionResultCode&& value) { SetResult(std::move(value)); return *this;} + + + /** + *

    If the result is OK, this field will be empty. When there are + * errors, this field will contain an array of Diagnostic objects to help + * you troubleshoot.

    + */ + inline const Aws::Vector& GetDiagnostics() const{ return m_diagnostics; } + + /** + *

    If the result is OK, this field will be empty. When there are + * errors, this field will contain an array of Diagnostic objects to help + * you troubleshoot.

    + */ + inline void SetDiagnostics(const Aws::Vector& value) { m_diagnostics = value; } + + /** + *

    If the result is OK, this field will be empty. When there are + * errors, this field will contain an array of Diagnostic objects to help + * you troubleshoot.

    + */ + inline void SetDiagnostics(Aws::Vector&& value) { m_diagnostics = std::move(value); } + + /** + *

    If the result is OK, this field will be empty. When there are + * errors, this field will contain an array of Diagnostic objects to help + * you troubleshoot.

    + */ + inline ValidateStateMachineDefinitionResult& WithDiagnostics(const Aws::Vector& value) { SetDiagnostics(value); return *this;} + + /** + *

    If the result is OK, this field will be empty. When there are + * errors, this field will contain an array of Diagnostic objects to help + * you troubleshoot.

    + */ + inline ValidateStateMachineDefinitionResult& WithDiagnostics(Aws::Vector&& value) { SetDiagnostics(std::move(value)); return *this;} + + /** + *

    If the result is OK, this field will be empty. When there are + * errors, this field will contain an array of Diagnostic objects to help + * you troubleshoot.

    + */ + inline ValidateStateMachineDefinitionResult& AddDiagnostics(const ValidateStateMachineDefinitionDiagnostic& value) { m_diagnostics.push_back(value); return *this; } + + /** + *

    If the result is OK, this field will be empty. When there are + * errors, this field will contain an array of Diagnostic objects to help + * you troubleshoot.

    + */ + inline ValidateStateMachineDefinitionResult& AddDiagnostics(ValidateStateMachineDefinitionDiagnostic&& value) { m_diagnostics.push_back(std::move(value)); return *this; } + + + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + + + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + + + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + + + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + + + inline ValidateStateMachineDefinitionResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + + + inline ValidateStateMachineDefinitionResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + + + inline ValidateStateMachineDefinitionResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + + private: + + ValidateStateMachineDefinitionResultCode m_result; + + Aws::Vector m_diagnostics; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace SFN +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionResultCode.h b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionResultCode.h new file mode 100644 index 00000000000..b404cc24811 --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionResultCode.h @@ -0,0 +1,31 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace SFN +{ +namespace Model +{ + enum class ValidateStateMachineDefinitionResultCode + { + NOT_SET, + OK, + FAIL + }; + +namespace ValidateStateMachineDefinitionResultCodeMapper +{ +AWS_SFN_API ValidateStateMachineDefinitionResultCode GetValidateStateMachineDefinitionResultCodeForName(const Aws::String& name); + +AWS_SFN_API Aws::String GetNameForValidateStateMachineDefinitionResultCode(ValidateStateMachineDefinitionResultCode value); +} // namespace ValidateStateMachineDefinitionResultCodeMapper +} // namespace Model +} // namespace SFN +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionSeverity.h b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionSeverity.h new file mode 100644 index 00000000000..deda146d6be --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/include/aws/states/model/ValidateStateMachineDefinitionSeverity.h @@ -0,0 +1,30 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace SFN +{ +namespace Model +{ + enum class ValidateStateMachineDefinitionSeverity + { + NOT_SET, + ERROR_ + }; + +namespace ValidateStateMachineDefinitionSeverityMapper +{ +AWS_SFN_API ValidateStateMachineDefinitionSeverity GetValidateStateMachineDefinitionSeverityForName(const Aws::String& name); + +AWS_SFN_API Aws::String GetNameForValidateStateMachineDefinitionSeverity(ValidateStateMachineDefinitionSeverity value); +} // namespace ValidateStateMachineDefinitionSeverityMapper +} // namespace Model +} // namespace SFN +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-states/source/SFNClient.cpp b/generated/src/aws-cpp-sdk-states/source/SFNClient.cpp index 44710ec833a..81e36838b66 100644 --- a/generated/src/aws-cpp-sdk-states/source/SFNClient.cpp +++ b/generated/src/aws-cpp-sdk-states/source/SFNClient.cpp @@ -57,6 +57,7 @@ #include #include #include +#include #include @@ -1138,3 +1139,29 @@ UpdateStateMachineAliasOutcome SFNClient::UpdateStateMachineAlias(const UpdateSt {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); } +ValidateStateMachineDefinitionOutcome SFNClient::ValidateStateMachineDefinition(const ValidateStateMachineDefinitionRequest& request) const +{ + AWS_OPERATION_GUARD(ValidateStateMachineDefinition); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, ValidateStateMachineDefinition, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, ValidateStateMachineDefinition, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, ValidateStateMachineDefinition, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".ValidateStateMachineDefinition", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> ValidateStateMachineDefinitionOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, ValidateStateMachineDefinition, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + return ValidateStateMachineDefinitionOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + diff --git a/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionDiagnostic.cpp b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionDiagnostic.cpp new file mode 100644 index 00000000000..cb1f4b97591 --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionDiagnostic.cpp @@ -0,0 +1,105 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace SFN +{ +namespace Model +{ + +ValidateStateMachineDefinitionDiagnostic::ValidateStateMachineDefinitionDiagnostic() : + m_severity(ValidateStateMachineDefinitionSeverity::NOT_SET), + m_severityHasBeenSet(false), + m_codeHasBeenSet(false), + m_messageHasBeenSet(false), + m_locationHasBeenSet(false) +{ +} + +ValidateStateMachineDefinitionDiagnostic::ValidateStateMachineDefinitionDiagnostic(JsonView jsonValue) : + m_severity(ValidateStateMachineDefinitionSeverity::NOT_SET), + m_severityHasBeenSet(false), + m_codeHasBeenSet(false), + m_messageHasBeenSet(false), + m_locationHasBeenSet(false) +{ + *this = jsonValue; +} + +ValidateStateMachineDefinitionDiagnostic& ValidateStateMachineDefinitionDiagnostic::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("severity")) + { + m_severity = ValidateStateMachineDefinitionSeverityMapper::GetValidateStateMachineDefinitionSeverityForName(jsonValue.GetString("severity")); + + m_severityHasBeenSet = true; + } + + if(jsonValue.ValueExists("code")) + { + m_code = jsonValue.GetString("code"); + + m_codeHasBeenSet = true; + } + + if(jsonValue.ValueExists("message")) + { + m_message = jsonValue.GetString("message"); + + m_messageHasBeenSet = true; + } + + if(jsonValue.ValueExists("location")) + { + m_location = jsonValue.GetString("location"); + + m_locationHasBeenSet = true; + } + + return *this; +} + +JsonValue ValidateStateMachineDefinitionDiagnostic::Jsonize() const +{ + JsonValue payload; + + if(m_severityHasBeenSet) + { + payload.WithString("severity", ValidateStateMachineDefinitionSeverityMapper::GetNameForValidateStateMachineDefinitionSeverity(m_severity)); + } + + if(m_codeHasBeenSet) + { + payload.WithString("code", m_code); + + } + + if(m_messageHasBeenSet) + { + payload.WithString("message", m_message); + + } + + if(m_locationHasBeenSet) + { + payload.WithString("location", m_location); + + } + + return payload; +} + +} // namespace Model +} // namespace SFN +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionRequest.cpp b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionRequest.cpp new file mode 100644 index 00000000000..aed332301b5 --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionRequest.cpp @@ -0,0 +1,50 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::SFN::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +ValidateStateMachineDefinitionRequest::ValidateStateMachineDefinitionRequest() : + m_definitionHasBeenSet(false), + m_type(StateMachineType::NOT_SET), + m_typeHasBeenSet(false) +{ +} + +Aws::String ValidateStateMachineDefinitionRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_definitionHasBeenSet) + { + payload.WithString("definition", m_definition); + + } + + if(m_typeHasBeenSet) + { + payload.WithString("type", StateMachineTypeMapper::GetNameForStateMachineType(m_type)); + } + + return payload.View().WriteReadable(); +} + +Aws::Http::HeaderValueCollection ValidateStateMachineDefinitionRequest::GetRequestSpecificHeaders() const +{ + Aws::Http::HeaderValueCollection headers; + headers.insert(Aws::Http::HeaderValuePair("X-Amz-Target", "AWSStepFunctions.ValidateStateMachineDefinition")); + return headers; + +} + + + + diff --git a/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionResult.cpp b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionResult.cpp new file mode 100644 index 00000000000..8e45fb5a423 --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionResult.cpp @@ -0,0 +1,59 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::SFN::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +ValidateStateMachineDefinitionResult::ValidateStateMachineDefinitionResult() : + m_result(ValidateStateMachineDefinitionResultCode::NOT_SET) +{ +} + +ValidateStateMachineDefinitionResult::ValidateStateMachineDefinitionResult(const Aws::AmazonWebServiceResult& result) : + m_result(ValidateStateMachineDefinitionResultCode::NOT_SET) +{ + *this = result; +} + +ValidateStateMachineDefinitionResult& ValidateStateMachineDefinitionResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("result")) + { + m_result = ValidateStateMachineDefinitionResultCodeMapper::GetValidateStateMachineDefinitionResultCodeForName(jsonValue.GetString("result")); + + } + + if(jsonValue.ValueExists("diagnostics")) + { + Aws::Utils::Array diagnosticsJsonList = jsonValue.GetArray("diagnostics"); + for(unsigned diagnosticsIndex = 0; diagnosticsIndex < diagnosticsJsonList.GetLength(); ++diagnosticsIndex) + { + m_diagnostics.push_back(diagnosticsJsonList[diagnosticsIndex].AsObject()); + } + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionResultCode.cpp b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionResultCode.cpp new file mode 100644 index 00000000000..fa70857105a --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionResultCode.cpp @@ -0,0 +1,72 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace SFN + { + namespace Model + { + namespace ValidateStateMachineDefinitionResultCodeMapper + { + + static const int OK_HASH = HashingUtils::HashString("OK"); + static const int FAIL_HASH = HashingUtils::HashString("FAIL"); + + + ValidateStateMachineDefinitionResultCode GetValidateStateMachineDefinitionResultCodeForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == OK_HASH) + { + return ValidateStateMachineDefinitionResultCode::OK; + } + else if (hashCode == FAIL_HASH) + { + return ValidateStateMachineDefinitionResultCode::FAIL; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return ValidateStateMachineDefinitionResultCode::NOT_SET; + } + + Aws::String GetNameForValidateStateMachineDefinitionResultCode(ValidateStateMachineDefinitionResultCode enumValue) + { + switch(enumValue) + { + case ValidateStateMachineDefinitionResultCode::NOT_SET: + return {}; + case ValidateStateMachineDefinitionResultCode::OK: + return "OK"; + case ValidateStateMachineDefinitionResultCode::FAIL: + return "FAIL"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace ValidateStateMachineDefinitionResultCodeMapper + } // namespace Model + } // namespace SFN +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionSeverity.cpp b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionSeverity.cpp new file mode 100644 index 00000000000..91437d5a6a1 --- /dev/null +++ b/generated/src/aws-cpp-sdk-states/source/model/ValidateStateMachineDefinitionSeverity.cpp @@ -0,0 +1,65 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace SFN + { + namespace Model + { + namespace ValidateStateMachineDefinitionSeverityMapper + { + + static const int ERROR__HASH = HashingUtils::HashString("ERROR"); + + + ValidateStateMachineDefinitionSeverity GetValidateStateMachineDefinitionSeverityForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == ERROR__HASH) + { + return ValidateStateMachineDefinitionSeverity::ERROR_; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return ValidateStateMachineDefinitionSeverity::NOT_SET; + } + + Aws::String GetNameForValidateStateMachineDefinitionSeverity(ValidateStateMachineDefinitionSeverity enumValue) + { + switch(enumValue) + { + case ValidateStateMachineDefinitionSeverity::NOT_SET: + return {}; + case ValidateStateMachineDefinitionSeverity::ERROR_: + return "ERROR"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace ValidateStateMachineDefinitionSeverityMapper + } // namespace Model + } // namespace SFN +} // namespace Aws diff --git a/src/aws-cpp-sdk-core/include/aws/core/VersionConfig.h b/src/aws-cpp-sdk-core/include/aws/core/VersionConfig.h index 24cdb2b8028..c13e99d78ef 100644 --- a/src/aws-cpp-sdk-core/include/aws/core/VersionConfig.h +++ b/src/aws-cpp-sdk-core/include/aws/core/VersionConfig.h @@ -4,7 +4,7 @@ */ #pragma once -#define AWS_SDK_VERSION_STRING "1.11.314" +#define AWS_SDK_VERSION_STRING "1.11.315" #define AWS_SDK_VERSION_MAJOR 1 #define AWS_SDK_VERSION_MINOR 11 -#define AWS_SDK_VERSION_PATCH 314 +#define AWS_SDK_VERSION_PATCH 315 diff --git a/tools/code-generation/api-descriptions/appsync-2017-07-25.normal.json b/tools/code-generation/api-descriptions/appsync-2017-07-25.normal.json index 4a99948faa4..a6f9f63e723 100644 --- a/tools/code-generation/api-descriptions/appsync-2017-07-25.normal.json +++ b/tools/code-generation/api-descriptions/appsync-2017-07-25.normal.json @@ -5,6 +5,7 @@ "endpointPrefix":"appsync", "jsonVersion":"1.1", "protocol":"rest-json", + "protocols":["rest-json"], "serviceAbbreviation":"AWSAppSync", "serviceFullName":"AWS AppSync", "serviceId":"AppSync", @@ -4107,7 +4108,7 @@ "type":"string", "max":2048, "min":20, - "pattern":"^arn:[a-z-]*:secretsmanager:[a-z0-9-]*:\\d{12}:secret:[0-9A-Za-z_/-]*$" + "pattern":"^arn:[a-z-]*:secretsmanager:[a-z0-9-]*:\\d{12}:secret:[0-9A-Za-z_/+=.@!-]*$" }, "RdsHttpEndpointConfig":{ "type":"structure", @@ -4869,7 +4870,8 @@ "type":"structure", "required":[ "apiId", - "name" + "name", + "authenticationType" ], "members":{ "apiId":{ diff --git a/tools/code-generation/api-descriptions/fms-2018-01-01.normal.json b/tools/code-generation/api-descriptions/fms-2018-01-01.normal.json index ee7d57c6175..9e7c3190e62 100644 --- a/tools/code-generation/api-descriptions/fms-2018-01-01.normal.json +++ b/tools/code-generation/api-descriptions/fms-2018-01-01.normal.json @@ -5,6 +5,7 @@ "endpointPrefix":"fms", "jsonVersion":"1.1", "protocol":"json", + "protocols":["json"], "serviceAbbreviation":"FMS", "serviceFullName":"Firewall Management Service", "serviceId":"FMS", @@ -211,7 +212,7 @@ {"shape":"InternalErrorException"}, {"shape":"LimitExceededException"} ], - "documentation":"

    Returns information about the specified account's administrative scope. The admistrative scope defines the resources that an Firewall Manager administrator can manage.

    " + "documentation":"

    Returns information about the specified account's administrative scope. The administrative scope defines the resources that an Firewall Manager administrator can manage.

    " }, "GetAppsList":{ "name":"GetAppsList", @@ -242,7 +243,7 @@ {"shape":"InvalidInputException"}, {"shape":"InvalidOperationException"} ], - "documentation":"

    Returns detailed compliance information about the specified member account. Details include resources that are in and out of compliance with the specified policy.

    • Resources are considered noncompliant for WAF and Shield Advanced policies if the specified policy has not been applied to them.

    • Resources are considered noncompliant for security group policies if they are in scope of the policy, they violate one or more of the policy rules, and remediation is disabled or not possible.

    • Resources are considered noncompliant for Network Firewall policies if a firewall is missing in the VPC, if the firewall endpoint isn't set up in an expected Availability Zone and subnet, if a subnet created by the Firewall Manager doesn't have the expected route table, and for modifications to a firewall policy that violate the Firewall Manager policy's rules.

    • Resources are considered noncompliant for DNS Firewall policies if a DNS Firewall rule group is missing from the rule group associations for the VPC.

    " + "documentation":"

    Returns detailed compliance information about the specified member account. Details include resources that are in and out of compliance with the specified policy.

    The reasons for resources being considered compliant depend on the Firewall Manager policy type.

    " }, "GetNotificationChannel":{ "name":"GetNotificationChannel", @@ -598,7 +599,7 @@ {"shape":"InternalErrorException"}, {"shape":"InvalidTypeException"} ], - "documentation":"

    Creates an Firewall Manager policy.

    A Firewall Manager policy is specific to the individual policy type. If you want to enforce multiple policy types across accounts, you can create multiple policies. You can create more than one policy for each type.

    If you add a new account to an organization that you created with Organizations, Firewall Manager automatically applies the policy to the resources in that account that are within scope of the policy.

    Firewall Manager provides the following types of policies:

    • Shield Advanced policy - This policy applies Shield Advanced protection to specified accounts and resources.

    • Security Groups policy - This type of policy gives you control over security groups that are in use throughout your organization in Organizations and lets you enforce a baseline set of rules across your organization.

    • Network Firewall policy - This policy applies Network Firewall protection to your organization's VPCs.

    • DNS Firewall policy - This policy applies Amazon Route 53 Resolver DNS Firewall protections to your organization's VPCs.

    • Third-party firewall policy - This policy applies third-party firewall protections. Third-party firewalls are available by subscription through the Amazon Web Services Marketplace console at Amazon Web Services Marketplace.

      • Palo Alto Networks Cloud NGFW policy - This policy applies Palo Alto Networks Cloud Next Generation Firewall (NGFW) protections and Palo Alto Networks Cloud NGFW rulestacks to your organization's VPCs.

      • Fortigate CNF policy - This policy applies Fortigate Cloud Native Firewall (CNF) protections. Fortigate CNF is a cloud-centered solution that blocks Zero-Day threats and secures cloud infrastructures with industry-leading advanced threat prevention, smart web application firewalls (WAF), and API protection.

    " + "documentation":"

    Creates an Firewall Manager policy.

    A Firewall Manager policy is specific to the individual policy type. If you want to enforce multiple policy types across accounts, you can create multiple policies. You can create more than one policy for each type.

    If you add a new account to an organization that you created with Organizations, Firewall Manager automatically applies the policy to the resources in that account that are within scope of the policy.

    Firewall Manager provides the following types of policies:

    • WAF policy - This policy applies WAF web ACL protections to specified accounts and resources.

    • Shield Advanced policy - This policy applies Shield Advanced protection to specified accounts and resources.

    • Security Groups policy - This type of policy gives you control over security groups that are in use throughout your organization in Organizations and lets you enforce a baseline set of rules across your organization.

    • Network ACL policy - This type of policy gives you control over the network ACLs that are in use throughout your organization in Organizations and lets you enforce a baseline set of first and last network ACL rules across your organization.

    • Network Firewall policy - This policy applies Network Firewall protection to your organization's VPCs.

    • DNS Firewall policy - This policy applies Amazon Route 53 Resolver DNS Firewall protections to your organization's VPCs.

    • Third-party firewall policy - This policy applies third-party firewall protections. Third-party firewalls are available by subscription through the Amazon Web Services Marketplace console at Amazon Web Services Marketplace.

      • Palo Alto Networks Cloud NGFW policy - This policy applies Palo Alto Networks Cloud Next Generation Firewall (NGFW) protections and Palo Alto Networks Cloud NGFW rulestacks to your organization's VPCs.

      • Fortigate CNF policy - This policy applies Fortigate Cloud Native Firewall (CNF) protections. Fortigate CNF is a cloud-centered solution that blocks Zero-Day threats and secures cloud infrastructures with industry-leading advanced threat prevention, smart web application firewalls (WAF), and API protection.

    " }, "PutProtocolsList":{ "name":"PutProtocolsList", @@ -749,7 +750,7 @@ }, "Status":{ "shape":"OrganizationStatus", - "documentation":"

    The current status of the request to onboard a member account as an Firewall Manager administator.

    • ONBOARDING - The account is onboarding to Firewall Manager as an administrator.

    • ONBOARDING_COMPLETE - Firewall Manager The account is onboarded to Firewall Manager as an administrator, and can perform actions on the resources defined in their AdminScope.

    • OFFBOARDING - The account is being removed as an Firewall Manager administrator.

    • OFFBOARDING_COMPLETE - The account has been removed as an Firewall Manager administrator.

    " + "documentation":"

    The current status of the request to onboard a member account as an Firewall Manager administrator.

    • ONBOARDING - The account is onboarding to Firewall Manager as an administrator.

    • ONBOARDING_COMPLETE - Firewall Manager The account is onboarded to Firewall Manager as an administrator, and can perform actions on the resources defined in their AdminScope.

    • OFFBOARDING - The account is being removed as an Firewall Manager administrator.

    • OFFBOARDING_COMPLETE - The account has been removed as an Firewall Manager administrator.

    " } }, "documentation":"

    Contains high level information about the Firewall Manager administrator account.

    " @@ -1034,6 +1035,7 @@ } }, "Boolean":{"type":"boolean"}, + "BooleanObject":{"type":"boolean"}, "CIDR":{ "type":"string", "max":256, @@ -1071,6 +1073,46 @@ "type":"list", "member":{"shape":"ComplianceViolator"} }, + "CreateNetworkAclAction":{ + "type":"structure", + "members":{ + "Description":{ + "shape":"LengthBoundedString", + "documentation":"

    Brief description of this remediation action.

    " + }, + "Vpc":{ + "shape":"ActionTarget", + "documentation":"

    The VPC that's associated with the remediation action.

    " + }, + "FMSCanRemediate":{ + "shape":"Boolean", + "documentation":"

    Indicates whether it is possible for Firewall Manager to perform this remediation action. A false value indicates that auto remediation is disabled or Firewall Manager is unable to perform the action due to a conflict of some kind.

    " + } + }, + "documentation":"

    Information about the CreateNetworkAcl action in Amazon EC2. This is a remediation option in RemediationAction.

    " + }, + "CreateNetworkAclEntriesAction":{ + "type":"structure", + "members":{ + "Description":{ + "shape":"LengthBoundedString", + "documentation":"

    Brief description of this remediation action.

    " + }, + "NetworkAclId":{ + "shape":"ActionTarget", + "documentation":"

    The network ACL that's associated with the remediation action.

    " + }, + "NetworkAclEntriesToBeCreated":{ + "shape":"EntriesDescription", + "documentation":"

    Lists the entries that the remediation action would create.

    " + }, + "FMSCanRemediate":{ + "shape":"Boolean", + "documentation":"

    Indicates whether it is possible for Firewall Manager to perform this remediation action. A false value indicates that auto remediation is disabled or Firewall Manager is unable to perform the action due to a conflict of some kind.

    " + } + }, + "documentation":"

    Information about the CreateNetworkAclEntries action in Amazon EC2. This is a remediation option in RemediationAction.

    " + }, "CustomerPolicyScopeId":{ "type":"string", "max":1024, @@ -1110,6 +1152,28 @@ } } }, + "DeleteNetworkAclEntriesAction":{ + "type":"structure", + "members":{ + "Description":{ + "shape":"LengthBoundedString", + "documentation":"

    Brief description of this remediation action.

    " + }, + "NetworkAclId":{ + "shape":"ActionTarget", + "documentation":"

    The network ACL that's associated with the remediation action.

    " + }, + "NetworkAclEntriesToBeDeleted":{ + "shape":"EntriesDescription", + "documentation":"

    Lists the entries that the remediation action would delete.

    " + }, + "FMSCanRemediate":{ + "shape":"Boolean", + "documentation":"

    Indicates whether it is possible for Firewall Manager to perform this remediation action. A false value indicates that auto remediation is disabled or Firewall Manager is unable to perform the action due to a conflict of some kind.

    " + } + }, + "documentation":"

    Information about the DeleteNetworkAclEntries action in Amazon EC2. This is a remediation option in RemediationAction.

    " + }, "DeleteNotificationChannelRequest":{ "type":"structure", "members":{ @@ -1469,6 +1533,86 @@ }, "documentation":"

    Information about the ReplaceRouteTableAssociation action in Amazon EC2.

    " }, + "EntriesDescription":{ + "type":"list", + "member":{"shape":"EntryDescription"} + }, + "EntriesWithConflicts":{ + "type":"list", + "member":{"shape":"EntryDescription"} + }, + "EntryDescription":{ + "type":"structure", + "members":{ + "EntryDetail":{ + "shape":"NetworkAclEntry", + "documentation":"

    Describes a rule in a network ACL.

    Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the network ACL, Amazon Web Services processes the entries in the network ACL according to the rule numbers, in ascending order.

    When you manage an individual network ACL, you explicitly specify the rule numbers. When you specify the network ACL rules in a Firewall Manager policy, you provide the rules to run first, in the order that you want them to run, and the rules to run last, in the order that you want them to run. Firewall Manager assigns the rule numbers for you when you save the network ACL policy specification.

    " + }, + "EntryRuleNumber":{ + "shape":"IntegerObjectMinimum0", + "documentation":"

    The rule number for the entry. ACL entries are processed in ascending order by rule number. In a Firewall Manager network ACL policy, Firewall Manager assigns rule numbers.

    " + }, + "EntryType":{ + "shape":"EntryType", + "documentation":"

    Specifies whether the entry is managed by Firewall Manager or by a user, and, for Firewall Manager-managed entries, specifies whether the entry is among those that run first in the network ACL or those that run last.

    " + } + }, + "documentation":"

    Describes a single rule in a network ACL.

    " + }, + "EntryType":{ + "type":"string", + "enum":[ + "FMS_MANAGED_FIRST_ENTRY", + "FMS_MANAGED_LAST_ENTRY", + "CUSTOM_ENTRY" + ] + }, + "EntryViolation":{ + "type":"structure", + "members":{ + "ExpectedEntry":{ + "shape":"EntryDescription", + "documentation":"

    The Firewall Manager-managed network ACL entry that is involved in the entry violation.

    " + }, + "ExpectedEvaluationOrder":{ + "shape":"LengthBoundedString", + "documentation":"

    The evaluation location within the ordered list of entries where the ExpectedEntry should be, according to the network ACL policy specifications.

    " + }, + "ActualEvaluationOrder":{ + "shape":"LengthBoundedString", + "documentation":"

    The evaluation location within the ordered list of entries where the ExpectedEntry is currently located.

    " + }, + "EntryAtExpectedEvaluationOrder":{ + "shape":"EntryDescription", + "documentation":"

    The entry that's currently in the ExpectedEvaluationOrder location, in place of the expected entry.

    " + }, + "EntriesWithConflicts":{ + "shape":"EntriesWithConflicts", + "documentation":"

    The list of entries that are in conflict with ExpectedEntry.

    " + }, + "EntryViolationReasons":{ + "shape":"EntryViolationReasons", + "documentation":"

    Descriptions of the violations that Firewall Manager found for these entries.

    " + } + }, + "documentation":"

    Detailed information about an entry violation in a network ACL. The violation is against the network ACL specification inside the Firewall Manager network ACL policy. This data object is part of InvalidNetworkAclEntriesViolation.

    " + }, + "EntryViolationReason":{ + "type":"string", + "enum":[ + "MISSING_EXPECTED_ENTRY", + "INCORRECT_ENTRY_ORDER", + "ENTRY_CONFLICT" + ] + }, + "EntryViolationReasons":{ + "type":"list", + "member":{"shape":"EntryViolationReason"} + }, + "EntryViolations":{ + "type":"list", + "member":{"shape":"EntryViolation"} + }, "ErrorMessage":{"type":"string"}, "EvaluationResult":{ "type":"structure", @@ -1660,7 +1804,7 @@ "members":{ "AdminAccount":{ "shape":"AWSAccountId", - "documentation":"

    The administator account that you want to get the details for.

    " + "documentation":"

    The administrator account that you want to get the details for.

    " } } }, @@ -1673,7 +1817,7 @@ }, "Status":{ "shape":"OrganizationStatus", - "documentation":"

    The current status of the request to onboard a member account as an Firewall Manager administator.

    • ONBOARDING - The account is onboarding to Firewall Manager as an administrator.

    • ONBOARDING_COMPLETE - Firewall Manager The account is onboarded to Firewall Manager as an administrator, and can perform actions on the resources defined in their AdminScope.

    • OFFBOARDING - The account is being removed as an Firewall Manager administrator.

    • OFFBOARDING_COMPLETE - The account has been removed as an Firewall Manager administrator.

    " + "documentation":"

    The current status of the request to onboard a member account as an Firewall Manager administrator.

    • ONBOARDING - The account is onboarding to Firewall Manager as an administrator.

    • ONBOARDING_COMPLETE - Firewall Manager The account is onboarded to Firewall Manager as an administrator, and can perform actions on the resources defined in their AdminScope.

    • OFFBOARDING - The account is being removed as an Firewall Manager administrator.

    • OFFBOARDING_COMPLETE - The account has been removed as an Firewall Manager administrator.

    " } } }, @@ -1910,7 +2054,7 @@ "members":{ "PolicyId":{ "shape":"PolicyId", - "documentation":"

    The ID of the Firewall Manager policy that you want the details for. You can get violation details for the following policy types:

    • DNS Firewall

    • Imported Network Firewall

    • Network Firewall

    • Security group content audit

    • Third-party firewall

    " + "documentation":"

    The ID of the Firewall Manager policy that you want the details for. You can get violation details for the following policy types:

    • DNS Firewall

    • Imported Network Firewall

    • Network Firewall

    • Security group content audit

    • Network ACL

    • Third-party firewall

    " }, "MemberAccount":{ "shape":"AWSAccountId", @@ -1940,6 +2084,11 @@ "max":65535, "min":0 }, + "IPPortNumberInteger":{ + "type":"integer", + "max":65535, + "min":0 + }, "Identifier":{ "type":"string", "max":2048, @@ -1950,6 +2099,16 @@ "type":"list", "member":{"shape":"Identifier"} }, + "IntegerObject":{ + "type":"integer", + "max":2147483647, + "min":-2147483648 + }, + "IntegerObjectMinimum0":{ + "type":"integer", + "max":2147483647, + "min":0 + }, "InternalErrorException":{ "type":"structure", "members":{ @@ -1966,6 +2125,32 @@ "documentation":"

    The parameters of the request were invalid.

    ", "exception":true }, + "InvalidNetworkAclEntriesViolation":{ + "type":"structure", + "members":{ + "Vpc":{ + "shape":"ResourceId", + "documentation":"

    The VPC where the violation was found.

    " + }, + "Subnet":{ + "shape":"ResourceId", + "documentation":"

    The subnet that's associated with the network ACL.

    " + }, + "SubnetAvailabilityZone":{ + "shape":"LengthBoundedString", + "documentation":"

    The Availability Zone where the network ACL is in use.

    " + }, + "CurrentAssociatedNetworkAcl":{ + "shape":"ResourceId", + "documentation":"

    The network ACL containing the entry violations.

    " + }, + "EntryViolations":{ + "shape":"EntryViolations", + "documentation":"

    Detailed information about the entry violations in the network ACL.

    " + } + }, + "documentation":"

    Violation detail for the entries in a network ACL resource.

    " + }, "InvalidOperationException":{ "type":"structure", "members":{ @@ -1987,6 +2172,11 @@ "key":{"shape":"DependentServiceName"}, "value":{"shape":"DetailedInfo"} }, + "LengthBoundedNonEmptyString":{ + "type":"string", + "max":1024, + "min":1 + }, "LengthBoundedString":{ "type":"string", "max":1024, @@ -2380,6 +2570,121 @@ "min":1, "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$" }, + "NetworkAclCommonPolicy":{ + "type":"structure", + "required":["NetworkAclEntrySet"], + "members":{ + "NetworkAclEntrySet":{ + "shape":"NetworkAclEntrySet", + "documentation":"

    The definition of the first and last rules for the network ACL policy.

    " + } + }, + "documentation":"

    Defines a Firewall Manager network ACL policy. This is used in the PolicyOption of a SecurityServicePolicyData for a Policy, when the SecurityServicePolicyData type is set to NETWORK_ACL_COMMON.

    For information about network ACLs, see Control traffic to subnets using network ACLs in the Amazon Virtual Private Cloud User Guide.

    " + }, + "NetworkAclEntries":{ + "type":"list", + "member":{"shape":"NetworkAclEntry"} + }, + "NetworkAclEntry":{ + "type":"structure", + "required":[ + "Protocol", + "RuleAction", + "Egress" + ], + "members":{ + "IcmpTypeCode":{ + "shape":"NetworkAclIcmpTypeCode", + "documentation":"

    ICMP protocol: The ICMP type and code.

    " + }, + "Protocol":{ + "shape":"LengthBoundedString", + "documentation":"

    The protocol number. A value of \"-1\" means all protocols.

    " + }, + "PortRange":{ + "shape":"NetworkAclPortRange", + "documentation":"

    TCP or UDP protocols: The range of ports the rule applies to.

    " + }, + "CidrBlock":{ + "shape":"LengthBoundedNonEmptyString", + "documentation":"

    The IPv4 network range to allow or deny, in CIDR notation.

    " + }, + "Ipv6CidrBlock":{ + "shape":"LengthBoundedNonEmptyString", + "documentation":"

    The IPv6 network range to allow or deny, in CIDR notation.

    " + }, + "RuleAction":{ + "shape":"NetworkAclRuleAction", + "documentation":"

    Indicates whether to allow or deny the traffic that matches the rule.

    " + }, + "Egress":{ + "shape":"BooleanObject", + "documentation":"

    Indicates whether the rule is an egress, or outbound, rule (applied to traffic leaving the subnet). If it's not an egress rule, then it's an ingress, or inbound, rule.

    " + } + }, + "documentation":"

    Describes a rule in a network ACL.

    Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the network ACL, Amazon Web Services processes the entries in the network ACL according to the rule numbers, in ascending order.

    When you manage an individual network ACL, you explicitly specify the rule numbers. When you specify the network ACL rules in a Firewall Manager policy, you provide the rules to run first, in the order that you want them to run, and the rules to run last, in the order that you want them to run. Firewall Manager assigns the rule numbers for you when you save the network ACL policy specification.

    " + }, + "NetworkAclEntrySet":{ + "type":"structure", + "required":[ + "ForceRemediateForFirstEntries", + "ForceRemediateForLastEntries" + ], + "members":{ + "FirstEntries":{ + "shape":"NetworkAclEntries", + "documentation":"

    The rules that you want to run first in the Firewall Manager managed network ACLs.

    Provide these in the order in which you want them to run. Firewall Manager will assign the specific rule numbers for you, in the network ACLs that it creates.

    " + }, + "ForceRemediateForFirstEntries":{ + "shape":"BooleanObject", + "documentation":"

    Applies only when remediation is enabled for the policy as a whole. Firewall Manager uses this setting when it finds policy violations that involve conflicts between the custom entries and the policy entries.

    If forced remediation is disabled, Firewall Manager marks the network ACL as noncompliant and does not try to remediate. For more information about the remediation behavior, see Network access control list (ACL) policies in the Firewall Manager Developer Guide.

    " + }, + "LastEntries":{ + "shape":"NetworkAclEntries", + "documentation":"

    The rules that you want to run last in the Firewall Manager managed network ACLs.

    Provide these in the order in which you want them to run. Firewall Manager will assign the specific rule numbers for you, in the network ACLs that it creates.

    " + }, + "ForceRemediateForLastEntries":{ + "shape":"BooleanObject", + "documentation":"

    Applies only when remediation is enabled for the policy as a whole. Firewall Manager uses this setting when it finds policy violations that involve conflicts between the custom entries and the policy entries.

    If forced remediation is disabled, Firewall Manager marks the network ACL as noncompliant and does not try to remediate. For more information about the remediation behavior, see Network access control list (ACL) policies in the Firewall Manager Developer Guide.

    " + } + }, + "documentation":"

    The configuration of the first and last rules for the network ACL policy, and the remediation settings for each.

    " + }, + "NetworkAclIcmpTypeCode":{ + "type":"structure", + "members":{ + "Code":{ + "shape":"IntegerObject", + "documentation":"

    ICMP code.

    " + }, + "Type":{ + "shape":"IntegerObject", + "documentation":"

    ICMP type.

    " + } + }, + "documentation":"

    ICMP protocol: The ICMP type and code.

    " + }, + "NetworkAclPortRange":{ + "type":"structure", + "members":{ + "From":{ + "shape":"IPPortNumberInteger", + "documentation":"

    The beginning port number of the range.

    " + }, + "To":{ + "shape":"IPPortNumberInteger", + "documentation":"

    The ending port number of the range.

    " + } + }, + "documentation":"

    TCP or UDP protocols: The range of ports the rule applies to.

    " + }, + "NetworkAclRuleAction":{ + "type":"string", + "enum":[ + "allow", + "deny" + ] + }, "NetworkFirewallAction":{ "type":"string", "max":128, @@ -2864,7 +3169,7 @@ }, "ResourceType":{ "shape":"ResourceType", - "documentation":"

    The type of resource protected by or in scope of the policy. This is in the format shown in the Amazon Web Services Resource Types Reference. To apply this policy to multiple resource types, specify a resource type of ResourceTypeList and then specify the resource types in a ResourceTypeList.

    The following are valid resource types for each Firewall Manager policy type:

    • Amazon Web Services WAF Classic - AWS::ApiGateway::Stage, AWS::CloudFront::Distribution, and AWS::ElasticLoadBalancingV2::LoadBalancer.

    • WAF - AWS::ApiGateway::Stage, AWS::ElasticLoadBalancingV2::LoadBalancer, and AWS::CloudFront::Distribution.

    • DNS Firewall, Network Firewall, and third-party firewall - AWS::EC2::VPC.

    • Shield Advanced - AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::ElasticLoadBalancing::LoadBalancer, AWS::EC2::EIP, and AWS::CloudFront::Distribution.

    • Security group content audit - AWS::EC2::SecurityGroup, AWS::EC2::NetworkInterface, and AWS::EC2::Instance.

    • Security group usage audit - AWS::EC2::SecurityGroup.

    " + "documentation":"

    The type of resource protected by or in scope of the policy. This is in the format shown in the Amazon Web Services Resource Types Reference. To apply this policy to multiple resource types, specify a resource type of ResourceTypeList and then specify the resource types in a ResourceTypeList.

    The following are valid resource types for each Firewall Manager policy type:

    • Amazon Web Services WAF Classic - AWS::ApiGateway::Stage, AWS::CloudFront::Distribution, and AWS::ElasticLoadBalancingV2::LoadBalancer.

    • WAF - AWS::ApiGateway::Stage, AWS::ElasticLoadBalancingV2::LoadBalancer, and AWS::CloudFront::Distribution.

    • Shield Advanced - AWS::ElasticLoadBalancingV2::LoadBalancer, AWS::ElasticLoadBalancing::LoadBalancer, AWS::EC2::EIP, and AWS::CloudFront::Distribution.

    • Network ACL - AWS::EC2::Subnet.

    • Security group usage audit - AWS::EC2::SecurityGroup.

    • Security group content audit - AWS::EC2::SecurityGroup, AWS::EC2::NetworkInterface, and AWS::EC2::Instance.

    • DNS Firewall, Network Firewall, and third-party firewall - AWS::EC2::VPC.

    " }, "ResourceTypeList":{ "shape":"ResourceTypeList", @@ -3004,9 +3309,13 @@ "ThirdPartyFirewallPolicy":{ "shape":"ThirdPartyFirewallPolicy", "documentation":"

    Defines the policy options for a third-party firewall policy.

    " + }, + "NetworkAclCommonPolicy":{ + "shape":"NetworkAclCommonPolicy", + "documentation":"

    Defines a Firewall Manager network ACL policy.

    " } }, - "documentation":"

    Contains the Network Firewall firewall policy options to configure the policy's deployment model and third-party firewall policy settings.

    " + "documentation":"

    Contains the settings to configure a network ACL policy, a Network Firewall firewall policy deployment model, or a third-party firewall policy.

    " }, "PolicySummary":{ "type":"structure", @@ -3025,7 +3334,7 @@ }, "ResourceType":{ "shape":"ResourceType", - "documentation":"

    The type of resource protected by or in scope of the policy. This is in the format shown in the Amazon Web Services Resource Types Reference. For WAF and Shield Advanced, examples include AWS::ElasticLoadBalancingV2::LoadBalancer and AWS::CloudFront::Distribution. For a security group common policy, valid values are AWS::EC2::NetworkInterface and AWS::EC2::Instance. For a security group content audit policy, valid values are AWS::EC2::SecurityGroup, AWS::EC2::NetworkInterface, and AWS::EC2::Instance. For a security group usage audit policy, the value is AWS::EC2::SecurityGroup. For an Network Firewall policy or DNS Firewall policy, the value is AWS::EC2::VPC.

    " + "documentation":"

    The type of resource protected by or in scope of the policy. This is in the format shown in the Amazon Web Services Resource Types Reference.

    " }, "SecurityServiceType":{ "shape":"SecurityServiceType", @@ -3395,6 +3704,22 @@ "FMSPolicyUpdateFirewallCreationConfigAction":{ "shape":"FMSPolicyUpdateFirewallCreationConfigAction", "documentation":"

    The remedial action to take when updating a firewall configuration.

    " + }, + "CreateNetworkAclAction":{ + "shape":"CreateNetworkAclAction", + "documentation":"

    Information about the CreateNetworkAcl action in Amazon EC2.

    " + }, + "ReplaceNetworkAclAssociationAction":{ + "shape":"ReplaceNetworkAclAssociationAction", + "documentation":"

    Information about the ReplaceNetworkAclAssociation action in Amazon EC2.

    " + }, + "CreateNetworkAclEntriesAction":{ + "shape":"CreateNetworkAclEntriesAction", + "documentation":"

    Information about the CreateNetworkAclEntries action in Amazon EC2.

    " + }, + "DeleteNetworkAclEntriesAction":{ + "shape":"DeleteNetworkAclEntriesAction", + "documentation":"

    Information about the DeleteNetworkAclEntries action in Amazon EC2.

    " } }, "documentation":"

    Information about an individual action you can take to remediate a violation.

    " @@ -3426,6 +3751,25 @@ }, "documentation":"

    An ordered list of actions you can take to remediate a violation.

    " }, + "ReplaceNetworkAclAssociationAction":{ + "type":"structure", + "members":{ + "Description":{ + "shape":"LengthBoundedString", + "documentation":"

    Brief description of this remediation action.

    " + }, + "AssociationId":{"shape":"ActionTarget"}, + "NetworkAclId":{ + "shape":"ActionTarget", + "documentation":"

    The network ACL that's associated with the remediation action.

    " + }, + "FMSCanRemediate":{ + "shape":"Boolean", + "documentation":"

    Indicates whether it is possible for Firewall Manager to perform this remediation action. A false value indicates that auto remediation is disabled or Firewall Manager is unable to perform the action due to a conflict of some kind.

    " + } + }, + "documentation":"

    Information about the ReplaceNetworkAclAssociation action in Amazon EC2. This is a remediation option in RemediationAction.

    " + }, "Resource":{ "type":"structure", "required":["URI"], @@ -3592,7 +3936,7 @@ "ResourceTags":{ "type":"list", "member":{"shape":"ResourceTag"}, - "max":8, + "max":50, "min":0 }, "ResourceType":{ @@ -3669,10 +4013,6 @@ "shape":"DnsRuleGroupLimitExceededViolation", "documentation":"

    Violation detail for a DNS Firewall policy that indicates that the VPC reached the limit for associated DNS Firewall rule groups. Firewall Manager tried to associate another rule group with the VPC and failed.

    " }, - "PossibleRemediationActions":{ - "shape":"PossibleRemediationActions", - "documentation":"

    A list of possible remediation action lists. Each individual possible remediation action is a list of individual remediation actions.

    " - }, "FirewallSubnetIsOutOfScopeViolation":{ "shape":"FirewallSubnetIsOutOfScopeViolation", "documentation":"

    Contains details about the firewall subnet that violates the policy scope.

    " @@ -3696,6 +4036,14 @@ "FirewallSubnetMissingVPCEndpointViolation":{ "shape":"FirewallSubnetMissingVPCEndpointViolation", "documentation":"

    The violation details for a third-party firewall's VPC endpoint subnet that was deleted.

    " + }, + "InvalidNetworkAclEntriesViolation":{ + "shape":"InvalidNetworkAclEntriesViolation", + "documentation":"

    Violation detail for the entries in a network ACL resource.

    " + }, + "PossibleRemediationActions":{ + "shape":"PossibleRemediationActions", + "documentation":"

    A list of possible remediation action lists. Each individual possible remediation action is a list of individual remediation actions.

    " } }, "documentation":"

    Violation detail based on resource type.

    " @@ -3857,11 +4205,11 @@ }, "ManagedServiceData":{ "shape":"ManagedServiceData", - "documentation":"

    Details about the service that are specific to the service type, in JSON format.

    • Example: DNS_FIREWALL

      \"{\\\"type\\\":\\\"DNS_FIREWALL\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupId\\\":\\\"rslvr-frg-1\\\",\\\"priority\\\":10}],\\\"postProcessRuleGroups\\\":[{\\\"ruleGroupId\\\":\\\"rslvr-frg-2\\\",\\\"priority\\\":9911}]}\"

      Valid values for preProcessRuleGroups are between 1 and 99. Valid values for postProcessRuleGroups are between 9901 and 10000.

    • Example: IMPORT_NETWORK_FIREWALL

      \"{\\\"type\\\":\\\"IMPORT_NETWORK_FIREWALL\\\",\\\"awsNetworkFirewallConfig\\\":{\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-west-2:000000000000:stateless-rulegroup\\/rg1\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:drop\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:pass\\\"],\\\"networkFirewallStatelessCustomActions\\\":[],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-west-2:aws-managed:stateful-rulegroup\\/ThreatSignaturesEmergingEventsStrictOrder\\\",\\\"priority\\\":8}],\\\"networkFirewallStatefulEngineOptions\\\":{\\\"ruleOrder\\\":\\\"STRICT_ORDER\\\"},\\\"networkFirewallStatefulDefaultActions\\\":[\\\"aws:drop_strict\\\"]}}\"

      \"{\\\"type\\\":\\\"DNS_FIREWALL\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupId\\\":\\\"rslvr-frg-1\\\",\\\"priority\\\":10}],\\\"postProcessRuleGroups\\\":[{\\\"ruleGroupId\\\":\\\"rslvr-frg-2\\\",\\\"priority\\\":9911}]}\"

      Valid values for preProcessRuleGroups are between 1 and 99. Valid values for postProcessRuleGroups are between 9901 and 10000.

    • Example: NETWORK_FIREWALL - Centralized deployment model

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"awsNetworkFirewallConfig\\\":{\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":true}},\\\"firewallDeploymentModel\\\":{\\\"centralizedFirewallDeploymentModel\\\":{\\\"centralizedFirewallOrchestrationConfig\\\":{\\\"inspectionVpcIds\\\":[{\\\"resourceId\\\":\\\"vpc-1234\\\",\\\"accountId\\\":\\\"123456789011\\\"}],\\\"firewallCreationConfig\\\":{\\\"endpointLocation\\\":{\\\"availabilityZoneConfigList\\\":[{\\\"availabilityZoneId\\\":null,\\\"availabilityZoneName\\\":\\\"us-east-1a\\\",\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\"]}]}},\\\"allowedIPV4CidrList\\\":[]}}}}\"

      To use the centralized deployment model, you must set PolicyOption to CENTRALIZED.

    • Example: NETWORK_FIREWALL - Distributed deployment model with automatic Availability Zone configuration

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallOrchestrationConfig\\\":{\\\"singleFirewallEndpointPerVPC\\\":false,\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\",\\\"192.168.0.0/28\\\"],\\\"routeManagementAction\\\":\\\"OFF\\\"},\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":true}}\"

      With automatic Availbility Zone configuration, Firewall Manager chooses which Availability Zones to create the endpoints in. To use the distributed deployment model, you must set PolicyOption to NULL.

    • Example: NETWORK_FIREWALL - Distributed deployment model with automatic Availability Zone configuration and route management

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallOrchestrationConfig\\\":{\\\"singleFirewallEndpointPerVPC\\\":false,\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\",\\\"192.168.0.0/28\\\"],\\\"routeManagementAction\\\":\\\"MONITOR\\\",\\\"routeManagementTargetTypes\\\":[\\\"InternetGateway\\\"]},\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\": \\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":true}}\"

      To use the distributed deployment model, you must set PolicyOption to NULL.

    • Example: NETWORK_FIREWALL - Distributed deployment model with custom Availability Zone configuration

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"fragmentcustomactionname\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\", \\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}},{\\\"actionName\\\":\\\"fragmentcustomactionname\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"fragmentmetricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallOrchestrationConfig\\\":{\\\"firewallCreationConfig\\\":{ \\\"endpointLocation\\\":{\\\"availabilityZoneConfigList\\\":[{\\\"availabilityZoneName\\\":\\\"us-east-1a\\\",\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\"]},{\\\"availabilityZoneName\\\":\\\"us-east-1b\\\",\\\"allowedIPV4CidrList\\\":[ \\\"10.0.0.0/28\\\"]}]} },\\\"singleFirewallEndpointPerVPC\\\":false,\\\"allowedIPV4CidrList\\\":null,\\\"routeManagementAction\\\":\\\"OFF\\\",\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":boolean}}\"

      With custom Availability Zone configuration, you define which specific Availability Zones to create endpoints in by configuring firewallCreationConfig. To configure the Availability Zones in firewallCreationConfig, specify either the availabilityZoneName or availabilityZoneId parameter, not both parameters.

      To use the distributed deployment model, you must set PolicyOption to NULL.

    • Example: NETWORK_FIREWALL - Distributed deployment model with custom Availability Zone configuration and route management

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"fragmentcustomactionname\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}},{\\\"actionName\\\":\\\"fragmentcustomactionname\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"fragmentmetricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallOrchestrationConfig\\\":{\\\"firewallCreationConfig\\\":{\\\"endpointLocation\\\":{\\\"availabilityZoneConfigList\\\":[{\\\"availabilityZoneName\\\":\\\"us-east-1a\\\",\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\"]},{\\\"availabilityZoneName\\\":\\\"us-east-1b\\\",\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\"]}]}},\\\"singleFirewallEndpointPerVPC\\\":false,\\\"allowedIPV4CidrList\\\":null,\\\"routeManagementAction\\\":\\\"MONITOR\\\",\\\"routeManagementTargetTypes\\\":[\\\"InternetGateway\\\"],\\\"routeManagementConfig\\\":{\\\"allowCrossAZTrafficIfNoEndpoint\\\":true}},\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":boolean}}\"

      To use the distributed deployment model, you must set PolicyOption to NULL.

    • Example: SECURITY_GROUPS_COMMON

      \"{\\\"type\\\":\\\"SECURITY_GROUPS_COMMON\\\",\\\"revertManualSecurityGroupChanges\\\":false,\\\"exclusiveResourceSecurityGroupManagement\\\":false, \\\"applyToAllEC2InstanceENIs\\\":false,\\\"securityGroups\\\":[{\\\"id\\\":\\\" sg-000e55995d61a06bd\\\"}]}\"

    • Example: SECURITY_GROUPS_COMMON - Security group tag distribution

      \"\"{\\\"type\\\":\\\"SECURITY_GROUPS_COMMON\\\",\\\"securityGroups\\\":[{\\\"id\\\":\\\"sg-000e55995d61a06bd\\\"}],\\\"revertManualSecurityGroupChanges\\\":true,\\\"exclusiveResourceSecurityGroupManagement\\\":false,\\\"applyToAllEC2InstanceENIs\\\":false,\\\"includeSharedVPC\\\":false,\\\"enableTagDistribution\\\":true}\"\"

      Firewall Manager automatically distributes tags from the primary group to the security groups created by this policy. To use security group tag distribution, you must also set revertManualSecurityGroupChanges to true, otherwise Firewall Manager won't be able to create the policy. When you enable revertManualSecurityGroupChanges, Firewall Manager identifies and reports when the security groups created by this policy become non-compliant.

      Firewall Manager won't distrubute system tags added by Amazon Web Services services into the replica security groups. System tags begin with the aws: prefix.

    • Example: Shared VPCs. Apply the preceding policy to resources in shared VPCs as well as to those in VPCs that the account owns

      \"{\\\"type\\\":\\\"SECURITY_GROUPS_COMMON\\\",\\\"revertManualSecurityGroupChanges\\\":false,\\\"exclusiveResourceSecurityGroupManagement\\\":false, \\\"applyToAllEC2InstanceENIs\\\":false,\\\"includeSharedVPC\\\":true,\\\"securityGroups\\\":[{\\\"id\\\":\\\" sg-000e55995d61a06bd\\\"}]}\"

    • Example: SECURITY_GROUPS_CONTENT_AUDIT

      \"{\\\"type\\\":\\\"SECURITY_GROUPS_CONTENT_AUDIT\\\",\\\"securityGroups\\\":[{\\\"id\\\":\\\"sg-000e55995d61a06bd\\\"}],\\\"securityGroupAction\\\":{\\\"type\\\":\\\"ALLOW\\\"}}\"

      The security group action for content audit can be ALLOW or DENY. For ALLOW, all in-scope security group rules must be within the allowed range of the policy's security group rules. For DENY, all in-scope security group rules must not contain a value or a range that matches a rule value or range in the policy security group.

    • Example: SECURITY_GROUPS_USAGE_AUDIT

      \"{\\\"type\\\":\\\"SECURITY_GROUPS_USAGE_AUDIT\\\",\\\"deleteUnusedSecurityGroups\\\":true,\\\"coalesceRedundantSecurityGroups\\\":true}\"

    • Example: SHIELD_ADVANCED with web ACL management

      \"{\\\"type\\\":\\\"SHIELD_ADVANCED\\\",\\\"optimizeUnassociatedWebACL\\\":true}\"

      If you set optimizeUnassociatedWebACL to true, Firewall Manager creates web ACLs in accounts within the policy scope if the web ACLs will be used by at least one resource. Firewall Manager creates web ACLs in the accounts within policy scope only if the web ACLs will be used by at least one resource. If at any time an account comes into policy scope, Firewall Manager automatically creates a web ACL in the account if at least one resource will use the web ACL.

      Upon enablement, Firewall Manager performs a one-time cleanup of unused web ACLs in your account. The cleanup process can take several hours. If a resource leaves policy scope after Firewall Manager creates a web ACL, Firewall Manager doesn't disassociate the resource from the web ACL. If you want Firewall Manager to clean up the web ACL, you must first manually disassociate the resources from the web ACL, and then enable the manage unused web ACLs option in your policy.

      If you set optimizeUnassociatedWebACL to false, and Firewall Manager automatically creates an empty web ACL in each account that's within policy scope.

    • Specification for SHIELD_ADVANCED for Amazon CloudFront distributions

      \"{\\\"type\\\":\\\"SHIELD_ADVANCED\\\",\\\"automaticResponseConfiguration\\\": {\\\"automaticResponseStatus\\\":\\\"ENABLED|IGNORED|DISABLED\\\", \\\"automaticResponseAction\\\":\\\"BLOCK|COUNT\\\"}, \\\"overrideCustomerWebaclClassic\\\":true|false, \\\"optimizeUnassociatedWebACL\\\":true|false}\"

      For example: \"{\\\"type\\\":\\\"SHIELD_ADVANCED\\\",\\\"automaticResponseConfiguration\\\": {\\\"automaticResponseStatus\\\":\\\"ENABLED\\\", \\\"automaticResponseAction\\\":\\\"COUNT\\\"}}\"

      The default value for automaticResponseStatus is IGNORED. The value for automaticResponseAction is only required when automaticResponseStatus is set to ENABLED. The default value for overrideCustomerWebaclClassic is false.

      For other resource types that you can protect with a Shield Advanced policy, this ManagedServiceData configuration is an empty string.

    • Example: THIRD_PARTY_FIREWALL

      Replace THIRD_PARTY_FIREWALL_NAME with the name of the third-party firewall.

      \"{ \"type\":\"THIRD_PARTY_FIREWALL\", \"thirdPartyFirewall\":\"THIRD_PARTY_FIREWALL_NAME\", \"thirdPartyFirewallConfig\":{ \"thirdPartyFirewallPolicyList\":[\"global-1\"] }, \"firewallDeploymentModel\":{ \"distributedFirewallDeploymentModel\":{ \"distributedFirewallOrchestrationConfig\":{ \"firewallCreationConfig\":{ \"endpointLocation\":{ \"availabilityZoneConfigList\":[ { \"availabilityZoneName\":\"${AvailabilityZone}\" } ] } }, \"allowedIPV4CidrList\":[ ] } } } }\"

    • Example: WAFV2 - Account takeover prevention, Bot Control managed rule groups, optimize unassociated web ACL, and rule action override

      \"{\\\"type\\\":\\\"WAFV2\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupArn\\\":null,\\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\":{\\\"versionEnabled\\\":null,\\\"version\\\":null,\\\"vendorName\\\":\\\"AWS\\\",\\\"managedRuleGroupName\\\":\\\"AWSManagedRulesATPRuleSet\\\",\\\"managedRuleGroupConfigs\\\":[{\\\"awsmanagedRulesATPRuleSet\\\":{\\\"loginPath\\\":\\\"/loginpath\\\",\\\"requestInspection\\\":{\\\"payloadType\\\":\\\"FORM_ENCODED|JSON\\\",\\\"usernameField\\\":{\\\"identifier\\\":\\\"/form/username\\\"},\\\"passwordField\\\":{\\\"identifier\\\":\\\"/form/password\\\"}}}}]},\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[],\\\"sampledRequestsEnabled\\\":true},{\\\"ruleGroupArn\\\":null,\\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\":{\\\"versionEnabled\\\":null,\\\"version\\\":null,\\\"vendorName\\\":\\\"AWS\\\",\\\"managedRuleGroupName\\\":\\\"AWSManagedRulesBotControlRuleSet\\\",\\\"managedRuleGroupConfigs\\\":[{\\\"awsmanagedRulesBotControlRuleSet\\\":{\\\"inspectionLevel\\\":\\\"TARGETED|COMMON\\\"}}]},\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[],\\\"sampledRequestsEnabled\\\":true,\\\"ruleActionOverrides\\\":[{\\\"name\\\":\\\"Rule1\\\",\\\"actionToUse\\\":{\\\"allow|block|count|captcha|challenge\\\":{}}},{\\\"name\\\":\\\"Rule2\\\",\\\"actionToUse\\\":{\\\"allow|block|count|captcha|challenge\\\":{}}}]}],\\\"postProcessRuleGroups\\\":[],\\\"defaultAction\\\":{\\\"type\\\":\\\"ALLOW\\\"},\\\"customRequestHandling\\\":null,\\\"customResponse\\\":null,\\\"overrideCustomerWebACLAssociation\\\":false,\\\"loggingConfiguration\\\":null,\\\"sampledRequestsEnabledForDefaultActions\\\":true,\\\"optimizeUnassociatedWebACL\\\":true}\"

      • Bot Control - For information about AWSManagedRulesBotControlRuleSet managed rule groups, see AWSManagedRulesBotControlRuleSet in the WAF API Reference.

      • Fraud Control account takeover prevention (ATP) - For information about the properties available for AWSManagedRulesATPRuleSet managed rule groups, see AWSManagedRulesATPRuleSet in the WAF API Reference.

      • Optimize unassociated web ACL - If you set optimizeUnassociatedWebACL to true, Firewall Manager creates web ACLs in accounts within the policy scope if the web ACLs will be used by at least one resource. Firewall Manager creates web ACLs in the accounts within policy scope only if the web ACLs will be used by at least one resource. If at any time an account comes into policy scope, Firewall Manager automatically creates a web ACL in the account if at least one resource will use the web ACL.

        Upon enablement, Firewall Manager performs a one-time cleanup of unused web ACLs in your account. The cleanup process can take several hours. If a resource leaves policy scope after Firewall Manager creates a web ACL, Firewall Manager disassociates the resource from the web ACL, but won't clean up the unused web ACL. Firewall Manager only cleans up unused web ACLs when you first enable management of unused web ACLs in a policy.

        If you set optimizeUnassociatedWebACL to false Firewall Manager doesn't manage unused web ACLs, and Firewall Manager automatically creates an empty web ACL in each account that's within policy scope.

      • Rule action overrides - Firewall Manager supports rule action overrides only for managed rule groups. To configure a RuleActionOverrides add the Name of the rule to override, and ActionToUse, which is the new action to use for the rule. For information about using rule action override, see RuleActionOverride in the WAF API Reference.

    • Example: WAFV2 - CAPTCHA and Challenge configs

      \"{\\\"type\\\":\\\"WAFV2\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupArn\\\":null,\\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\":{\\\"versionEnabled\\\":null,\\\"version\\\":null,\\\"vendorName\\\":\\\"AWS\\\",\\\"managedRuleGroupName\\\":\\\"AWSManagedRulesAdminProtectionRuleSet\\\"},\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[],\\\"sampledRequestsEnabled\\\":true}],\\\"postProcessRuleGroups\\\":[],\\\"defaultAction\\\":{\\\"type\\\":\\\"ALLOW\\\"},\\\"customRequestHandling\\\":null,\\\"customResponse\\\":null,\\\"overrideCustomerWebACLAssociation\\\":false,\\\"loggingConfiguration\\\":null,\\\"sampledRequestsEnabledForDefaultActions\\\":true,\\\"captchaConfig\\\":{\\\"immunityTimeProperty\\\":{\\\"immunityTime\\\":500}},\\\"challengeConfig\\\":{\\\"immunityTimeProperty\\\":{\\\"immunityTime\\\":800}},\\\"tokenDomains\\\":[\\\"google.com\\\",\\\"amazon.com\\\"],\\\"associationConfig\\\":{\\\"requestBody\\\":{\\\"CLOUDFRONT\\\":{\\\"defaultSizeInspectionLimit\\\":\\\"KB_16\\\"}}}}\"

      • CAPTCHA and Challenge configs - If you update the policy's values for associationConfig, captchaConfig, challengeConfig, or tokenDomains, Firewall Manager will overwrite your local web ACLs to contain the new value(s). However, if you don't update the policy's associationConfig, captchaConfig, challengeConfig, or tokenDomains values, the values in your local web ACLs will remain unchanged. For information about association configs, see AssociationConfig. For information about CAPTCHA and Challenge configs, see CaptchaConfig and ChallengeConfig in the WAF API Reference.

      • defaultSizeInspectionLimit - Specifies the maximum size of the web request body component that an associated Amazon CloudFront distribution should send to WAF for inspection. For more information, see DefaultSizeInspectionLimit in the WAF API Reference.

    • Example: WAFV2 - Firewall Manager support for WAF managed rule group versioning

      \"{\\\"type\\\":\\\"WAFV2\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupArn\\\":null,\\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\":{\\\"versionEnabled\\\":true,\\\"version\\\":\\\"Version_2.0\\\",\\\"vendorName\\\":\\\"AWS\\\",\\\"managedRuleGroupName\\\":\\\"AWSManagedRulesCommonRuleSet\\\"},\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[{\\\"name\\\":\\\"NoUserAgent_HEADER\\\"}]}],\\\"postProcessRuleGroups\\\":[],\\\"defaultAction\\\":{\\\"type\\\":\\\"ALLOW\\\"},\\\"overrideCustomerWebACLAssociation\\\":false,\\\"loggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[\\\"arn:aws:firehose:us-west-2:12345678912:deliverystream/aws-waf-logs-fms-admin-destination\\\"],\\\"redactedFields\\\":[{\\\"redactedFieldType\\\":\\\"SingleHeader\\\",\\\"redactedFieldValue\\\":\\\"Cookies\\\"},{\\\"redactedFieldType\\\":\\\"Method\\\"}]}}\"

      To use a specific version of a WAF managed rule group in your Firewall Manager policy, you must set versionEnabled to true, and set version to the version you'd like to use. If you don't set versionEnabled to true, or if you omit versionEnabled, then Firewall Manager uses the default version of the WAF managed rule group.

    • Example: WAFV2 - Logging configurations

      \"{\\\"type\\\":\\\"WAFV2\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupArn\\\":null, \\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\": {\\\"versionEnabled\\\":null,\\\"version\\\":null,\\\"vendorName\\\":\\\"AWS\\\", \\\"managedRuleGroupName\\\":\\\"AWSManagedRulesAdminProtectionRuleSet\\\"} ,\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[], \\\"sampledRequestsEnabled\\\":true}],\\\"postProcessRuleGroups\\\":[], \\\"defaultAction\\\":{\\\"type\\\":\\\"ALLOW\\\"},\\\"customRequestHandling\\\" :null,\\\"customResponse\\\":null,\\\"overrideCustomerWebACLAssociation\\\" :false,\\\"loggingConfiguration\\\":{\\\"logDestinationConfigs\\\": [\\\"arn:aws:s3:::aws-waf-logs-example-bucket\\\"] ,\\\"redactedFields\\\":[],\\\"loggingFilterConfigs\\\":{\\\"defaultBehavior\\\":\\\"KEEP\\\", \\\"filters\\\":[{\\\"behavior\\\":\\\"KEEP\\\",\\\"requirement\\\":\\\"MEETS_ALL\\\", \\\"conditions\\\":[{\\\"actionCondition\\\":\\\"CAPTCHA\\\"},{\\\"actionCondition\\\": \\\"CHALLENGE\\\"}, {\\\"actionCondition\\\":\\\"EXCLUDED_AS_COUNT\\\"}]}]}},\\\"sampledRequestsEnabledForDefaultActions\\\":true}\"

      Firewall Manager supports Amazon Kinesis Data Firehose and Amazon S3 as the logDestinationConfigs in your loggingConfiguration. For information about WAF logging configurations, see LoggingConfiguration in the WAF API Reference

      In the loggingConfiguration, you can specify one logDestinationConfigs. Optionally provide as many as 20 redactedFields. The RedactedFieldType must be one of URI, QUERY_STRING, HEADER, or METHOD.

    • Example: WAF Classic

      \"{\\\"type\\\": \\\"WAF\\\", \\\"ruleGroups\\\": [{\\\"id\\\":\\\"12345678-1bcd-9012-efga-0987654321ab\\\", \\\"overrideAction\\\" : {\\\"type\\\": \\\"COUNT\\\"}}], \\\"defaultAction\\\": {\\\"type\\\": \\\"BLOCK\\\"}}\"

    " + "documentation":"

    Details about the service that are specific to the service type, in JSON format.

    • Example: DNS_FIREWALL

      \"{\\\"type\\\":\\\"DNS_FIREWALL\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupId\\\":\\\"rslvr-frg-1\\\",\\\"priority\\\":10}],\\\"postProcessRuleGroups\\\":[{\\\"ruleGroupId\\\":\\\"rslvr-frg-2\\\",\\\"priority\\\":9911}]}\"

      Valid values for preProcessRuleGroups are between 1 and 99. Valid values for postProcessRuleGroups are between 9901 and 10000.

    • Example: IMPORT_NETWORK_FIREWALL

      \"{\\\"type\\\":\\\"IMPORT_NETWORK_FIREWALL\\\",\\\"awsNetworkFirewallConfig\\\":{\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-west-2:000000000000:stateless-rulegroup\\/rg1\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:drop\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:pass\\\"],\\\"networkFirewallStatelessCustomActions\\\":[],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-west-2:aws-managed:stateful-rulegroup\\/ThreatSignaturesEmergingEventsStrictOrder\\\",\\\"priority\\\":8}],\\\"networkFirewallStatefulEngineOptions\\\":{\\\"ruleOrder\\\":\\\"STRICT_ORDER\\\"},\\\"networkFirewallStatefulDefaultActions\\\":[\\\"aws:drop_strict\\\"]}}\"

      \"{\\\"type\\\":\\\"DNS_FIREWALL\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupId\\\":\\\"rslvr-frg-1\\\",\\\"priority\\\":10}],\\\"postProcessRuleGroups\\\":[{\\\"ruleGroupId\\\":\\\"rslvr-frg-2\\\",\\\"priority\\\":9911}]}\"

      Valid values for preProcessRuleGroups are between 1 and 99. Valid values for postProcessRuleGroups are between 9901 and 10000.

    • Example: NETWORK_FIREWALL - Centralized deployment model

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"awsNetworkFirewallConfig\\\":{\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":true}},\\\"firewallDeploymentModel\\\":{\\\"centralizedFirewallDeploymentModel\\\":{\\\"centralizedFirewallOrchestrationConfig\\\":{\\\"inspectionVpcIds\\\":[{\\\"resourceId\\\":\\\"vpc-1234\\\",\\\"accountId\\\":\\\"123456789011\\\"}],\\\"firewallCreationConfig\\\":{\\\"endpointLocation\\\":{\\\"availabilityZoneConfigList\\\":[{\\\"availabilityZoneId\\\":null,\\\"availabilityZoneName\\\":\\\"us-east-1a\\\",\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\"]}]}},\\\"allowedIPV4CidrList\\\":[]}}}}\"

      To use the centralized deployment model, you must set PolicyOption to CENTRALIZED.

    • Example: NETWORK_FIREWALL - Distributed deployment model with automatic Availability Zone configuration

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallOrchestrationConfig\\\":{\\\"singleFirewallEndpointPerVPC\\\":false,\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\",\\\"192.168.0.0/28\\\"],\\\"routeManagementAction\\\":\\\"OFF\\\"},\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":true}}\"

      With automatic Availbility Zone configuration, Firewall Manager chooses which Availability Zones to create the endpoints in. To use the distributed deployment model, you must set PolicyOption to NULL.

    • Example: NETWORK_FIREWALL - Distributed deployment model with automatic Availability Zone configuration and route management

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallOrchestrationConfig\\\":{\\\"singleFirewallEndpointPerVPC\\\":false,\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\",\\\"192.168.0.0/28\\\"],\\\"routeManagementAction\\\":\\\"MONITOR\\\",\\\"routeManagementTargetTypes\\\":[\\\"InternetGateway\\\"]},\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\": \\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":true}}\"

      To use the distributed deployment model, you must set PolicyOption to NULL.

    • Example: NETWORK_FIREWALL - Distributed deployment model with custom Availability Zone configuration

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"fragmentcustomactionname\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\", \\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}},{\\\"actionName\\\":\\\"fragmentcustomactionname\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"fragmentmetricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallOrchestrationConfig\\\":{\\\"firewallCreationConfig\\\":{ \\\"endpointLocation\\\":{\\\"availabilityZoneConfigList\\\":[{\\\"availabilityZoneName\\\":\\\"us-east-1a\\\",\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\"]},{\\\"availabilityZoneName\\\":\\\"us-east-1b\\\",\\\"allowedIPV4CidrList\\\":[ \\\"10.0.0.0/28\\\"]}]} },\\\"singleFirewallEndpointPerVPC\\\":false,\\\"allowedIPV4CidrList\\\":null,\\\"routeManagementAction\\\":\\\"OFF\\\",\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":boolean}}\"

      With custom Availability Zone configuration, you define which specific Availability Zones to create endpoints in by configuring firewallCreationConfig. To configure the Availability Zones in firewallCreationConfig, specify either the availabilityZoneName or availabilityZoneId parameter, not both parameters.

      To use the distributed deployment model, you must set PolicyOption to NULL.

    • Example: NETWORK_FIREWALL - Distributed deployment model with custom Availability Zone configuration and route management

      \"{\\\"type\\\":\\\"NETWORK_FIREWALL\\\",\\\"networkFirewallStatelessRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\\\",\\\"priority\\\":1}],\\\"networkFirewallStatelessDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"customActionName\\\"],\\\"networkFirewallStatelessFragmentDefaultActions\\\":[\\\"aws:forward_to_sfe\\\",\\\"fragmentcustomactionname\\\"],\\\"networkFirewallStatelessCustomActions\\\":[{\\\"actionName\\\":\\\"customActionName\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"metricdimensionvalue\\\"}]}}},{\\\"actionName\\\":\\\"fragmentcustomactionname\\\",\\\"actionDefinition\\\":{\\\"publishMetricAction\\\":{\\\"dimensions\\\":[{\\\"value\\\":\\\"fragmentmetricdimensionvalue\\\"}]}}}],\\\"networkFirewallStatefulRuleGroupReferences\\\":[{\\\"resourceARN\\\":\\\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\\\"}],\\\"networkFirewallOrchestrationConfig\\\":{\\\"firewallCreationConfig\\\":{\\\"endpointLocation\\\":{\\\"availabilityZoneConfigList\\\":[{\\\"availabilityZoneName\\\":\\\"us-east-1a\\\",\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\"]},{\\\"availabilityZoneName\\\":\\\"us-east-1b\\\",\\\"allowedIPV4CidrList\\\":[\\\"10.0.0.0/28\\\"]}]}},\\\"singleFirewallEndpointPerVPC\\\":false,\\\"allowedIPV4CidrList\\\":null,\\\"routeManagementAction\\\":\\\"MONITOR\\\",\\\"routeManagementTargetTypes\\\":[\\\"InternetGateway\\\"],\\\"routeManagementConfig\\\":{\\\"allowCrossAZTrafficIfNoEndpoint\\\":true}},\\\"networkFirewallLoggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"ALERT\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}},{\\\"logDestinationType\\\":\\\"S3\\\",\\\"logType\\\":\\\"FLOW\\\",\\\"logDestination\\\":{\\\"bucketName\\\":\\\"s3-bucket-name\\\"}}],\\\"overrideExistingConfig\\\":boolean}}\"

      To use the distributed deployment model, you must set PolicyOption to NULL.

    • Example: SECURITY_GROUPS_COMMON

      \"{\\\"type\\\":\\\"SECURITY_GROUPS_COMMON\\\",\\\"revertManualSecurityGroupChanges\\\":false,\\\"exclusiveResourceSecurityGroupManagement\\\":false, \\\"applyToAllEC2InstanceENIs\\\":false,\\\"securityGroups\\\":[{\\\"id\\\":\\\" sg-000e55995d61a06bd\\\"}]}\"

    • Example: SECURITY_GROUPS_COMMON - Security group tag distribution

      \"\"{\\\"type\\\":\\\"SECURITY_GROUPS_COMMON\\\",\\\"securityGroups\\\":[{\\\"id\\\":\\\"sg-000e55995d61a06bd\\\"}],\\\"revertManualSecurityGroupChanges\\\":true,\\\"exclusiveResourceSecurityGroupManagement\\\":false,\\\"applyToAllEC2InstanceENIs\\\":false,\\\"includeSharedVPC\\\":false,\\\"enableTagDistribution\\\":true}\"\"

      Firewall Manager automatically distributes tags from the primary group to the security groups created by this policy. To use security group tag distribution, you must also set revertManualSecurityGroupChanges to true, otherwise Firewall Manager won't be able to create the policy. When you enable revertManualSecurityGroupChanges, Firewall Manager identifies and reports when the security groups created by this policy become non-compliant.

      Firewall Manager won't distribute system tags added by Amazon Web Services services into the replica security groups. System tags begin with the aws: prefix.

    • Example: Shared VPCs. Apply the preceding policy to resources in shared VPCs as well as to those in VPCs that the account owns

      \"{\\\"type\\\":\\\"SECURITY_GROUPS_COMMON\\\",\\\"revertManualSecurityGroupChanges\\\":false,\\\"exclusiveResourceSecurityGroupManagement\\\":false, \\\"applyToAllEC2InstanceENIs\\\":false,\\\"includeSharedVPC\\\":true,\\\"securityGroups\\\":[{\\\"id\\\":\\\" sg-000e55995d61a06bd\\\"}]}\"

    • Example: SECURITY_GROUPS_CONTENT_AUDIT

      \"{\\\"type\\\":\\\"SECURITY_GROUPS_CONTENT_AUDIT\\\",\\\"securityGroups\\\":[{\\\"id\\\":\\\"sg-000e55995d61a06bd\\\"}],\\\"securityGroupAction\\\":{\\\"type\\\":\\\"ALLOW\\\"}}\"

      The security group action for content audit can be ALLOW or DENY. For ALLOW, all in-scope security group rules must be within the allowed range of the policy's security group rules. For DENY, all in-scope security group rules must not contain a value or a range that matches a rule value or range in the policy security group.

    • Example: SECURITY_GROUPS_USAGE_AUDIT

      \"{\\\"type\\\":\\\"SECURITY_GROUPS_USAGE_AUDIT\\\",\\\"deleteUnusedSecurityGroups\\\":true,\\\"coalesceRedundantSecurityGroups\\\":true}\"

    • Example: SHIELD_ADVANCED with web ACL management

      \"{\\\"type\\\":\\\"SHIELD_ADVANCED\\\",\\\"optimizeUnassociatedWebACL\\\":true}\"

      If you set optimizeUnassociatedWebACL to true, Firewall Manager creates web ACLs in accounts within the policy scope if the web ACLs will be used by at least one resource. Firewall Manager creates web ACLs in the accounts within policy scope only if the web ACLs will be used by at least one resource. If at any time an account comes into policy scope, Firewall Manager automatically creates a web ACL in the account if at least one resource will use the web ACL.

      Upon enablement, Firewall Manager performs a one-time cleanup of unused web ACLs in your account. The cleanup process can take several hours. If a resource leaves policy scope after Firewall Manager creates a web ACL, Firewall Manager doesn't disassociate the resource from the web ACL. If you want Firewall Manager to clean up the web ACL, you must first manually disassociate the resources from the web ACL, and then enable the manage unused web ACLs option in your policy.

      If you set optimizeUnassociatedWebACL to false, and Firewall Manager automatically creates an empty web ACL in each account that's within policy scope.

    • Specification for SHIELD_ADVANCED for Amazon CloudFront distributions

      \"{\\\"type\\\":\\\"SHIELD_ADVANCED\\\",\\\"automaticResponseConfiguration\\\": {\\\"automaticResponseStatus\\\":\\\"ENABLED|IGNORED|DISABLED\\\", \\\"automaticResponseAction\\\":\\\"BLOCK|COUNT\\\"}, \\\"overrideCustomerWebaclClassic\\\":true|false, \\\"optimizeUnassociatedWebACL\\\":true|false}\"

      For example: \"{\\\"type\\\":\\\"SHIELD_ADVANCED\\\",\\\"automaticResponseConfiguration\\\": {\\\"automaticResponseStatus\\\":\\\"ENABLED\\\", \\\"automaticResponseAction\\\":\\\"COUNT\\\"}}\"

      The default value for automaticResponseStatus is IGNORED. The value for automaticResponseAction is only required when automaticResponseStatus is set to ENABLED. The default value for overrideCustomerWebaclClassic is false.

      For other resource types that you can protect with a Shield Advanced policy, this ManagedServiceData configuration is an empty string.

    • Example: THIRD_PARTY_FIREWALL

      Replace THIRD_PARTY_FIREWALL_NAME with the name of the third-party firewall.

      \"{ \"type\":\"THIRD_PARTY_FIREWALL\", \"thirdPartyFirewall\":\"THIRD_PARTY_FIREWALL_NAME\", \"thirdPartyFirewallConfig\":{ \"thirdPartyFirewallPolicyList\":[\"global-1\"] }, \"firewallDeploymentModel\":{ \"distributedFirewallDeploymentModel\":{ \"distributedFirewallOrchestrationConfig\":{ \"firewallCreationConfig\":{ \"endpointLocation\":{ \"availabilityZoneConfigList\":[ { \"availabilityZoneName\":\"${AvailabilityZone}\" } ] } }, \"allowedIPV4CidrList\":[ ] } } } }\"

    • Example: WAFV2 - Account takeover prevention, Bot Control managed rule groups, optimize unassociated web ACL, and rule action override

      \"{\\\"type\\\":\\\"WAFV2\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupArn\\\":null,\\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\":{\\\"versionEnabled\\\":null,\\\"version\\\":null,\\\"vendorName\\\":\\\"AWS\\\",\\\"managedRuleGroupName\\\":\\\"AWSManagedRulesATPRuleSet\\\",\\\"managedRuleGroupConfigs\\\":[{\\\"awsmanagedRulesATPRuleSet\\\":{\\\"loginPath\\\":\\\"/loginpath\\\",\\\"requestInspection\\\":{\\\"payloadType\\\":\\\"FORM_ENCODED|JSON\\\",\\\"usernameField\\\":{\\\"identifier\\\":\\\"/form/username\\\"},\\\"passwordField\\\":{\\\"identifier\\\":\\\"/form/password\\\"}}}}]},\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[],\\\"sampledRequestsEnabled\\\":true},{\\\"ruleGroupArn\\\":null,\\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\":{\\\"versionEnabled\\\":null,\\\"version\\\":null,\\\"vendorName\\\":\\\"AWS\\\",\\\"managedRuleGroupName\\\":\\\"AWSManagedRulesBotControlRuleSet\\\",\\\"managedRuleGroupConfigs\\\":[{\\\"awsmanagedRulesBotControlRuleSet\\\":{\\\"inspectionLevel\\\":\\\"TARGETED|COMMON\\\"}}]},\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[],\\\"sampledRequestsEnabled\\\":true,\\\"ruleActionOverrides\\\":[{\\\"name\\\":\\\"Rule1\\\",\\\"actionToUse\\\":{\\\"allow|block|count|captcha|challenge\\\":{}}},{\\\"name\\\":\\\"Rule2\\\",\\\"actionToUse\\\":{\\\"allow|block|count|captcha|challenge\\\":{}}}]}],\\\"postProcessRuleGroups\\\":[],\\\"defaultAction\\\":{\\\"type\\\":\\\"ALLOW\\\"},\\\"customRequestHandling\\\":null,\\\"customResponse\\\":null,\\\"overrideCustomerWebACLAssociation\\\":false,\\\"loggingConfiguration\\\":null,\\\"sampledRequestsEnabledForDefaultActions\\\":true,\\\"optimizeUnassociatedWebACL\\\":true}\"

      • Bot Control - For information about AWSManagedRulesBotControlRuleSet managed rule groups, see AWSManagedRulesBotControlRuleSet in the WAF API Reference.

      • Fraud Control account takeover prevention (ATP) - For information about the properties available for AWSManagedRulesATPRuleSet managed rule groups, see AWSManagedRulesATPRuleSet in the WAF API Reference.

      • Optimize unassociated web ACL - If you set optimizeUnassociatedWebACL to true, Firewall Manager creates web ACLs in accounts within the policy scope if the web ACLs will be used by at least one resource. Firewall Manager creates web ACLs in the accounts within policy scope only if the web ACLs will be used by at least one resource. If at any time an account comes into policy scope, Firewall Manager automatically creates a web ACL in the account if at least one resource will use the web ACL.

        Upon enablement, Firewall Manager performs a one-time cleanup of unused web ACLs in your account. The cleanup process can take several hours. If a resource leaves policy scope after Firewall Manager creates a web ACL, Firewall Manager disassociates the resource from the web ACL, but won't clean up the unused web ACL. Firewall Manager only cleans up unused web ACLs when you first enable management of unused web ACLs in a policy.

        If you set optimizeUnassociatedWebACL to false Firewall Manager doesn't manage unused web ACLs, and Firewall Manager automatically creates an empty web ACL in each account that's within policy scope.

      • Rule action overrides - Firewall Manager supports rule action overrides only for managed rule groups. To configure a RuleActionOverrides add the Name of the rule to override, and ActionToUse, which is the new action to use for the rule. For information about using rule action override, see RuleActionOverride in the WAF API Reference.

    • Example: WAFV2 - CAPTCHA and Challenge configs

      \"{\\\"type\\\":\\\"WAFV2\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupArn\\\":null,\\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\":{\\\"versionEnabled\\\":null,\\\"version\\\":null,\\\"vendorName\\\":\\\"AWS\\\",\\\"managedRuleGroupName\\\":\\\"AWSManagedRulesAdminProtectionRuleSet\\\"},\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[],\\\"sampledRequestsEnabled\\\":true}],\\\"postProcessRuleGroups\\\":[],\\\"defaultAction\\\":{\\\"type\\\":\\\"ALLOW\\\"},\\\"customRequestHandling\\\":null,\\\"customResponse\\\":null,\\\"overrideCustomerWebACLAssociation\\\":false,\\\"loggingConfiguration\\\":null,\\\"sampledRequestsEnabledForDefaultActions\\\":true,\\\"captchaConfig\\\":{\\\"immunityTimeProperty\\\":{\\\"immunityTime\\\":500}},\\\"challengeConfig\\\":{\\\"immunityTimeProperty\\\":{\\\"immunityTime\\\":800}},\\\"tokenDomains\\\":[\\\"google.com\\\",\\\"amazon.com\\\"],\\\"associationConfig\\\":{\\\"requestBody\\\":{\\\"CLOUDFRONT\\\":{\\\"defaultSizeInspectionLimit\\\":\\\"KB_16\\\"}}}}\"

      • CAPTCHA and Challenge configs - If you update the policy's values for associationConfig, captchaConfig, challengeConfig, or tokenDomains, Firewall Manager will overwrite your local web ACLs to contain the new value(s). However, if you don't update the policy's associationConfig, captchaConfig, challengeConfig, or tokenDomains values, the values in your local web ACLs will remain unchanged. For information about association configs, see AssociationConfig. For information about CAPTCHA and Challenge configs, see CaptchaConfig and ChallengeConfig in the WAF API Reference.

      • defaultSizeInspectionLimit - Specifies the maximum size of the web request body component that an associated Amazon CloudFront distribution should send to WAF for inspection. For more information, see DefaultSizeInspectionLimit in the WAF API Reference.

    • Example: WAFV2 - Firewall Manager support for WAF managed rule group versioning

      \"{\\\"type\\\":\\\"WAFV2\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupArn\\\":null,\\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\":{\\\"versionEnabled\\\":true,\\\"version\\\":\\\"Version_2.0\\\",\\\"vendorName\\\":\\\"AWS\\\",\\\"managedRuleGroupName\\\":\\\"AWSManagedRulesCommonRuleSet\\\"},\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[{\\\"name\\\":\\\"NoUserAgent_HEADER\\\"}]}],\\\"postProcessRuleGroups\\\":[],\\\"defaultAction\\\":{\\\"type\\\":\\\"ALLOW\\\"},\\\"overrideCustomerWebACLAssociation\\\":false,\\\"loggingConfiguration\\\":{\\\"logDestinationConfigs\\\":[\\\"arn:aws:firehose:us-west-2:12345678912:deliverystream/aws-waf-logs-fms-admin-destination\\\"],\\\"redactedFields\\\":[{\\\"redactedFieldType\\\":\\\"SingleHeader\\\",\\\"redactedFieldValue\\\":\\\"Cookies\\\"},{\\\"redactedFieldType\\\":\\\"Method\\\"}]}}\"

      To use a specific version of a WAF managed rule group in your Firewall Manager policy, you must set versionEnabled to true, and set version to the version you'd like to use. If you don't set versionEnabled to true, or if you omit versionEnabled, then Firewall Manager uses the default version of the WAF managed rule group.

    • Example: WAFV2 - Logging configurations

      \"{\\\"type\\\":\\\"WAFV2\\\",\\\"preProcessRuleGroups\\\":[{\\\"ruleGroupArn\\\":null, \\\"overrideAction\\\":{\\\"type\\\":\\\"NONE\\\"},\\\"managedRuleGroupIdentifier\\\": {\\\"versionEnabled\\\":null,\\\"version\\\":null,\\\"vendorName\\\":\\\"AWS\\\", \\\"managedRuleGroupName\\\":\\\"AWSManagedRulesAdminProtectionRuleSet\\\"} ,\\\"ruleGroupType\\\":\\\"ManagedRuleGroup\\\",\\\"excludeRules\\\":[], \\\"sampledRequestsEnabled\\\":true}],\\\"postProcessRuleGroups\\\":[], \\\"defaultAction\\\":{\\\"type\\\":\\\"ALLOW\\\"},\\\"customRequestHandling\\\" :null,\\\"customResponse\\\":null,\\\"overrideCustomerWebACLAssociation\\\" :false,\\\"loggingConfiguration\\\":{\\\"logDestinationConfigs\\\": [\\\"arn:aws:s3:::aws-waf-logs-example-bucket\\\"] ,\\\"redactedFields\\\":[],\\\"loggingFilterConfigs\\\":{\\\"defaultBehavior\\\":\\\"KEEP\\\", \\\"filters\\\":[{\\\"behavior\\\":\\\"KEEP\\\",\\\"requirement\\\":\\\"MEETS_ALL\\\", \\\"conditions\\\":[{\\\"actionCondition\\\":\\\"CAPTCHA\\\"},{\\\"actionCondition\\\": \\\"CHALLENGE\\\"}, {\\\"actionCondition\\\":\\\"EXCLUDED_AS_COUNT\\\"}]}]}},\\\"sampledRequestsEnabledForDefaultActions\\\":true}\"

      Firewall Manager supports Amazon Kinesis Data Firehose and Amazon S3 as the logDestinationConfigs in your loggingConfiguration. For information about WAF logging configurations, see LoggingConfiguration in the WAF API Reference

      In the loggingConfiguration, you can specify one logDestinationConfigs. Optionally provide as many as 20 redactedFields. The RedactedFieldType must be one of URI, QUERY_STRING, HEADER, or METHOD.

    • Example: WAF Classic

      \"{\\\"type\\\": \\\"WAF\\\", \\\"ruleGroups\\\": [{\\\"id\\\":\\\"12345678-1bcd-9012-efga-0987654321ab\\\", \\\"overrideAction\\\" : {\\\"type\\\": \\\"COUNT\\\"}}], \\\"defaultAction\\\": {\\\"type\\\": \\\"BLOCK\\\"}}\"

    " }, "PolicyOption":{ "shape":"PolicyOption", - "documentation":"

    Contains the Network Firewall firewall policy options to configure a centralized deployment model.

    " + "documentation":"

    Contains the settings to configure a network ACL policy, a Network Firewall firewall policy deployment model, or a third-party firewall policy.

    " } }, "documentation":"

    Details about the security service that is being used to protect the resources.

    " @@ -3878,7 +4226,8 @@ "NETWORK_FIREWALL", "DNS_FIREWALL", "THIRD_PARTY_FIREWALL", - "IMPORT_NETWORK_FIREWALL" + "IMPORT_NETWORK_FIREWALL", + "NETWORK_ACL_COMMON" ] }, "SecurityServiceTypeList":{ @@ -4254,7 +4603,8 @@ "BLACK_HOLE_ROUTE_DETECTED_IN_FIREWALL_SUBNET", "RESOURCE_MISSING_DNS_FIREWALL", "ROUTE_HAS_OUT_OF_SCOPE_ENDPOINT", - "FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT" + "FIREWALL_SUBNET_MISSING_VPCE_ENDPOINT", + "INVALID_NETWORK_ACL_ENTRY" ] }, "ViolationTarget":{ diff --git a/tools/code-generation/api-descriptions/ivs-2020-07-14.normal.json b/tools/code-generation/api-descriptions/ivs-2020-07-14.normal.json index ced443f1849..635dd0c199d 100644 --- a/tools/code-generation/api-descriptions/ivs-2020-07-14.normal.json +++ b/tools/code-generation/api-descriptions/ivs-2020-07-14.normal.json @@ -636,7 +636,7 @@ "members":{ "arn":{ "shape":"ResourceArn", - "documentation":"

    Channel ARN.

    " + "documentation":"

    ARN of an IVS resource; e.g., channel.

    " }, "code":{ "shape":"errorCode", @@ -839,7 +839,7 @@ "type":"string", "max":128, "min":1, - "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$" + "pattern":"^arn:aws:ivs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$" }, "ChannelArnList":{ "type":"list", @@ -1695,7 +1695,7 @@ "type":"string", "max":128, "min":1, - "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:playback-key/[a-zA-Z0-9-]+$" + "pattern":"^arn:aws:ivs:[a-z0-9-]+:[0-9]+:playback-key/[a-zA-Z0-9-]+$" }, "PlaybackKeyPairFingerprint":{"type":"string"}, "PlaybackKeyPairList":{ @@ -2002,7 +2002,7 @@ "type":"string", "max":128, "min":1, - "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:[a-z-]/[a-zA-Z0-9-]+$" + "pattern":"^arn:aws:ivs:[a-z0-9-]+:[0-9]+:[a-z-]/[a-zA-Z0-9-]+$" }, "ResourceNotFoundException":{ "type":"structure", @@ -2219,7 +2219,7 @@ "type":"string", "max":128, "min":1, - "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:stream-key/[a-zA-Z0-9-]+$" + "pattern":"^arn:aws:ivs:[a-z0-9-]+:[0-9]+:stream-key/[a-zA-Z0-9-]+$" }, "StreamKeyArnList":{ "type":"list", diff --git a/tools/code-generation/api-descriptions/ivs-realtime-2020-07-14.normal.json b/tools/code-generation/api-descriptions/ivs-realtime-2020-07-14.normal.json index 7573c1c611d..66e5b9e9abb 100644 --- a/tools/code-generation/api-descriptions/ivs-realtime-2020-07-14.normal.json +++ b/tools/code-generation/api-descriptions/ivs-realtime-2020-07-14.normal.json @@ -483,6 +483,7 @@ {"shape":"ValidationException"}, {"shape":"AccessDeniedException"}, {"shape":"ServiceQuotaExceededException"}, + {"shape":"ConflictException"}, {"shape":"PendingVerification"} ], "documentation":"

    Updates a stage’s configuration.

    " @@ -520,7 +521,7 @@ "type":"string", "max":128, "min":1, - "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$" + "pattern":"^arn:aws:ivs:[a-z0-9-]+:[0-9]+:channel/[a-zA-Z0-9-]+$" }, "ChannelDestinationConfiguration":{ "type":"structure", @@ -1935,7 +1936,7 @@ "type":"string", "max":128, "min":1, - "pattern":"^arn:aws:[is]vs:[a-z0-9-]+:[0-9]+:[a-z-]/[a-zA-Z0-9-]+$" + "pattern":"^arn:aws:ivs:[a-z0-9-]+:[0-9]+:[a-z-]/[a-zA-Z0-9-]+$" }, "ResourceNotFoundException":{ "type":"structure", diff --git a/tools/code-generation/api-descriptions/rds-2013-01-10.normal.json b/tools/code-generation/api-descriptions/rds-2013-01-10.normal.json index 610c4dc8729..a114cf89461 100644 --- a/tools/code-generation/api-descriptions/rds-2013-01-10.normal.json +++ b/tools/code-generation/api-descriptions/rds-2013-01-10.normal.json @@ -4,6 +4,7 @@ "apiVersion":"2013-01-10", "endpointPrefix":"rds", "protocol":"query", + "protocols":["query"], "serviceAbbreviation":"Amazon RDS", "serviceFullName":"Amazon Relational Database Service", "serviceId":"RDS", diff --git a/tools/code-generation/api-descriptions/rds-2013-02-12.normal.json b/tools/code-generation/api-descriptions/rds-2013-02-12.normal.json index 4c3c4676b88..8ca8dd0f96e 100644 --- a/tools/code-generation/api-descriptions/rds-2013-02-12.normal.json +++ b/tools/code-generation/api-descriptions/rds-2013-02-12.normal.json @@ -4,6 +4,7 @@ "apiVersion":"2013-02-12", "endpointPrefix":"rds", "protocol":"query", + "protocols":["query"], "serviceAbbreviation":"Amazon RDS", "serviceFullName":"Amazon Relational Database Service", "serviceId":"RDS", diff --git a/tools/code-generation/api-descriptions/rds-2013-09-09.normal.json b/tools/code-generation/api-descriptions/rds-2013-09-09.normal.json index f7e3363ba82..bfde91db177 100644 --- a/tools/code-generation/api-descriptions/rds-2013-09-09.normal.json +++ b/tools/code-generation/api-descriptions/rds-2013-09-09.normal.json @@ -4,6 +4,7 @@ "apiVersion":"2013-09-09", "endpointPrefix":"rds", "protocol":"query", + "protocols":["query"], "serviceAbbreviation":"Amazon RDS", "serviceFullName":"Amazon Relational Database Service", "serviceId":"RDS", diff --git a/tools/code-generation/api-descriptions/rds-2014-09-01.normal.json b/tools/code-generation/api-descriptions/rds-2014-09-01.normal.json index 83279896737..8eff6769d4c 100644 --- a/tools/code-generation/api-descriptions/rds-2014-09-01.normal.json +++ b/tools/code-generation/api-descriptions/rds-2014-09-01.normal.json @@ -4,6 +4,7 @@ "apiVersion":"2014-09-01", "endpointPrefix":"rds", "protocol":"query", + "protocols":["query"], "serviceAbbreviation":"Amazon RDS", "serviceFullName":"Amazon Relational Database Service", "serviceId":"RDS", diff --git a/tools/code-generation/api-descriptions/rds-2014-10-31.normal.json b/tools/code-generation/api-descriptions/rds-2014-10-31.normal.json index cd9417644db..ba7381f714a 100644 --- a/tools/code-generation/api-descriptions/rds-2014-10-31.normal.json +++ b/tools/code-generation/api-descriptions/rds-2014-10-31.normal.json @@ -4,6 +4,7 @@ "apiVersion":"2014-10-31", "endpointPrefix":"rds", "protocol":"query", + "protocols":["query"], "serviceAbbreviation":"Amazon RDS", "serviceFullName":"Amazon Relational Database Service", "serviceId":"RDS", @@ -4569,7 +4570,7 @@ }, "Timezone":{ "shape":"String", - "documentation":"

    The time zone of the DB instance. The time zone parameter is currently supported only by Microsoft SQL Server.

    " + "documentation":"

    The time zone of the DB instance. The time zone parameter is currently supported only by RDS for Db2 and RDS for SQL Server.

    " }, "EnableIAMDatabaseAuthentication":{ "shape":"BooleanOptional", @@ -6865,7 +6866,7 @@ }, "Timezone":{ "shape":"String", - "documentation":"

    The time zone of the DB instance. In most cases, the Timezone element is empty. Timezone content appears only for Microsoft SQL Server DB instances that were created with a time zone specified.

    " + "documentation":"

    The time zone of the DB instance. In most cases, the Timezone element is empty. Timezone content appears only for RDS for Db2 and RDS for SQL Server DB instances that were created with a time zone specified.

    " }, "IAMDatabaseAuthenticationEnabled":{ "shape":"Boolean", @@ -12417,7 +12418,7 @@ }, "DBSubnetGroupName":{ "shape":"String", - "documentation":"

    The new DB subnet group for the DB instance. You can use this parameter to move your DB instance to a different VPC. If your DB instance isn't in a VPC, you can also use this parameter to move your DB instance into a VPC. For more information, see Working with a DB instance in a VPC in the Amazon RDS User Guide.

    Changing the subnet group causes an outage during the change. The change is applied during the next maintenance window, unless you enable ApplyImmediately.

    This parameter doesn't apply to RDS Custom DB instances.

    Constraints:

    • If supplied, must match existing DB subnet group.

    Example: mydbsubnetgroup

    " + "documentation":"

    The new DB subnet group for the DB instance. You can use this parameter to move your DB instance to a different VPC. If your DB instance isn't in a VPC, you can also use this parameter to move your DB instance into a VPC. For more information, see Working with a DB instance in a VPC in the Amazon RDS User Guide.

    Changing the subnet group causes an outage during the change. The change is applied during the next maintenance window, unless you enable ApplyImmediately.

    This setting doesn't apply to RDS Custom DB instances.

    Constraints:

    • If supplied, must match existing DB subnet group.

    Example: mydbsubnetgroup

    " }, "DBSecurityGroups":{ "shape":"DBSecurityGroupNameList", @@ -12581,7 +12582,7 @@ }, "DeletionProtection":{ "shape":"BooleanOptional", - "documentation":"

    Specifies whether the DB instance has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection isn't enabled. For more information, see Deleting a DB Instance.

    " + "documentation":"

    Specifies whether the DB instance has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection isn't enabled. For more information, see Deleting a DB Instance.

    This setting doesn't apply to Amazon Aurora DB instances. You can enable or disable deletion protection for the DB cluster. For more information, see ModifyDBCluster. DB instances in a DB cluster can be deleted even when deletion protection is enabled for the DB cluster.

    " }, "MaxAllocatedStorage":{ "shape":"IntegerOptional", diff --git a/tools/code-generation/api-descriptions/states-2016-11-23.normal.json b/tools/code-generation/api-descriptions/states-2016-11-23.normal.json index d6492d2a695..cf26dad0308 100644 --- a/tools/code-generation/api-descriptions/states-2016-11-23.normal.json +++ b/tools/code-generation/api-descriptions/states-2016-11-23.normal.json @@ -5,6 +5,7 @@ "endpointPrefix":"states", "jsonVersion":"1.0", "protocol":"json", + "protocols":["json"], "serviceAbbreviation":"AWS SFN", "serviceFullName":"AWS Step Functions", "serviceId":"SFN", @@ -382,7 +383,8 @@ {"shape":"ExecutionDoesNotExist"}, {"shape":"ExecutionNotRedrivable"}, {"shape":"ExecutionLimitExceeded"}, - {"shape":"InvalidArn"} + {"shape":"InvalidArn"}, + {"shape":"ValidationException"} ], "documentation":"

    Restarts unsuccessful executions of Standard workflows that didn't complete successfully in the last 14 days. These include failed, aborted, or timed out executions. When you redrive an execution, it continues the failed execution from the unsuccessful step and uses the same input. Step Functions preserves the results and execution history of the successful steps, and doesn't rerun these steps when you redrive an execution. Redriven executions use the same state machine definition and execution ARN as the original execution attempt.

    For workflows that include an Inline Map or Parallel state, RedriveExecution API action reschedules and redrives only the iterations and branches that failed or aborted.

    To redrive a workflow that includes a Distributed Map state whose Map Run failed, you must redrive the parent workflow. The parent workflow redrives all the unsuccessful states, including a failed Map Run. If a Map Run was not started in the original execution attempt, the redriven parent workflow starts the Map Run.

    This API action is not supported by EXPRESS state machines.

    However, you can restart the unsuccessful executions of Express child workflows in a Distributed Map by redriving its Map Run. When you redrive a Map Run, the Express child workflows are rerun using the StartExecution API action. For more information, see Redriving Map Runs.

    You can redrive executions if your original execution meets the following conditions:

    • The execution status isn't SUCCEEDED.

    • Your workflow execution has not exceeded the redrivable period of 14 days. Redrivable period refers to the time during which you can redrive a given execution. This period starts from the day a state machine completes its execution.

    • The workflow execution has not exceeded the maximum open time of one year. For more information about state machine quotas, see Quotas related to state machine executions.

    • The execution event history count is less than 24,999. Redriven executions append their event history to the existing event history. Make sure your workflow execution contains less than 24,999 events to accommodate the ExecutionRedriven history event and at least one other history event.

    ", "idempotent":true @@ -588,6 +590,19 @@ {"shape":"StateMachineDeleting"} ], "documentation":"

    Updates the configuration of an existing state machine alias by modifying its description or routingConfiguration.

    You must specify at least one of the description or routingConfiguration parameters to update a state machine alias.

    UpdateStateMachineAlias is an idempotent API. Step Functions bases the idempotency check on the stateMachineAliasArn, description, and routingConfiguration parameters. Requests with the same parameters return an idempotent response.

    This operation is eventually consistent. All StartExecution requests made within a few seconds use the latest alias configuration. Executions started immediately after calling UpdateStateMachineAlias may use the previous routing configuration.

    Related operations:

    " + }, + "ValidateStateMachineDefinition":{ + "name":"ValidateStateMachineDefinition", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ValidateStateMachineDefinitionInput"}, + "output":{"shape":"ValidateStateMachineDefinitionOutput"}, + "errors":[ + {"shape":"ValidationException"} + ], + "documentation":"

    Validates the syntax of a state machine definition.

    You can validate that a state machine definition is correct without creating a state machine resource. Step Functions will implicitly perform the same syntax check when you invoke CreateStateMachine and UpdateStateMachine. State machine definitions are specified using a JSON-based, structured language. For more information on Amazon States Language see Amazon States Language (ASL).

    Suggested uses for ValidateStateMachineDefinition:

    • Integrate automated checks into your code review or Continuous Integration (CI) process to validate state machine definitions before starting deployments.

    • Run the validation from a Git pre-commit hook to check your state machine definitions before committing them to your source repository.

    Errors found in the state machine definition will be returned in the response as a list of diagnostic elements, rather than raise an exception.

    " } }, "shapes":{ @@ -3726,6 +3741,82 @@ } } }, + "ValidateStateMachineDefinitionCode":{"type":"string"}, + "ValidateStateMachineDefinitionDiagnostic":{ + "type":"structure", + "required":[ + "severity", + "code", + "message" + ], + "members":{ + "severity":{ + "shape":"ValidateStateMachineDefinitionSeverity", + "documentation":"

    A value of ERROR means that you cannot create or update a state machine with this definition.

    " + }, + "code":{ + "shape":"ValidateStateMachineDefinitionCode", + "documentation":"

    Identifying code for the diagnostic.

    " + }, + "message":{ + "shape":"ValidateStateMachineDefinitionMessage", + "documentation":"

    Message describing the diagnostic condition.

    " + }, + "location":{ + "shape":"ValidateStateMachineDefinitionLocation", + "documentation":"

    Location of the issue in the state machine, if available.

    For errors specific to a field, the location could be in the format: /States/<StateName>/<FieldName>, for example: /States/FailState/ErrorPath.

    " + } + }, + "documentation":"

    Describes an error found during validation. Validation errors found in the definition return in the response as diagnostic elements, rather than raise an exception.

    " + }, + "ValidateStateMachineDefinitionDiagnosticList":{ + "type":"list", + "member":{"shape":"ValidateStateMachineDefinitionDiagnostic"} + }, + "ValidateStateMachineDefinitionInput":{ + "type":"structure", + "required":["definition"], + "members":{ + "definition":{ + "shape":"Definition", + "documentation":"

    The Amazon States Language definition of the state machine. For more information, see Amazon States Language (ASL).

    " + }, + "type":{ + "shape":"StateMachineType", + "documentation":"

    The target type of state machine for this definition. The default is STANDARD.

    " + } + } + }, + "ValidateStateMachineDefinitionLocation":{"type":"string"}, + "ValidateStateMachineDefinitionMessage":{"type":"string"}, + "ValidateStateMachineDefinitionOutput":{ + "type":"structure", + "required":[ + "result", + "diagnostics" + ], + "members":{ + "result":{ + "shape":"ValidateStateMachineDefinitionResultCode", + "documentation":"

    The result value will be OK when no syntax errors are found, or FAIL if the workflow definition does not pass verification.

    " + }, + "diagnostics":{ + "shape":"ValidateStateMachineDefinitionDiagnosticList", + "documentation":"

    If the result is OK, this field will be empty. When there are errors, this field will contain an array of Diagnostic objects to help you troubleshoot.

    " + } + } + }, + "ValidateStateMachineDefinitionResultCode":{ + "type":"string", + "enum":[ + "OK", + "FAIL" + ] + }, + "ValidateStateMachineDefinitionSeverity":{ + "type":"string", + "enum":["ERROR"] + }, "ValidationException":{ "type":"structure", "members":{