

Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 yang lebih lama memasuki pemeliharaan pada 1 Juni 2022 dan mengakhiri dukungan pada 1 Juni 2023.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengkonfigurasi tindakan terprogram CDK Toolkit
<a name="toolkit-library-actions"></a>

Perpustakaan Toolkit AWS CDK menyediakan antarmuka terprogram untuk tindakan siklus hidup aplikasi seperti sintesis, penerapan, dan manajemen tumpukan. Panduan ini menjelaskan cara menggunakan setiap tindakan dalam kode Anda.

## Menghasilkan rakitan cloud dengan synth
<a name="toolkit-library-actions-synth"></a>

`synth`Tindakan ini menghasilkan rakitan cloud dari sumber perakitan cloud Anda. Untuk informasi selengkapnya tentang sintesis, lihat [Mengkonfigurasi dan melakukan sintesis tumpukan CDK](configure-synth.md). Rakitan cloud berisi artefak penerapan berikut dari aplikasi CDK Anda:
+  AWS CloudFormation template yang menentukan infrastruktur Anda.
+ Aset seperti kode fungsi Lambda atau gambar Docker.
+ Metadata dan konfigurasi penyebaran.

Berikut cara menggunakan `synth` tindakan untuk membuat perakitan cloud:

```
// Create a toolkit instance
const toolkit = new Toolkit();

// Create a cloud assembly source from a TypeScript app
const cloudAssemblySource = await toolkit.fromCdkApp("ts-node app.ts");

// Generate a cloud assembly
const cloudAssembly = await toolkit.synth(cloudAssemblySource);

// Use the cloud assembly for operations
await toolkit.list(cloudAssembly);
await toolkit.deploy(cloudAssembly);
await toolkit.diff(cloudAssembly);

// Query information from the cloud assembly
const template = cloudAssembly.getStack("my-stack").template;
```

**Tip**  
Menggunakan perakitan cloud dapat mengoptimalkan kinerja saat Anda perlu melakukan beberapa operasi, karena sintesis hanya terjadi sekali. Untuk informasi selengkapnya tentang mengelola rakitan cloud, termasuk caching dan pembuangan, lihat [Membuat dan mengelola](toolkit-library-configure-ca.md#toolkit-library-configure-ca-cache) rakitan cloud.

## Melihat informasi tumpukan dengan daftar
<a name="toolkit-library-actions-list"></a>

`list`Tindakan ini mengambil informasi tentang tumpukan di aplikasi CDK Anda, termasuk dependensi dan statusnya saat ini. Gunakan tindakan ini untuk memeriksa infrastruktur Anda sebelum penerapan atau untuk menghasilkan laporan.

```
import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib';

// Get information about specific stacks
const stackDetails = await toolkit.list(cloudAssemblySource, {
  stacks: {
    strategy: StackSelectionStrategy.PATTERN_MUST_MATCH,
    patterns: ["my-stack"], // Only include stacks matching this pattern
  }
});

// Process the returned stack information
for (const stack of stackDetails) {
  console.log(`Stack: ${stack.id}, Dependencies: ${stack.dependencies}`);
}
```

## Penyediaan infrastruktur dengan deploy
<a name="toolkit-library-actions-deploy"></a>

`deploy`Tindakan tersebut menyediakan atau memperbarui infrastruktur Anda dalam AWS menggunakan perakitan cloud yang dihasilkan selama sintesis. Untuk pengenalan penerapan, lihat [Menerapkan aplikasi AWS CDK](deploy.md). Anda dapat mengontrol opsi penerapan seperti pemilihan tumpukan, nilai parameter, dan perilaku rollback.

```
// Deploy stacks with parameter values
await toolkit.deploy(cloudAssemblySource, {
  parameters: StackParameters.exactly({
    "MyStack": {
      "BucketName": "amzn-s3-demo-bucket"
    }
  })
});
```

Tindakan penerapan mendukung metode penerapan yang berbeda untuk mengakomodasi berbagai alur kerja. Untuk sebagian besar skenario, terutama di lingkungan produksi, sebaiknya gunakan metode penerapan default yang menggunakan set CloudFormation perubahan. Untuk lingkungan pengembangan di mana kecepatan iterasi penting, Anda dapat menggunakan metode alternatif seperti hotswap.

```
import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib';

// Deploy using default deployment method (recommended for production)
await toolkit.deploy(cloudAssemblySource, {
  parameters: StackParameters.exactly({
    "MyStack": {
      "BucketName": "amzn-s3-demo-bucket"
    }
  })
});

// For development environments only: Deploy with hotswap for faster iterations
// Note: We recommend using default deployment methods for production environments
await toolkit.deploy(cloudAssemblySource, {
  deploymentMethod: { method: "hotswap", fallback: true }, // Faster but introduces drift
  stacks: {
    strategy: StackSelectionStrategy.PATTERN_MUST_MATCH,
    patterns: ["dev-stack"]
  }
});
```

## Melestarikan sumber daya yang digunakan dengan refactor
<a name="toolkit-library-actions-refactor"></a>

**penting**  
Tindakan refactor ada dalam rilis pratinjau dan dapat berubah sewaktu-waktu.

`refactor`Tindakan ini mempertahankan sumber daya yang diterapkan saat Anda memfaktorkan ulang kode CDK seperti mengganti nama konstruksi atau memindahkannya di antara tumpukan. Tanpa fitur ini, perubahan ini akan CloudFormation menyebabkan penggantian sumber daya, yang berpotensi menyebabkan gangguan layanan atau kehilangan data.

Tindakan refactor secara otomatis menghitung pemetaan dengan membandingkan kode Anda saat ini dengan status yang diterapkan. Ini memverifikasi bahwa aplikasi CDK Anda berisi kumpulan sumber daya yang persis sama dengan status yang diterapkan, hanya berbeda di lokasi mereka di pohon konstruksi. Jika mendeteksi penambahan, penghapusan, atau modifikasi sumber daya apa pun, operasi refactoring akan ditolak dengan pesan kesalahan.

Setelah menghitung pemetaan, tindakan refactor menggunakan CloudFormation API refactoring untuk memperbarui logika sumber daya tanpa menggantinya. IDs Jika menemukan pemetaan ambigu (di mana ada beberapa kemungkinan pemetaan), Anda dapat memberikan penggantian eksplisit untuk menyelesaikan ambiguitas ini.

```
// Perform refactoring operation to preserve resources
await toolkit.refactor(cloudAssemblySource);

// With optional overrides to resolve ambiguities
await toolkit.refactor(cloudAssemblySource, {
  overrides: {
    "environments": [
      {
        "account": "123456789012",
        "region": "us-east-2",
        "resources": {
          "StackA.OldName": "StackA.NewName"
        }
      }
    ]
  }
});
```

**penting**  
Operasi refactoring harus dilakukan secara terpisah dari tindakan lain, seperti menambahkan sumber daya baru, menghapus sumber daya, atau memodifikasi properti sumber daya. Jika Anda perlu membuat perubahan seperti itu, Anda harus terlebih dahulu menerapkan perubahan tersebut secara terpisah, dan kemudian menggunakan refactoring untuk mengatur ulang sumber daya Anda.

**Tip**  
Untuk informasi selengkapnya tentang refactoring CDK, termasuk cara kerjanya dan kapan menggunakannya, lihat [Mempertahankan sumber daya yang diterapkan](refactor.md) saat memfaktorkan ulang kode CDK.

## Mengembalikan penerapan yang gagal dengan rollback
<a name="toolkit-library-actions-rollback"></a>

`rollback`Tindakan mengembalikan tumpukan ke status stabil terakhirnya ketika penerapan gagal dan tidak dapat dibalik secara otomatis. Gunakan tindakan ini untuk memulihkan dari penerapan gagal yang memerlukan intervensi manual.

```
import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib';

// Roll back stacks to their last stable state
await toolkit.rollback(cloudAssemblySource, {
  orphanFailedResources: false, // When true, removes failed resources from CloudFormation management
  stacks: {
    strategy: StackSelectionStrategy.PATTERN_MUST_MATCH,
    patterns: ["failed-stack"]
  }
});
```

## Memantau perubahan dengan arloji
<a name="toolkit-library-actions-watch"></a>

`watch`Tindakan ini terus memantau aplikasi CDK Anda untuk perubahan file lokal dan secara otomatis melakukan penerapan atau hotswap. Ini membuat pengamat file yang berjalan sampai kode Anda keluar atau dihentikan.

**Awas**  
Penerapan Hotswap memperbarui sumber daya secara langsung tanpa melalui CloudFormation bila memungkinkan, membuat pembaruan lebih cepat selama pengembangan. Ini diaktifkan secara default untuk `watch` perintah. Meskipun ini mempercepat siklus pengembangan, ini memperkenalkan penyimpangan antara CloudFormation template Anda dan sumber daya yang digunakan. Oleh karena itu, kami menyarankan Anda untuk tidak menggunakan hotswaps di lingkungan produksi.

```
import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib';

// Start watching for changes
const watcher = await toolkit.watch(cloudAssemblySource, {
  include: ["lib/**/*.ts"], // Only watch TypeScript files in the lib directory
  exclude: ["**/*.test.ts"], // Ignore test files
  deploymentMethod: { method: "hotswap" }, // This is the default, shown here for clarity
  stacks: {
    strategy: StackSelectionStrategy.ALL // Watch all stacks
  }
});

// Later in your code, you can explicitly stop watching:
// await watcher.dispose();
```

Fungsi jam tangan mengembalikan `IWatcher` objek yang memungkinkan Anda mengontrol secara eksplisit kapan harus berhenti menonton. Panggil `dispose()` metode pada objek ini ketika Anda ingin mengakhiri proses menonton.

## Menghapus infrastruktur dengan menghancurkan
<a name="toolkit-library-actions-destroy"></a>

`destroy`Tindakan ini menghapus tumpukan CDK dan sumber daya terkaitnya dari. AWS Gunakan tindakan ini untuk membersihkan sumber daya saat tidak lagi dibutuhkan.

**penting**  
Tindakan menghancurkan secara permanen menghapus sumber daya tanpa meminta konfirmasi, tidak seperti versi CLI dari perintah ini. Pastikan Anda memiliki cadangan data penting apa pun sebelum menghancurkan tumpukan.

```
import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib';

// Remove specific stacks and their resources
await toolkit.destroy(cloudAssemblySource, {
  stacks: {
    strategy: StackSelectionStrategy.PATTERN_MUST_MATCH,
    patterns: ["dev-stack"], // Only destroy stacks matching this pattern
  }
});
```