"Уничтожить cdk" не работает, как задумано, или я не правильно понимаю?
Вот мой демонстрационный стек,
export class HelloCdkStack extends cdk.Stack {
constructor(parent: cdk.App, id: string, props?: cdk.StackProps) {
super(parent, id, props);
new s3.Bucket(this, 'MyFirstBucket', {
versioned: true,
encryption: s3.BucketEncryption.KmsManaged,
});
}
}
'cdk deploy' создает новое ведро, но когда я выполняю 'cdk destroy', оно не удаляет ведро. Я делаю что-то не так?
5 ответов
По умолчанию корзины S3 настроены так, чтобы они были "осиротевшими" при удалении стека. настройка removalPolicy
в Destroy
физически уничтожит ведро при удалении.
Вы можете установить
destroy
к
removalPolicy
, он удалит ведро, если оно пустое: https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html#removalpolicy
Если вы хотите уничтожить даже непустое ведро, вы также должны установить
autoDeleteObjects
собственность на
true
: https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html#autodeleteobjects
Если вам нужно автоматически уничтожить ведро с файлами в нем, ознакомьтесь с этой конструкцией CDK: https://www.npmjs.com/package/@mobileposse/auto-delete-bucket
Если вам нужно автоматически уничтожить ведро, которое, как ожидается, будет пустым, используйте стандартное ведро и установите для параметра removePolicy значение DESTROY. https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html
В моем случае проблема заключалась в том,
cdk
пытался получить учетные данные разных учетных записей. Добавить
--verbose
или же
-v
флаг, чтобы увидеть, генерируется ли какое-либо исключение внутри.
Обидно, что исключение не регистрируется в stdout или stderr (как и должно быть для любого инструмента)
В python после начала работы вы можете добавить
removal_policy=cdk.RemovalPolicy.DESTROY
параметр при создании экземпляра
s3.Bucket
объект, поэтому корзина будет удалена
cdk destroy
.
from aws_cdk import core as cdk
from aws_cdk import aws_s3 as s3
class HelloCdkStack(cdk.Stack):
def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
bucket = s3.Bucket(self,
"MyFirstBucket",
versioned=True,
removal_policy=cdk.RemovalPolicy.DESTROY) # delete bucket on destroy