Using ExpirationSettings in Amazon Chime SDK messaging
When you create an AppInstanceUser or a Channel, you can use
ExpirationSettings to configure those resources for automatic deletion.
ExpirationSettings helps reduce storage costs and prevent resource-limit-exceeded
issues. For example, you can delete unused channels after 7 days, or delete an
AppInstanceUser that was only invoked for testing purposes.
For an AppInstanceUser, you specify the expiration period based on user
creation time. For a Channel, you specify the expiration period based on the
channel's creation time, or last message time. The latter allows you use message activities to
customize automatic deletion.
Important
Shortly after a resource expires, ExpirationSettings starts a background
process to delete that resource. The process usually takes 6 hours, but that time can
vary.
Expired AppInstanceUsers and Channels that haven’t yet been
deleted still appear as valid and active. You can update or remove their expiration settings,
and the system honors your changes.
Configuring ExpirationSettings
The following sections explain how to configure the ExpirationSettings of an
AppInstanceUser or a Channel.
Configuring ExpirationSettings when you create a resource
You can configure ExpirationSettings when you run the CreateAppInstanceUser or CreateChannel APIs. If you set the
ExpirationSettings parameter, you must grant the following IAM
permissions:
-
chime:PutAppInstanceUserExpirationSettingswhen creating anAppInstanceUser -
chime:PutChannelExpirationSettingswhen creating aChannel.
The following example uses the AWS CLI to create an AppInstanceUser that
expires after a day.
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" }'
The following example uses the AWS CLI to create a Channel that expires
after a day after it last receives a message.
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" }'
Using Put APIs to configure ExpirationSettings
You can also use the PutAppInstanceUserExpirationSettings and PutChannelExpirationSettings APIs to create, update, and delete
ExpirationSettings.
The following example shows you to use the AWS CLI to update an
AppInstanceUser's 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" }'
The following example shows you to use the AWS CLI to delete a channel's
ExpirationSettings.
aws chime-sdk-messaging put-channel-expiration-settings \ --chime-bearer "app_instance_user_arn" \ --channel-arn "channel_arn"
AWS CloudTrail events for expired resource deletion
After the system deletes an expired resource, it sends an
ExpireAppInstanceUser or ExpireChannel event to AWS CloudTrail.
The type of event depends on the type of deleted asset.
The following example shows an AppInstanceUser event.
{ "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" }