"Уничтожить 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
Другие вопросы по тегам