Modifying destination membership at runtime
You might encounter situations where you have to add or remove log senders
from a destination that you own. You can use the
PutDestinationPolicy and PutAccountPolicy
actions on your destination with the new access policy. In the following
example, a previously added account 111111111111 is stopped
from sending any more log data, and account 333333333333 is
enabled.
-
Fetch the policy that is currently associated with the destination testDestination and make a note of the AccessPolicy:
aws logs describe-destinations \ --destination-name-prefix "testFirehoseDestination"The returned data might look like this.
{ "destinations": [ { "destinationName": "testFirehoseDestination", "targetArn": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream", "roleArn": "arn:aws:iam:: 222222222222:role/CWLtoKinesisFirehoseRole", "accessPolicy": "{\n \"Version\" : \"2012-10-17\",\n \"Statement\" : [\n {\n \"Sid\" : \"\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : \"111111111111 \"\n },\n \"Action\" : \"logs:PutSubscriptionFilter\",\n \"Resource\" : \"arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination\"\n }\n ]\n}\n\n", "arn": "arn:aws:logs:us-east-1: 222222222222:destination:testFirehoseDestination", "creationTime": 1612256124430 } ] } -
Update the policy to reflect that account 111111111111 is stopped, and that account 333333333333 is enabled. Put this policy in the ~/NewAccessPolicy.json file:
-
Use the following command to associate the policy defined in the NewAccessPolicy.json file with the destination:
aws logs put-destination-policy \ --destination-name "testFirehoseDestination" \ --access-policy file://~/NewAccessPolicy.jsonThis eventually disables the log events from account ID 111111111111. Log events from account ID 333333333333 start flowing to the destination as soon as the owner of account 333333333333 creates a subscription filter.