Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Wie behebe ich den Fehler „Bereits vorhanden“, den ich erhalte, wenn ich meinen AWS-CDK-Code erneut bereitstelle, nachdem ich den Stack aus der Bereitstellung gelöscht habe?

Lesedauer: 3 Minute
0

Ich möchte den Fehler „Bereits vorhanden“ beheben, der angezeigt wird, wenn ich meinen Code für das AWS Cloud Development Kit (AWS CDK) erneut bereitstelle.

Behebung

Die meisten Stateful-Ressourcen in der AWS CDK Construct Library akzeptieren die Eigenschaft removalPolicy mit RETAIN als Standard. Weitere Informationen finden Sie unter enum RemovalPolicy auf der AWS-CDK-Website.

Wenn Sie die Eigenschaft removalPolicy für Ihre Ressourcen nicht festlegen, werden die Ressourcen verwaist. Sie verbleiben in Ihrem AWS-Konto, nachdem Sie den Stack gelöscht haben, und gehen in den Status DELETE_COMPLETE über. Wenn Sie einen benutzerdefinierten Namen für die Ressourcen angegeben haben, wird der Fehler „Bereits vorhanden“ angezeigt, wenn Sie denselben Code erneut bereitstellen.

Hinweis: In den folgenden Schritten wird eine Beispiel-Bucket-Ressource von Amazon Simple Storage Service (Amazon S3) verwendet, die durch die Klasse s3.Bucket in AWS CDK dargestellt wird. Standardmäßig ist die removalPolicy der Ressource auf RETAIN gesetzt. Wenn Sie den zugehörigen Stack löschen, bleibt die Ressource in Ihrem Konto erhalten. Wenn Sie den Stapel aktualisieren, wird die Ressource entfernt.

Das Folgende ist ein Beispiel für eine Ressource mit benutzerdefiniertem Namen:

const s3Bucket = new s3.Bucket(this, 's3-bucket', {
 bucketName: 'DOC-EXAMPLE-BUCKET1',
 versioned: false,
 encryption: s3.BucketEncryption.S3_MANAGED
 });

Manuelles Löschen der beibehaltenen Ressource

Führen Sie die folgenden Schritte aus:

  1. Melden Sie sich bei der AWS-Managementkonsole an.
  2. Wählen Sie den Service der Ressourcen, die Sie nicht behalten möchten.
  3. Löschen Sie die Ressourcen manuell. Um beispielsweise die Ressource s3.bucket zu entfernen, löschen Sie den Amazon-S3-Bucket.
  4. Führen Sie den folgenden Befehl aus, um das AWS CDK erneut bereitzustellen:
    cdk deploy

Den Namen der beibehaltenen Ressource ändern

Führen Sie die folgenden Schritte aus:

  1. Öffnen Sie auf den AWS-CDK-Code der Ressource, deren Namen Sie ändern möchten.
  2. Aktualisieren Sie den Namen der Ressource auf einen eindeutigen Wert, der nicht mit dem Namen der beibehaltenen Ressource kollidiert:
    const s3Bucket = new s3.Bucket(this, 's3-bucket', {
     bucketName: 'EXAMPLE-NEW-NAME-S3-BUCKET',
     versioned: false,
     encryption: s3.BucketEncryption.S3_MANAGED
     });
    Hinweis: Aktualisieren Sie bei diesem Beispiel den Parameter bucketName, um den Namen der Ressource s3.Bucket zu ändern.

Den Ressourcennamen löschen

Löschen Sie den Ressourcennamen, damit AWS CDK einen eindeutigen Namen generieren kann.

Führen Sie die folgenden Schritte aus:

  1. Entfernen Sie den Ressourcennamen aus AWS CDK:
    const s3Bucket = new s3.Bucket(this, 's3-bucket', {
     versioned: false,
     encryption: s3.BucketEncryption.S3_MANAGED
     });
    Hinweis: Der vorherige Beispielcode entfernt die Eigenschaft bucketName, damit AWS CDK einen neuen Namen generieren kann.
  2. Führen Sie den folgenden Befehl aus, um AWS CDK erneut bereitzustellen:
    cdk deploy

Die removalPolicy auf DESTROY setzen

Bevor Sie einen Stapel löschen, setzen Sie die removalPolicy der Ressource auf DESTROY.

Führen Sie die folgenden Schritte aus:

  1. Öffnen Sie auf den AWS-CDK-Code der Ressourcen, die Sie nicht beibehalten möchten.

  2. Setzen Sie die Eigenschaft removalPolicy auf DESTROY:

    const s3Bucket = new s3.Bucket(this, 's3-bucket', {
     bucketName: 'EXAMPLE-S3-BUCKET',
     removalPolicy: RemovalPolicy.DESTROY
     });
  3. Um auf die AWS-CloudFormation-Vorlage zuzugreifen, führen Sie den folgenden cdk synth-Befehl aus:

    cdk synth

    Stellen Sie dann sicher, dass DeletionPolicy und UpdateReplacePolicy auf Delete gesetzt sind.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 6 Monaten