

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon SNS 中的日志记录和监控
<a name="sns-logging-monitoring"></a>

Amazon SNS 允许您通过记录 API 调用和监控主题来跟踪 CloudTrail和监控消息活动。 CloudWatch这些工具可帮助您深入了解消息传送，排查问题，并确保消息收发工作流程的正常运行。本主题包含以下内容：
+ [使用记录 AWS SNS API 调用 AWS CloudTrail](logging-using-cloudtrail.md)。通过此日志记录，您可以跟踪对您的 Amazon SNS 主题执行的操作，例如主题创建、订阅管理和消息发布。通过分析 CloudTrail 日志，您可以确定谁提出了特定 API 请求以及这些请求是何时发出的，从而帮助您审计 Amazon SNS 的使用情况并对其进行故障排除。
+ [使用监控亚马逊 SNS 主题 CloudWatch](sns-monitoring-using-cloudwatch.md)。 CloudWatch 提供的指标使您可以实时观察 Amazon SNS 主题的性能和运行状况。根据这些指标设置警报，使您能够及时响应任何异常情况，例如传送失败或消息延迟过长。此监控功能可确保您能通过主动解决潜在问题来保持基于 SNS 的消息系统的可靠性。

# 使用记录 AWS SNS API 调用 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

AWS SNS 与[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)一项服务集成，该服务提供用户、角色或角色所执行操作的 AWS 服务记录。 CloudTrail 将 SNS 的所有 API 调用捕获为事件。捕获的调用包括来自 SNS 控制台的调用和对 SNS API 操作的代码调用。使用收集的信息 CloudTrail，您可以确定向 SNS 发出的请求、发出请求的 IP 地址、发出请求的时间以及其他详细信息。

每个事件或日志条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容：
+ 请求是使用根用户凭证还是用户凭证发出的。
+ 请求是否代表 IAM Identity Center 用户发出。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务发出。

CloudTrail 在您创建账户 AWS 账户 时在您的账户中处于活动状态，并且您可以自动访问 CloudTrail **活动历史记录**。 CloudTrail **事件历史记录**提供了过去 90 天中记录的管理事件的可查看、可搜索、可下载且不可变的记录。 AWS 区域有关更多信息，请参阅《*AWS CloudTrail 用户指南》*中的 “[使用 CloudTrail 事件历史记录](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)”。查看**活动历史记录**不 CloudTrail收取任何费用。

要持续记录 AWS 账户 过去 90 天内的事件，请创建跟踪或 [CloudTrailLake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) 事件数据存储。

**CloudTrail 步道**  
*跟踪*允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。使用创建的所有跟踪 AWS 管理控制台 都是多区域的。您可以通过使用 AWS CLI创建单区域或多区域跟踪。建议创建多区域跟踪，因为您可以捕获账户 AWS 区域 中的所有活动。如果您创建单区域跟踪，则只能查看跟踪的 AWS 区域中记录的事件。有关跟踪的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[为您的 AWS 账户创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)和[为组织创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-trail-organization.html)。  
通过创建跟踪，您可以免费将正在进行的管理事件的一份副本传送到您的 Amazon S3 存储桶，但会收取 Amazon S3 存储费用。 CloudTrail 有关 CloudTrail 定价的更多信息，请参阅[AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。有关 Amazon S3 定价的信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。

**CloudTrail 湖泊事件数据存储**  
CloudTrail L@@ *ak* e 允许您对事件运行基于 SQL 的查询。 CloudTrail Lake 将基于行的 JSON 格式的现有事件转换为 [Apache ORC](https://orc.apache.org/) 格式。ORC 是一种针对快速检索数据进行优化的列式存储格式。事件将被聚合到*事件数据存储*中，它是基于您通过应用[高级事件选择器](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-concepts.html#adv-event-selectors)选择的条件的不可变的事件集合。应用于事件数据存储的选择器用于控制哪些事件持续存在并可供您查询。有关 CloudTrail Lake 的更多信息，[请参阅*AWS CloudTrail 用户指南*中的使用 AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html)。  
CloudTrail 湖泊事件数据存储和查询会产生费用。创建事件数据存储时，您可以选择要用于事件数据存储的[定价选项](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-manage-costs.html#cloudtrail-lake-manage-costs-pricing-option)。定价选项决定了摄取和存储事件的成本，以及事件数据存储的默认和最长保留期。有关 CloudTrail 定价的更多信息，请参阅[AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。

## 中的 SNS 数据事件 CloudTrail
<a name="cloudtrail-data-events"></a>

[数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)可提供对资源或在资源中所执行资源操作（例如，读取或写入 Amazon S3 对象）的相关信息。这些也称为数据面板操作。数据事件通常是高容量活动。默认情况下， CloudTrail 不记录数据事件。 CloudTrail **事件历史**记录不记录数据事件。

记录数据事件将收取额外费用。有关 CloudTrail 定价的更多信息，请参阅[AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。

您可以使用 CloudTrail 控制台、 AWS CLI或 CloudTrail API 操作记录 SNS 资源类型的数据事件。有关如何记录数据事件的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[使用 AWS 管理控制台记录数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console)和[使用 AWS Command Line Interface记录数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI)。

下表列出了可以记录数据事件的 SNS 资源类型。**数据事件类型（控制台）**列显示要从控制 CloudTrail 台上的**数据事件类型**列表中选择的值。res **ources.type 值**列显示该`resources.type`值，您将在使用或配置高级事件选择器时指定该值。 AWS CLI CloudTrail APIs“** APIs 记录到的数据 CloudTrail**” 列显示了 CloudTrail 针对该资源类型记录的 API 调用。


| 数据事件类型（控制台） | resources.type 值 | 数据 APIs 已记录到 CloudTrail | 
| --- | --- | --- | 
| SNS 主题 |  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html)  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/logging-using-cloudtrail.html) | 
| SNS 平台端点 |  AWS::SNS::PlatformEndpoint  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/logging-using-cloudtrail.html)  | 

**注意**  
未记录 SNS 资源类型`AWS::SNS::PhoneNumber`。 CloudTrail

您可以将高级事件选择器配置为在 `eventName`、`readOnly` 和 `resources.ARN` 字段上进行筛选，从而仅记录那些对您很重要的事件。有关这些字段的更多信息，请参阅《AWS CloudTrail API 参考》**中的 [https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html)。

有关记录数据事件的信息，请参阅 CloudTrail 用户指南 AWS CLI 中的使用记录数据事件 AWS 管理控制台 和使用记录数据事件。

## 中的 SNS 管理事件 CloudTrail
<a name="cloudtrail-management-events"></a>

[管理事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)提供有关对中的资源执行的管理操作的信息 AWS 账户。这些也称为控制面板操作。默认情况下， CloudTrail 记录管理事件。

AWS SNS 将以下 SNS 控制平面操作记录 CloudTrail 为*管理*事件。
+ `[AddPermission](https://docs.aws.amazon.com/sns/latest/api/API_AddPermission.html)`
+ `[CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html)`
+ `[ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)`
+ `[CreatePlatformApplication](https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformApplication.html)`
+ `[CreatePlatformEndpoint](https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformEndpoint.html)`
+ `[CreateSMSSandboxPhoneNumber](https://docs.aws.amazon.com/sns/latest/api/API_CreateSMSSandboxPhoneNumber.html)`
+ `[CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)`
+ `[DeleteEndpoint](https://docs.aws.amazon.com/sns/latest/api/API_DeleteEndpoint.html)`
+ `[DeletePlatformApplication](https://docs.aws.amazon.com/sns/latest/api/API_DeletePlatformApplication.html)`
+ `[DeleteSMSSandboxPhoneNumber](https://docs.aws.amazon.com/sns/latest/api/API_DeleteSMSSandboxPhoneNumber.html)`
+ `[DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html)`
+ `[GetDataProtectionPolicy](https://docs.aws.amazon.com/sns/latest/api/API_GetDataProtectionPolicy.html)`
+ `[GetEndpointAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetEndpointAttributes.html)`
+ `[GetPlatformApplicationAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetPlatformApplicationAttributes.html)`
+ `[GetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html)`
+ `[GetSMSSandboxAccountStatus](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSSandboxAccountStatus.html)`
+ `[GetSubscriptionAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetSubscriptionAttributes.html)`
+ `[GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html)`
+ `[ListEndpointsByPlatformApplication](https://docs.aws.amazon.com/sns/latest/api/API_ListEndpointsByPlatformApplication.html)`
+ `[ListOriginationNumbers](https://docs.aws.amazon.com/sns/latest/api/API_ListOriginationNumbers.html)`
+ `[ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html)`
+ `[ListPlatformApplications](https://docs.aws.amazon.com/sns/latest/api/API_ListPlatformApplications.html)`
+ `[ListSMSSandboxPhoneNumbers](https://docs.aws.amazon.com/sns/latest/api/API_ListSMSSandboxPhoneNumbers.html)`
+ `[ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)`
+ `[ListSubscriptionsByTopic](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptionsByTopic.html)`
+ `[ListTagsForResource](https://docs.aws.amazon.com/sns/latest/api/API_ListTagsForResource.html)`
+ `[ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html)`
+ `[OptInPhoneNumber](https://docs.aws.amazon.com/sns/latest/api/API_OptInPhoneNumber.html)`
+ `[PutDataProtectionPolicy](https://docs.aws.amazon.com/sns/latest/api/API_PutDataProtectionPolicy.html)`
+ `[RemovePermission](https://docs.aws.amazon.com/sns/latest/api/API_RemovePermission.html)`
+ `[SetEndpointAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetEndpointAttributes.html)`
+ `[SetPlatformApplicationAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetPlatformApplicationAttributes.html)`
+ `[SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html)`
+ `[SetSubscriptionAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html)`
+ `[SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)`
+ `[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)`
+ `[TagResource](https://docs.aws.amazon.com/sns/latest/api/API_TagResource.html)`
+ `[Unsubscribe](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html)`
+ `[UntagResource](https://docs.aws.amazon.com/sns/latest/api/API_UntagResource.html)`
+ `[VerifySMSSandboxPhoneNumber](https://docs.aws.amazon.com/sns/latest/api/API_VerifySMSSandboxPhoneNumber.html)`

**注意**  
如果您未登录到 Amazon Web Services（未经身份验证的模式），并且调用了[https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)或[https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html)操作，则这些操作将不会被登录到 CloudTrail。例如，当您选择电子邮件通知中提供的链接确认对某一主题的待确认订阅时，会在未验证模式下调用 `ConfirmSubscription` 操作。在此示例中，`ConfirmSubscription`操作不会记录到 CloudTrail。

## SNS 事件示例
<a name="cloudtrail-event-examples"></a>

事件代表来自任何来源的单个请求，包括有关所请求的 API 操作、操作的日期和时间、请求参数等的信息。 CloudTrail 日志文件不是公共 API 调用的有序堆栈跟踪，因此事件不会按任何特定顺序出现。

以下示例显示了一个演示**`ListTopics`**`CreateTopic`、和`DeleteTopic`操作 CloudTrail 的事件。

```
{
  "Records": [
    {
      "eventVersion": "1.02",
      "userIdentity": {
        "type": "IAMUser",
        "userName": "Bob",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Bob",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE"
      },
      "eventTime": "2014-09-30T00:00:00Z",
      "eventSource": "sns.amazonaws.com",
      "eventName": "ListTopics",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "127.0.0.1",
      "userAgent": "aws-sdk-java/unknown-version",
      "requestParameters": {
        "nextToken": "ABCDEF1234567890EXAMPLE=="
      },
      "responseElements": null,
      "requestID": "example1-b9bb-50fa-abdb-80f274981d60",
      "eventID": "example0-09a3-47d6-a810-c5f9fd2534fe",
      "eventType": "AwsApiCall",
      "recipientAccountId": "123456789012"
    },
    {
      "eventVersion": "1.02",
      "userIdentity": {
        "type": "IAMUser",
        "userName": "Bob",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Bob",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE"
      },
      "eventTime": "2014-09-30T00:00:00Z",
      "eventSource": "sns.amazonaws.com",
      "eventName": "CreateTopic",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "127.0.0.1",
      "userAgent": "aws-sdk-java/unknown-version",
      "requestParameters": {
        "name": "hello"
      },
      "responseElements": {
        "topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic"
      },
      "requestID": "example7-5cd3-5323-8a00-f1889011fee9",
      "eventID": "examplec-4f2f-4625-8378-130ac89660b1",
      "eventType": "AwsApiCall",
      "recipientAccountId": "123456789012"
    },
    {
      "eventVersion": "1.02",
      "userIdentity": {
        "type": "IAMUser",
        "userName": "Bob",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Bob",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE"
      },
      "eventTime": "2014-09-30T00:00:00Z",
      "eventSource": "sns.amazonaws.com",
      "eventName": "DeleteTopic",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "127.0.0.1",
      "userAgent": "aws-sdk-java/unknown-version",
      "requestParameters": {
        "topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic"
      },
      "responseElements": null,
      "requestID": "example5-4faa-51d5-aab2-803a8294388d",
      "eventID": "example8-6443-4b4d-abfd-1b867280d964",
      "eventType": "AwsApiCall",
      "recipientAccountId": "123456789012"
    }
  ]
}
```

以下示例显示了一个演示`Publish`操作 CloudTrail 的事件。

```
{
  "eventVersion": "1.09",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "EX_PRINCIPAL_ID",
    "arn": "arn:aws:iam::123456789012:user/Bob",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AKIAIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/Admin",
        "accountId": "123456789012",
        "userName": "ExampleUser"
      },
      "attributes": {
        "creationDate": "2023-08-21T16:44:05Z",
        "mfaAuthenticated": "false"
      }
    }
  },
  "eventTime": "2023-08-21T16:48:37Z",
  "eventSource": "sns.amazonaws.com",
  "eventName": "Publish",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "192.0.2.0",
  "userAgent": "aws-cli/1.29.16 md/Botocore#1.31.16 ua/2.0 os/linux#5.4.250-173.369.amzn2int.x86_64 md/arch#x86_64 lang/python#3.8.17 md/pyimpl#CPython cfg/retry-mode#legacy botocore/1.31.16",
  "requestParameters": {
    "topicArn": "arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic",
    "message": "HIDDEN_DUE_TO_SECURITY_REASONS",
    "subject": "HIDDEN_DUE_TO_SECURITY_REASONS",
    "messageStructure": "json",
    "messageAttributes": "HIDDEN_DUE_TO_SECURITY_REASONS"
  },
  "responseElements": {
    "messageId": "0787cd1e-d92b-521c-a8b4-90434e8ef840"
  },
  "requestID": "0a8ab208-11bf-5e01-bd2d-ef55861b545d",
  "eventID": "bb3496d4-5252-4660-9c28-3c6aebdb21c0",
  "readOnly": false,
  "resources": [
    {
      "accountId": "123456789012",
      "type": "AWS::SNS::Topic",
      "ARN": "arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": false,
  "recipientAccountId": "123456789012",
  "eventCategory": "Data",
  "tlsDetails": {
    "tlsVersion": "TLSv1.2",
    "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
    "clientProvidedHostHeader": "sns.us-east-1.amazonaws.com"
  }
}
```

以下示例显示了一个演示`PublishBatch`操作 CloudTrail 的事件。

```
{
  "eventVersion": "1.09",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "EX_PRINCIPAL_ID",
    "arn": "arn:aws:iam::123456789012:user/Bob",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AKIAIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/Admin",
        "accountId": "123456789012",
        "userName": "ExampleUser"
      },
      "attributes": {
        "creationDate": "2023-08-21T19:20:49Z",
        "mfaAuthenticated": "false"
      }
    }
  },
  "eventTime": "2023-08-21T19:22:01Z",
  "eventSource": "sns.amazonaws.com",
  "eventName": "PublishBatch",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "192.0.2.0",
  "userAgent": "aws-cli/1.29.16 md/Botocore#1.31.16 ua/2.0 os/linux#5.4.250-173.369.amzn2int.x86_64 md/arch#x86_64 lang/python#3.8.17 md/pyimpl#CPython cfg/retry-mode#legacy botocore/1.31.16",
  "requestParameters": {
    "topicArn": "arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic",
    "publishBatchRequestEntries": [
      {
        "id": "1",
        "message": "HIDDEN_DUE_TO_SECURITY_REASONS"
      },
      {
        "id": "2",
        "message": "HIDDEN_DUE_TO_SECURITY_REASONS"
      }
    ]
  },
  "responseElements": {
    "successful": [
      {
        "id": "1",
        "messageId": "30d68101-a64a-5573-9e10-dc5c1dd3af2f"
      },
      {
        "id": "2",
        "messageId": "c0aa0c5c-561d-5455-b6c4-5101ed84de09"
      }
    ],
    "failed": []
  },
  "requestID": "e2cdf7f3-1b35-58ad-ac9e-aaaea0ace2f1",
  "eventID": "10da9a14-0154-4ab6-b3a5-1825b229a7ed",
  "readOnly": false,
  "resources": [
    {
      "accountId": "123456789012",
      "type": "AWS::SNS::Topic",
      "ARN": "arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": false,
  "recipientAccountId": "123456789012",
  "eventCategory": "Data",
  "tlsDetails": {
    "tlsVersion": "TLSv1.2",
    "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
    "clientProvidedHostHeader": "sns.us-east-1.amazonaws.com"
  }
}
```

有关 CloudTrail 录音内容的信息，请参阅《*AWS CloudTrail 用户指南》*中的[CloudTrail录制内容](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html)。

# 使用监控亚马逊 SNS 主题 CloudWatch
<a name="sns-monitoring-using-cloudwatch"></a>

Amazon SNS 和亚马逊 CloudWatch 集成在一起，因此您可以收集、查看和分析每条有效的亚马逊 SNS 通知的指标。配置 CloudWatch Amazon SNS 后，您可以更好地了解您的 Amazon SNS 主题、推送通知和短信发送的表现。例如，您可以设置一个告警，以便在某个 Amazon SNS 指标（如 `NumberOfNotificationsFailed`）达到指定阈值时向您发送电子邮件通知。有关 Amazon SNS 发送到的所有指标的列表 CloudWatch，请参阅。[Amazon SNS 指标](#sns-metrics)有关 Amazon SNS 推送通知的更多信息，请参阅 [使用 Amazon SNS 发送移动推送通知](sns-mobile-application-as-subscriber.md)。

**注意**  
系统会自动收集您 CloudWatch 为 Amazon SNS 主题配置的指标，并每隔 *1* 分钟推送 CloudWatch 一次。这些指标是针对所有符合活跃 CloudWatch 指南的话题收集的。自该主题的上次活动（即任何 API 调用）起，该主题最多在六小时内被视为处于活动状态。 CloudWatch   
中报告的亚马逊 SNS 指标不收取任何费用 CloudWatch；这些指标是作为亚马逊 SNS 服务的一部分提供的。

## 查看 Amazon SNS 的 CloudWatch 指标
<a name="view-cloudwatch-metrics"></a>

您可以使用 CloudWatch 控制台、 CloudWatch自己的命令行界面 (CLI) 或使用 API 以编程方式监控 Amazon SNS 的指标。 CloudWatch 以下过程展示如何使用 AWS 管理控制台访问指标。

**使用 CloudWatch 控制台查看指标**

1. 登录 [CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch)。

1. 在导航面板上，选择 **Metrics**。

1. 在 **All metrics (全部指标)** 选项卡上，选择 **SNS**，然后选择以下维度之一：
   + **Country, SMS Type (国家/地区，短信类型)**
   + **PhoneNumber**
   + **Topic Metrics (主题指标)**
   + **Metrics with no dimensions (无维度指标)**

1. 要查看详细信息，请选择特定项目。例如，如果您选择 “**主题指标**”，然后选择 **NumberOfMessagesPublished**，则会显示 6 小时时间范围内在 1 分钟内发布的 Amazon SNS 消息的平均数量。

1. 要查看 Amazon SNS 使用情况指标，请在 **All metrics**（所有指标）选项卡上选择 **Usage**（使用情况），然后选择 **Target Amazon SNS usage metric**（目标 Amazon SNS 使用情况指标），例如 `NumberOfMessagesPublishedPerAccount`。

## 为 Amazon SNS 指标设置 CloudWatch 警报
<a name="SNS_AlarmMetrics"></a>

CloudWatch 还允许您在指标达到阈值时设置警报。例如，您可以为指标设置警报 **NumberOfNotificationsFailed**，以便在采样周期内达到指定的阈值时，系统会发送一封电子邮件通知来通知您该事件。

**使用 CloudWatch 控制台设置警报**

1. 登录 AWS 管理控制台 并打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1.  选择**警报**，然后选择**创建警报**按钮。这样会启动“**Create Alarm**”向导。

1.  滚动 Amazon SNS 指标找到您想要设置告警的指标的位置。选择该指标创建一个警报并选择**继续**。

1. 填写指标的**名称**、**描述**、**阈值**、**时间**值，然后选择**继续**。

1. 按照报警器说明选择“**Alarm**”。如果您 CloudWatch 想在达到警报状态时向您发送电子邮件，请选择现有的 Amazon SNS 主题或选择**创建新电子邮件**主题。如果您选择 **新建电子邮件主题**，则可以为新主题设置名称和电子邮件地址。此清单将会被保存下来并在将来报警器的下列框显示。选择**继续**。
**注意**  
如果您使用**新建电子邮件主题**来创建新的 Amazon SNS 主题，那么电子邮件地址必须通过验证才能接收通知。当报警器进入报警状态时，才发送电子邮件。如果在电子邮件地址验证之前报警状态发生变化，那么他们不会收到通知。

1. 此时，“**Create Alarm**”向导会给您一次机会检查您准备创建的报警器。如果你想做一些变动，那么您可使用右边的“**Edit**”链接。如果您满意，请选择**创建警报**。

有关使用 CloudWatch 和警报的更多信息，请参阅[CloudWatch文档](https://aws.amazon.com/documentation/cloudwatch)。

## Amazon SNS 指标
<a name="sns-metrics"></a>

Amazon SNS 向发送以下指标。 CloudWatch


| 命名空间 | 指标 | 说明 | 
| --- | --- | --- | 
| AWS/SNS |  NumberOfMessagesPublished  |  发布到您的 Amazon SNS 主题的消息数量。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum  | 
| AWS/SNS |  NumberOfNotificationsDelivered  |  从您的 Amazon SNS 主题成功传输到订阅终端节点的消息数量。 要想成功传输，终端节点的订阅必须接受消息。在以下两种情况下订阅可接受消息：a.) 它缺少筛选策略或 b.) 其筛选策略中包含的属性与分配给消息的属性相匹配。如果订阅拒绝消息，则传输尝试不会计入此指标。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum  | 
| AWS/SNS |  NumberOfNotificationsFailed  |  Amazon SNS 传输失败的消息数量。 对于 Amazon SQS、电子邮件、SMS 或移动推送终端节点，当 Amazon SNS 停止尝试传送消息时，此指标会递增 1。对于 HTTP 或 HTTPS 终端节点，此指标包括每次失败的传输尝试（含初始尝试之后的重试）。对于所有其他终端节点，消息传输失败时计数增加 1（不考虑尝试次数）。 此指标不包括被订阅筛选策略拒绝的消息。 您可以控制 HTTP 终端节点的重试次数。有关更多信息，请参阅 [Amazon SNS 消息传输重试](sns-message-delivery-retries.md)。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average  | 
| AWS/SNS | NumberOfNotificationsFilteredOut |  被订阅筛选策略拒绝的消息数量。如果消息属性与策略属性不匹配，筛选策略会拒绝消息。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-MessageAttributes | 被基于属性的筛选的订阅筛选策略拒绝的消息数量。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-MessageBody |  被基于有效负载的筛选的订阅筛选策略拒绝的消息数量。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-InvalidAttributes |  由于消息属性无效（例如属性 JSON 格式不正确）而被订阅筛选策略拒绝的消息数量。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-NoMessageAttributes |  由于消息没有属性而被订阅筛选策略拒绝的消息数量。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-InvalidMessageBody |  由于消息正文对于筛选条件无效（例如无效的 JSON 消息正文）而被订阅筛选策略拒绝的消息数量。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average  | 
| AWS/SNS |  NumberOfNotificationsRedrivenToDlq  |  已移动到死信队列的消息量。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average | 
| AWS/SNS |  NumberOfNotificationsFailedToRedriveToDlq  |  无法移动到死信队列中的消息量。 **单位**：计数 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Sum、Average | 
| AWS/SNS |  PublishSize  |  已发布消息的大小。 **单位**：字节 **有效维度：**应用程序 PhoneNumber、平台和 TopicName **有效统计数据**：Minimum、Maximum、Average 和 Count  | 
| AWS/SNS | SMSMonthToDateSpentUSD |  当前日历月开始以来您因发送 SMS 消息累积产生的费用。 您可以为此指标设置警报，以了解您的 month-to-date费用何时接近账户的每月短信支出配额。如果 Amazon SNS 确定发送 SMS 消息产生的费用会超过此配额，它会在几分钟内停止发布 SMS 消息。 有关设置您的每月 SMS 支出配额的信息，或有关向 AWS请求提高支出配额的信息，请参阅[设置 Amazon SNS 中的短信收发首选项](sms_preferences.md)。 **单位**：美元 **有效维度**：无 **有效统计数据**：Sum  | 
| AWS/SNS |  SMSSuccessRate  |  SMS 消息传输的成功率。 **单位**：计数 **有效尺寸：** PhoneNumber **有效统计数据**：Sum、Average、Data Samples  | 

## Amazon SNS 指标的维度
<a name="sns-metric-dimensions"></a>

Amazon 简单通知服务会将以下维度发送至 CloudWatch。


|  维度  |  说明  | 
| --- | --- | 
|  Application  |  对应用程序对象进行筛选，这些对象表示在支持的推送通知服务之一（例如和 FCM）中注册的应用程序 APNs 和设备。  | 
|  Application,Platform  |  对应用程序和平台对象进行筛选，其中平台对象用于支持的推送通知服务，例如 APNs 和 FCM。  | 
| Country |  用于 SMS 消息的目标国家或地区的筛选条件。代表该国家或地区的是其 ISO 3166-1 α-2 代码。  | 
|  PhoneNumber  |  当您将 SMS 直接发布到电话号码（无主题）时，筛选电话号码。  | 
|  Platform  |  筛选推送通知服务的平台对象，例如 APNs 和 FCM。  | 
|  TopicName  |  筛选 Amazon SNS 主题名称。  | 
| SMSType |  SMS 消息的消息类型的筛选条件。可以为 *promotional* 或 *transactional*。  | 

## Amazon SNS 使用情况指标
<a name="sns-usage-metrics"></a>

Amazon 简单通知服务向发送以下使用量指标 CloudWatch。


|  命名空间  |  服务  | 指标 | 资源 | 类型 | 说明 | 
| --- | --- | --- | --- | --- | --- | 
| AWS/Usage | SNS | ResourceCount | NumberOfMessagesPublishedPerAccount | 资源 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 
| AWS/Usage | SNS | ResourceCount | ApproximateNumberOfTopics | 资源 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 
| AWS/Usage | SNS | ResourceCount | ApproximateNumberOfFilterPolicies | 资源 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 
| AWS/Usage | SNS | ResourceCount | ApproximateNumberOfPendingSubscriptions | 资源 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 
| AWS/Usage | SNS | CallCount |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | API |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 