cloudformation стэка. После запуска создаются необходимые мне ресурсы. Но при выполнении удаления этого же стэка, получаю такую ошибку
An error occurred: S3BucketTrail - The bucket you tried to delete is not empty
Может ктото сталкивался и знает как побороть? Может в тексте темплейта чтото поменять?
cat cloud-trail.yml
Resources:
S3BucketTrail:
# DeletionPolicy: Retain
DeletionPolicy: Delete
Type: AWS::S3::Bucket
Properties:
BucketName: '${self:custom.serviceName}-cloud-trail-bucket'
BucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket:
Ref: S3BucketTrail
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Sid: "AWSCloudTrailAclCheck"
Effect: "Allow"
Principal:
Service: "cloudtrail.amazonaws.com"
Action: "s3:GetBucketAcl"
Resource:
!Sub |-
arn:aws:s3:::${S3BucketTrail}
-
Sid: "AWSCloudTrailWrite"
Effect: "Allow"
Principal:
Service: "cloudtrail.amazonaws.com"
Action: "s3:PutObject"
Resource:
!Sub |-
arn:aws:s3:::${S3BucketTrail}/AWSLogs/${AWS::AccountId}/*
Condition:
StringEquals:
s3:x-amz-acl: "bucket-owner-full-control"
можно удалить только пустой бакет
Ну то есть я не могу удалить его через консоль? Мне в любом случае нужно заходить в UI и удалять его от туда?
Гугл говорит, что можно в шаблон вписать inline lambd'у, которая будет чистить бакет при попытке удаления.
А можно ссылку плиз? Или куда именно вписать в шаблон это?
https://techblog.realtor.com/empty-trash-deleting-stack/ https://stackoverflow.com/questions/40383470/can-i-force-cloudformation-to-delete-non-empty-s3-bucket Сам не пробовал)
можешь через консоль, можешь через aws cli ну и как написали можно написать лямбду как custom resource который очистит бакет
звучит дорого если там куча объектов. выглядит как развод. Очень надеюсь что бакет можно снести одним вызовом. хотя не утверждаю что такой есть
если бакет нужен - можешь скипнуть его и не удалять, потом сможешь импортировать у стек его снова если не нужен - надо удалять )
Ну в веб-консоли такой есть сейчас, кнопка 'empty'
значит гдето есть api
bucket = s3.Bucket('test') bucket.objects.all().delete()
хмм. все равно выглядит как чистка. Интересно через GUI он то же через доступ ко всем объектам работает и в счет добавляет или сам все делает
Обсуждают сегодня