

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

# ExpirationSettings 在 Amazon Chime 软件开发工具包消息中使用
<a name="expiration"></a>

创建 `AppInstanceUser` 或 `Channel` 时，您可以使用 `ExpirationSettings` 将这些资源配置为自动删除。`ExpirationSettings` 有助于降低存储成本并防止出现超出资源限制的问题。例如，您可以在 7 天后删除未使用的频道，或者删除仅为测试目的调用的 `AppInstanceUser`。

对于 `AppInstanceUser`，您可以根据用户创建时间来指定过期时间。对于 `Channel`，您可以根据频道的创建时间或上次消息时间来指定过期时间。后者允许您使用消息事件来自定义自动删除。

**重要**  
资源过期后不久，`ExpirationSettings` 启动后台进程以删除该资源。该过程通常需要 6 个小时，但时间可能会有所不同。  
已过期且尚未删除的 `AppInstanceUsers` 和 `Channels` 仍显示为有效且处于活动状态。您可以更新或删除他们的过期设置，系统会接受您的更改。

**Topics**
+ [正在配置 ExpirationSettings](#create-expiration)
+ [AWS CloudTrail 删除过期资源的事件](#ct-events)

## 正在配置 ExpirationSettings
<a name="create-expiration"></a>

以下各节说明如何配置 `AppInstanceUser` 或 `Channel` 的 `ExpirationSettings`。

### 在创建资源时配置 ExpirationSettings
<a name="configure-on-create"></a>

您可以在运行 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateAppInstanceUser.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateAppInstanceUser.html) 或 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html) API 时配置 `ExpirationSettings`。如果设置 `ExpirationSettings` 参数，您必须授予以下 IAM 权限：
+ 创建 `AppInstanceUser` 时的 `chime:PutAppInstanceUserExpirationSettings`
+ 创建 `Channel` 时的 `chime:PutChannelExpirationSettings`。

以下示例使用 AWS CLI 创建在一天后`AppInstanceUser`过期的。

```
aws chime-sdk-identity create-app-instance-user \
--app-instance-arn "{{app_instance_arn}}" \
--app-instance-user-id "{{backend-worker}}" \
--name "{{backend-worker}}" \
--expiration-settings '{
            "ExpirationDays": {{1}},
            "ExpirationCriterion": "{{CREATED_TIMESTAMP}}"
        }'
```

以下示例使用 AWS CLI 创建在上次收到消息后一天后过期的。`Channel`

```
aws chime-sdk-messaging create-channel \
--chime-bearer "{{app_instance_user_arn}}" \
--app-instance-arn "{{app_instance_arn}}" \
--name "{{firstChannel}}" \
--expiration-settings '{
            "ExpirationDays": {{1}},
            "ExpirationCriterion": "{{LAST_MESSAGE_TIMESTAMP}}"
        }'
```

### 使用 Put API 进行配置 ExpirationSettings
<a name="configure-on-put"></a>

您还可以使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_PutAppInstanceUserExpirationSettings.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_PutAppInstanceUserExpirationSettings.html) 和 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelExpirationSettings.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelExpirationSettings.html) API 来创建、更新和删除 `ExpirationSettings`。

以下示例演示如何使用 AWS CLI 更新`AppInstanceUser`的`ExpirationSettings`。

```
aws chime-sdk-identity put-app-instance-user-expiration-settings \
--app-instance-user-arn "{{app_instance_user_arn}}" \
--expiration-settings '{
            "ExpirationDays": {{30}},
            "ExpirationCriterion": "{{CREATED_TIMESTAMP}}"
        }'
```

以下示例演示如何使用 AWS CLI 删除频道`ExpirationSettings`。

```
aws chime-sdk-messaging put-channel-expiration-settings \
--chime-bearer "{{app_instance_user_arn}}" \
--channel-arn "{{channel_arn}}"
```

## AWS CloudTrail 删除过期资源的事件
<a name="ct-events"></a>

在系统删除过期的资源后，它会向发送`ExpireAppInstanceUser`或`ExpireChannel`事件 AWS CloudTrail。事件的类型取决于已删除资产的类型。

以下示例介绍了 `AppInstanceUser` 事件。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "accountId": "{{123456789012}}",
        "invokedBy": "chime.amazonaws.com"
    },
    "eventTime": "{{2023-03-15T00:00:00Z}}",
    "eventSource": "chime.amazonaws.com",
    "eventName": "ExpireAppInstanceUser",
    "awsRegion": "{{us-east-1}}",
    "sourceIPAddress": "chime.amazonaws.com",
    "userAgent": "chime.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "{{12345678-1234-1234-1234-123456789012}}",
    "readOnly": false,
    "resources": [
        {
            "accountId": "{{123456789012}}",
            "type": "AWS::Chime::AppInstanceUser",
            "ARN": "arn:aws:chime:{{us-east-1}}:{{123456789012}}:app-instance/{{app-instance-id}}/user/{{user-id}}"
        }
    ],
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "{{123456789012}}",
    "serviceEventDetails": {
        "reason": "AppInstanceUser deleted due to expiration settings."
    },
    "eventCategory": "Management"
}
```