Martin Thoma
Martin Thoma

Reputation: 136675

How can I delete an existing S3 event notification?

When I try to delete an event notification from S3, I get the following message:

enter image description here

In Text:

Unable to validate the following destination configurations. Not authorized to invoke function [arn:aws:lambda:eu-west-1:FOOBAR:function:FOOBAR]. (arn:aws:lambda:eu-west-1:FOOBAR:function:FOOBAR, null)

Nobody in my organization seems to be able to delete that - not even admins.

When I try to set the same S3 event notification in AWS Lambda as a trigger via the web interface, I get

Configuration is ambiguously defined. Cannot have overlapping suffixes in two rules if the prefixes are overlapping for the same event type. (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: FOOBAR; S3 Extended Request ID: FOOBAR/FOOBAR/FOOBAR)

How can I delete that existing event notification? How can I further investigate the problem?

Upvotes: 6

Views: 10508

Answers (5)

Mike Bolívar
Mike Bolívar

Reputation: 81

I tried but doesnt work for me, I uploaded a lambda with the same name of function but without events, after go to the function in the dashboard and add trigger with the same prefix and suffix, when apply changes the dashboard says error, but if you come back to function lambda, you can see the trigger now is linked to lambda, so after you can remove tha lambda or events

Upvotes: 0

Liam Wang
Liam Wang

Reputation: 11

  1. retrieve all the notification configurations of a specific bucket
aws s3api get-bucket-notification-configuration --bucket=mybucket > notification.sh

the notification.sh file would look like the following

{
    "LambdaFunctionConfigurations": [
        {
            "Id": ...,
            "LambdaFunctionArn": ...,
            "Events": [...],
            "Filter": {...},
        },
        { ... },
    ]
}
  1. remove the notification object from the notification.sh
  2. modify the notification.sh like the following
#! /bin/zsh
aws s3api put-bucket-notification-configuration --bucket=mybucket --notification-configuration='{
    "LambdaFunctionConfigurations": [
        {
            "Id": ...,
            "LambdaFunctionArn": ...,
            "Events": [...],
            "Filter": {...},
        },
        { ... },
    ]
}'
  1. run the shell script
source notification.sh

Upvotes: 1

Kapil Shukla
Kapil Shukla

Reputation: 207

There is no 's3api delete notification-configuration' in AWS CLI. Only the 's3api put-bucket-notification-configuration' is present which will override any previously existing events in the s3 bucket. So, if you wish to delete a specific event only you need to handle that programatically.

Something like this: Step 1. Do a 's3api get-bucket-notification-configuration' and get the s3-notification.json file. Step 2. Now edit this file to reach the required s3-notification.json file using your code. Step 3. Finally, do 's3api put-bucket-notification-configuration' (aws s3api put-bucket-notification-configuration --bucket my-bucket --notification-configuration file://s3-notification.json)

i had worked on the logic in AWS CLI, it requires a jq command to merge the json output

Upvotes: 1

Ben Watson
Ben Watson

Reputation: 5541

Assuming you have better permissions from the CLI:

aws s3api put-bucket-notification-configuration --bucket=mybucket --notification-configuration='{"LambdaFunctionConfigurations": []}'

Upvotes: 1

badgerduke
badgerduke

Reputation: 405

I was having the same problem tonight and did the following:

1) Issue the command:

aws s3api put-bucket-notification-configuration --bucket=mybucket --notification-configuration="{}"

2) In the console, delete the troublesome event.

Upvotes: 10

Related Questions