在 Amazon Chime SDK 消息传递中使用 ExpirationSettings
创建 AppInstanceUser
或 Channel
时,您可以使用 ExpirationSettings
将这些资源配置为自动删除。ExpirationSettings
有助于降低存储成本并防止出现超出资源限制的问题。例如,您可以在 7 天后删除未使用的频道,或者删除仅为测试目的调用的 AppInstanceUser
。
对于 AppInstanceUser
,您可以根据用户创建时间来指定过期时间。对于 Channel
,您可以根据频道的创建时间或上次消息时间来指定过期时间。后者允许您使用消息事件来自定义自动删除。
重要
资源过期后不久,ExpirationSettings
启动后台进程以删除该资源。该过程通常需要 6 个小时,但时间可能会有所不同。
已过期且尚未删除的 AppInstanceUsers
和 Channels
仍显示为有效且处于活动状态。您可以更新或删除他们的过期设置,系统会接受您的更改。
配置 ExpirationSettings
以下各节说明如何配置 AppInstanceUser
或 Channel
的 ExpirationSettings
。
在创建资源时配置 ExpirationSettings
您可以在运行 CreateAppInstanceUser 或 CreateChannel 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
您还可以使用 PutAppInstanceUserExpirationSettings 和 PutChannelExpirationSettings 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 事件
系统删除过期的资源后,会向 AWS CloudTrail 发送 ExpireAppInstanceUser
或 ExpireChannel
事件。事件的类型取决于已删除资产的类型。
以下示例介绍了 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" }