

# 使用 AWS CLI 的 Firewall Manager 示例
<a name="cli_fms_code_examples"></a>

以下代码示例演示如何通过将 AWS Command Line Interface与 Firewall Manager 结合使用，来执行操作和实现常见场景。

*操作是大型程序的代码摘录*，必须在上下文中运行。您可以通过操作了解如何调用单个服务函数，还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接，您可以从中找到有关如何在上下文中设置和运行代码的说明。

**Topics**
+ [操作](#actions)

## 操作
<a name="actions"></a>

### `associate-admin-account`
<a name="fms_AssociateAdminAccount_cli_topic"></a>

以下代码示例演示了如何使用 `associate-admin-account`。

**AWS CLI**  
**设置 Firewall Manager 管理员账户**  
以下 `associate-admin-account` 示例设置 Firewall Manager 的管理员账户。  

```
aws fms associate-admin-account \
    --admin-account 123456789012
```
此命令不生成任何输出。  
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[设置 AWS Firewall Manager 管理员账户](https://docs.aws.amazon.com/waf/latest/developerguide/enable-integration.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [AssociateAdminAccount](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/associate-admin-account.html)。

### `delete-notification-channel`
<a name="fms_DeleteNotificationChannel_cli_topic"></a>

以下代码示例演示了如何使用 `delete-notification-channel`。

**AWS CLI**  
**删除 Firewall Manager 日志的 SNS 主题信息**  
以下 `delete-notification-channel` 示例删除 SNS 主题信息。  

```
aws fms delete-notification-channel
```
此命令不生成任何输出。  
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[配置 Amazon SNS 通知和 Amazon CloudWatch 警报](https://docs.aws.amazon.com/waf/latest/developerguide/get-started-fms-shield-cloudwatch.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [DeleteNotificationChannel](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/delete-notification-channel.html)。

### `delete-policy`
<a name="fms_DeletePolicy_cli_topic"></a>

以下代码示例演示了如何使用 `delete-policy`。

**AWS CLI**  
**删除 Firewall Manager 策略**  
以下 `delete-policy` 示例删除具有指定 ID 的策略及其所有资源。  

```
aws fms delete-policy \
    --policy-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
    --delete-all-policy-resources
```
此命令不生成任何输出。  
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[使用 AWS Firewall Manager 策略](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-policies.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [DeletePolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/delete-policy.html)。

### `disassociate-admin-account`
<a name="fms_DisassociateAdminAccount_cli_topic"></a>

以下代码示例演示了如何使用 `disassociate-admin-account`。

**AWS CLI**  
**删除 Firewall Manager 管理员账户**  
以下 `disassociate-admin-account` 示例从 Firewall Manager 中删除当前的管理员账户关联。  

```
aws fms disassociate-admin-account
```
此命令不生成任何输出。  
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[设置 AWS Firewall Manager 管理员账户](https://docs.aws.amazon.com/waf/latest/developerguide/enable-integration.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [DisassociateAdminAccount](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/disassociate-admin-account.html)。

### `get-admin-account`
<a name="fms_GetAdminAccount_cli_topic"></a>

以下代码示例演示了如何使用 `get-admin-account`。

**AWS CLI**  
**检索 Firewall Manager 管理员账户**  
以下 `get-admin-account` 示例检索管理员账户。  

```
aws fms get-admin-account
```
输出：  

```
{
    "AdminAccount": "123456789012",
    "RoleStatus": "READY"
}
```
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的 [AWS Firewall Manager 先决条件](https://docs.aws.amazon.com/waf/latest/developerguide/fms-prereq.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [GetAdminAccount](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/get-admin-account.html)。

### `get-compliance-detail`
<a name="fms_GetComplianceDetail_cli_topic"></a>

以下代码示例演示了如何使用 `get-compliance-detail`。

**AWS CLI**  
**检索账户的合规信息**  
以下 `get-compliance-detail` 示例检索指定策略和成员账户的合规信息。  

```
aws fms get-compliance-detail \
    --policy-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
    --member-account 123456789012
```
输出：  

```
{
    "PolicyComplianceDetail": {
    "EvaluationLimitExceeded": false,
    "IssueInfoMap": {},
    "MemberAccount": "123456789012",
    "PolicyId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "PolicyOwner": "123456789012",
    "Violators": []
}
```
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[查看资源的策略合规性](https://docs.aws.amazon.com/waf/latest/developerguide/fms-compliance.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [GetComplianceDetail](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/get-compliance-detail.html)。

### `get-notification-channel`
<a name="fms_GetNotificationChannel_cli_topic"></a>

以下代码示例演示了如何使用 `get-notification-channel`。

**AWS CLI**  
**检索 Firewall Manager 日志的 SNS 主题信息**  
以下 `get-notification-channel` 示例检索 SNS 主题信息。  

```
aws fms get-notification-channel
```
输出：  

```
{
    "SnsTopicArn": "arn:aws:sns:us-west-2:123456789012:us-west-2-fms",
    "SnsRoleName": "arn:aws:iam::123456789012:role/aws-service-role/fms.amazonaws.com/AWSServiceRoleForFMS"
}
```
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[配置 Amazon SNS 通知和 Amazon CloudWatch 警报](https://docs.aws.amazon.com/waf/latest/developerguide/get-started-fms-shield-cloudwatch.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [GetNotificationChannel](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/get-notification-channel.html)。

### `get-policy`
<a name="fms_GetPolicy_cli_topic"></a>

以下代码示例演示了如何使用 `get-policy`。

**AWS CLI**  
**检索 Firewall Manager 策略**  
以下 `get-policy` 示例检索具有指定 ID 的策略。  

```
aws fms get-policy \
    --policy-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
```
输出：  

```
{
    "Policy": {
        "PolicyId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "PolicyName": "test",
        "PolicyUpdateToken": "1:p+2RpKR4wPFx7mcrL1UOQQ==",
        "SecurityServicePolicyData": {
            "Type": "SECURITY_GROUPS_COMMON",
            "ManagedServiceData": "{\"type\":\"SECURITY_GROUPS_COMMON\",\"revertManualSecurityGroupChanges\":true,\"exclusiveResourceSecurityGroupManagement\":false,\"securityGroups\":[{\"id\":\"sg-045c43ccc9724e63e\"}]}"
        },
        "ResourceType": "AWS::EC2::Instance",
        "ResourceTags": [],
        "ExcludeResourceTags": false,
        "RemediationEnabled": false
    },
    "PolicyArn": "arn:aws:fms:us-west-2:123456789012:policy/d1ac59b8-938e-42b3-b2e0-7c620422ddc2"
}
```
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[使用 AWS Firewall Manager 策略](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-policies.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [GetPolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/get-policy.html)。

### `list-compliance-status`
<a name="fms_ListComplianceStatus_cli_topic"></a>

以下代码示例演示了如何使用 `list-compliance-status`。

**AWS CLI**  
**检索成员账户的策略合规信息**  
以下 `list-compliance-status` 示例检索指定策略的成员账户合规信息。  

```
aws fms list-compliance-status \
    --policy-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
```
输出：  

```
{
    "PolicyComplianceStatusList": [
        {
            "PolicyOwner": "123456789012",
            "PolicyId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "PolicyName": "test",
            "MemberAccount": "123456789012",
            "EvaluationResults": [
                {
                    "ComplianceStatus": "COMPLIANT",
                    "ViolatorCount": 0,
                    "EvaluationLimitExceeded": false
                },
                {
                    "ComplianceStatus": "NON_COMPLIANT",
                    "ViolatorCount": 2,
                    "EvaluationLimitExceeded": false
                }
            ],
            "LastUpdated": 1576283774.0,
            "IssueInfoMap": {}
        }
    ]
}
```
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[查看资源的策略合规性](https://docs.aws.amazon.com/waf/latest/developerguide/fms-compliance.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [ListComplianceStatus](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/list-compliance-status.html)。

### `list-member-accounts`
<a name="fms_ListMemberAccounts_cli_topic"></a>

以下代码示例演示了如何使用 `list-member-accounts`。

**AWS CLI**  
**检索组织中的成员账户**  
以下 `list-member-accounts` 示例列出 Firewall Manager 管理员的组织中的所有成员账户。  

```
aws fms list-member-accounts
```
输出：  

```
{
    "MemberAccounts": [
        "222222222222",
        "333333333333",
        "444444444444"
    ]
}
```
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的 [AWS Firewall Manager](https://docs.aws.amazon.com/waf/latest/developerguide/fms-chapter.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [ListMemberAccounts](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/list-member-accounts.html)。

### `list-policies`
<a name="fms_ListPolicies_cli_topic"></a>

以下代码示例演示了如何使用 `list-policies`。

**AWS CLI**  
**检索所有 Firewall Manager 策略**  
以下 `list-policies` 示例检索账户的策略列表。在此示例中，每个请求的输出限制为两个结果。每次调用都会返回一个 `NextToken`，它可用作下一次 `list-policies` 调用中 `--starting-token` 参数的值，以获取列表的下一组结果。  

```
aws fms list-policies \
    --max-items 2
```
输出：  

```
{
    "PolicyList": [
        {
            "PolicyArn": "arn:aws:fms:us-west-2:123456789012:policy/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "PolicyId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "PolicyName": "test",
            "ResourceType": "AWS::EC2::Instance",
            "SecurityServiceType": "SECURITY_GROUPS_COMMON",
            "RemediationEnabled": false
        },
        {
            "PolicyArn": "arn:aws:fms:us-west-2:123456789012:policy/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
            "PolicyId": "457c9b21-fc94-406c-ae63-21217395ba72",
            "PolicyName": "test",
            "ResourceType": "AWS::EC2::Instance",
            "SecurityServiceType": "SECURITY_GROUPS_COMMON",
            "RemediationEnabled": false
        }
    ],
    "NextToken": "eyJOZXh0VG9rZW4iOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ=="
}
```
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[使用 AWS Firewall Manager 策略](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-policies.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [ListPolicies](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/list-policies.html)。

### `put-notification-channel`
<a name="fms_PutNotificationChannel_cli_topic"></a>

以下代码示例演示了如何使用 `put-notification-channel`。

**AWS CLI**  
**设置 Firewall Manager 日志的 SNS 主题信息**  
以下 `put-notification-channel` 示例设置 SNS 主题信息。  

```
aws fms put-notification-channel \
    --sns-topic-arn arn:aws:sns:us-west-2:123456789012:us-west-2-fms \
    --sns-role-name arn:aws:iam::123456789012:role/aws-service-role/fms.amazonaws.com/AWSServiceRoleForFMS
```
此命令不生成任何输出。  
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[配置 Amazon SNS 通知和 Amazon CloudWatch 警报](https://docs.aws.amazon.com/waf/latest/developerguide/get-started-fms-shield-cloudwatch.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [PutNotificationChannel](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/put-notification-channel.html)。

### `put-policy`
<a name="fms_PutPolicy_cli_topic"></a>

以下代码示例演示了如何使用 `put-policy`。

**AWS CLI**  
**创建 Firewall Manager 策略**  
以下 `put-policy` 示例创建一个 Firewall Manager 安全组策略。  

```
aws fms put-policy \
    --cli-input-json file://policy.json
```
 的内容`policy.json`：  

```
{
    "Policy": {
        "PolicyName": "test",
        "SecurityServicePolicyData": {
            "Type": "SECURITY_GROUPS_USAGE_AUDIT",
            "ManagedServiceData": "{\"type\":\"SECURITY_GROUPS_USAGE_AUDIT\",\"deleteUnusedSecurityGroups\":false,\"coalesceRedundantSecurityGroups\":true}"
        },
        "ResourceType": "AWS::EC2::SecurityGroup",
        "ResourceTags": [],
        "ExcludeResourceTags": false,
        "RemediationEnabled": false
    },
    "TagList": [
        {
            "Key": "foo",
            "Value": "foo"
        }
    ]
}
```
输出：  

```
{
    "Policy": {
        "PolicyId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "PolicyName": "test",
        "PolicyUpdateToken": "1:X9QGexP7HASDlsFp+G31Iw==",
        "SecurityServicePolicyData": {
            "Type": "SECURITY_GROUPS_USAGE_AUDIT",
            "ManagedServiceData": "{\"type\":\"SECURITY_GROUPS_USAGE_AUDIT\",\"deleteUnusedSecurityGroups\":false,\"coalesceRedundantSecurityGroups\":true,\"optionalDelayForUnusedInMinutes\":null}"
        },
        "ResourceType": "AWS::EC2::SecurityGroup",
        "ResourceTags": [],
        "ExcludeResourceTags": false,
        "RemediationEnabled": false
    },
    "PolicyArn": "arn:aws:fms:us-west-2:123456789012:policy/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
```
有关更多信息，请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》**中的[使用 AWS Firewall Manager 策略](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-policies.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [PutPolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fms/put-policy.html)。