#amazon-s3 #aws-lambda #aws-cdk
#amazon-s3 #aws-lambda #aws-cdk
Вопрос:
Я пытаюсь настроить уведомление о событии s3 для существующего сегмента S3 с помощью aws cdk. Ниже приведен код.
bucket = s3.Bucket.from_bucket_name(self, "S3Bucket", f"some-{stack_settings.aws_account_id}")
bucket.add_event_notification(
s3.EventType.OBJECT_CREATED,
s3n.SqsDestination(queue),
s3.NotificationKeyFilter(
prefix="uploads/"
),
)
Сбой при создании стека, и я вижу ошибку ниже в консоли cloudformation.
User: arn:aws:sts::<account>:assumed-role/some-cicd/i-8989898989xyz
is not authorized to perform: lambda:InvokeFunction on resource:
arn:aws:lambda:us-east-1:<account_number>:function:<some name>-a-BucketNotificationsHandl-b2kDmawsGjpL
because no identity-based policy allows the lambda:InvokeFunction action (Service: AWSLambda;
Status Code: 403; Error Code: AccessDeniedException; Request ID: c2d91744-416c-454d-a510-ff4cce061b80;
Proxy: null)
Я не уверен, что это за лямбда. Я не пытаюсь создать какую-либо такую лямбду в моем приложении cdk.
Кто-нибудь знает, что здесь происходит, и если с моим кодом что-то не так?
Ответ №1:
Возможность добавления уведомлений в существующую корзину реализована с помощью пользовательского ресурса, то есть лямбда-кода, который использует AWS SDK для изменения настроек корзины.
CloudFormation вызывает эту лямбду при создании этого пользовательского ресурса (также при обновлении / удалении).
Если вам нужны подробности, вот соответствующая проблема github, вы можете увидеть коммит, который добавил эту функцию.