

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

# Gunakan `GenerateDataKey` dengan AWS SDK atau CLI
<a name="example_kms_GenerateDataKey_section"></a>

Contoh kode berikut menunjukkan cara menggunakan`GenerateDataKey`.

------
#### [ CLI ]

**AWS CLI**  
**Contoh 1: Untuk menghasilkan kunci data simetris 256-bit**  
`generate-data-key`Contoh berikut meminta kunci data simetris 256-bit untuk digunakan di luar. AWS Perintah mengembalikan kunci data plaintext untuk segera digunakan dan dihapus, dan salinan kunci data yang dienkripsi di bawah kunci KMS yang ditentukan. Anda dapat dengan aman menyimpan kunci data terenkripsi dengan data terenkripsi.  
Untuk meminta kunci data 256-bit, gunakan `key-spec` parameter dengan nilai. `AES_256` Untuk meminta kunci data 128-bit, gunakan `key-spec` parameter dengan nilai. `AES_128` Untuk semua panjang kunci data lainnya, gunakan `number-of-bytes` parameter.  
Kunci KMS yang Anda tentukan harus berupa kunci KMS enkripsi simetris, yaitu kunci KMS dengan nilai spesifikasi kunci SYMMETRIC\$1DEFAULT.  

```
aws kms generate-data-key \
    --key-id alias/ExampleAlias \
    --key-spec AES_256
```
Output:  

```
{
    "Plaintext": "VdzKNHGzUAzJeRBVY+uUmofUGGiDzyB3+i9fVkh3piw=",
    "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6",
    "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogLqPWZconQhwHAIBEIA7d9AC7GeJJM34njQvg4Wf1d5sw0NIo1MrBqZa+YdhV8MrkBQPeac0ReRVNDt9qleAt+SHgIRF8P0H+7U="
}
```
`Plaintext`(Kunci data teks biasa) dan `CiphertextBlob` (kunci data terenkripsi) dikembalikan dalam format yang disandikan base64.  
Untuk informasi selengkapnya, lihat [Kunci data](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html) di *Panduan Pengembang Layanan Manajemen AWS Kunci*. **Contoh 2: Untuk menghasilkan kunci data simetris 512-bit**  
`generate-data-key`Contoh berikut meminta kunci data simetris 512-bit untuk enkripsi dan dekripsi. Perintah mengembalikan kunci data plaintext untuk segera digunakan dan dihapus, dan salinan kunci data yang dienkripsi di bawah kunci KMS yang ditentukan. Anda dapat dengan aman menyimpan kunci data terenkripsi dengan data terenkripsi.  
Untuk meminta panjang kunci selain 128 atau 256 bit, gunakan `number-of-bytes` parameter. Untuk meminta kunci data 512-bit, contoh berikut menggunakan `number-of-bytes` parameter dengan nilai 64 (byte).  
Kunci KMS yang Anda tentukan harus berupa kunci KMS enkripsi simetris, yaitu kunci KMS dengan nilai spesifikasi kunci SYMMETRIC\$1DEFAULT.  
CATATAN: Nilai-nilai dalam output dari contoh ini terpotong untuk tampilan.  

```
aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --number-of-bytes 64
```
Output:  

```
{
    "CiphertextBlob": "AQIBAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAEnX/QQNmMwDfg2korNMEc8AAACaDCCAmQGCSqGSIb3DQEHBqCCAlUwggJRAgEAMIICSgYJKoZ...",
    "Plaintext": "ty8Lr0Bk6OF07M2BWt6qbFdNB+G00ZLtf5MSEb4al3R2UKWGOp06njAwy2n72VRm2m7z/Pm9Wpbvttz6a4lSo9hgPvKhZ5y6RTm4OovEXiVfBveyX3DQxDzRSwbKDPk/...",
    "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6"
}
```
`Plaintext`(Kunci data teks biasa) dan `CiphertextBlob` (kunci data terenkripsi) dikembalikan dalam format yang disandikan base64.  
Untuk informasi selengkapnya, lihat [Kunci data](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html) di *Panduan Pengembang Layanan Manajemen AWS Kunci*.  
+  Untuk detail API, lihat [GenerateDataKey](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-data-key.html)di *Referensi AWS CLI Perintah*. 

------
#### [ Python ]

**SDK untuk Python (Boto3)**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di [Repositori Contoh Kode AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/kms#code-examples). 

```
class KeyManager:
    def __init__(self, kms_client):
        self.kms_client = kms_client
        self.created_keys = []

    @classmethod
    def from_client(cls) -> "KeyManager":
        """
        Creates a KeyManager instance with a default KMS client.

        :return: An instance of KeyManager initialized with the default KMS client.
        """
        kms_client = boto3.client("kms")
        return cls(kms_client)


    def generate_data_key(self, key_id):
        """
        Generates a symmetric data key that can be used for client-side encryption.
        """
        answer = input(
            f"Do you want to generate a symmetric data key from key {key_id} (y/n)? "
        )
        if answer.lower() == "y":
            try:
                data_key = self.kms_client.generate_data_key(
                    KeyId=key_id, KeySpec="AES_256"
                )
            except ClientError as err:
                logger.error(
                    "Couldn't generate a data key for key %s. Here's why: %s",
                    key_id,
                    err.response["Error"]["Message"],
                )
            else:
                pprint(data_key)
```
+  Untuk detail API, lihat [GenerateDataKey](https://docs.aws.amazon.com/goto/boto3/kms-2014-11-01/GenerateDataKey)di *AWS SDK for Python (Boto3) Referensi* API. 

------
#### [ Rust ]

**SDK for Rust**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di [Repositori Contoh Kode AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/kms#code-examples). 

```
async fn make_key(client: &Client, key: &str) -> Result<(), Error> {
    let resp = client
        .generate_data_key()
        .key_id(key)
        .key_spec(DataKeySpec::Aes256)
        .send()
        .await?;

    // Did we get an encrypted blob?
    let blob = resp.ciphertext_blob.expect("Could not get encrypted text");
    let bytes = blob.as_ref();

    let s = base64::encode(bytes);

    println!();
    println!("Data key:");
    println!("{}", s);

    Ok(())
}
```
+  Untuk detail API, lihat [GenerateDataKey](https://docs.rs/aws-sdk-kms/latest/aws_sdk_kms/client/struct.Client.html#method.generate_data_key)*referensi AWS SDK for Rust API*. 

------
#### [ SAP ABAP ]

**SDK for SAP ABAP**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di [Repositori Contoh Kode AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap/services/kms#code-examples). 

```
    TRY.
        " iv_key_id = 'arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab'
        " iv_keyspec = 'AES_256'
        oo_result = lo_kms->generatedatakey(
          iv_keyid = iv_key_id
          iv_keyspec = 'AES_256'
        ).
        MESSAGE 'Data key generated successfully.' TYPE 'I'.
      CATCH /aws1/cx_kmsdisabledexception.
        MESSAGE 'The key is disabled.' TYPE 'E'.
      CATCH /aws1/cx_kmsnotfoundexception.
        MESSAGE 'Key not found.' TYPE 'E'.
      CATCH /aws1/cx_kmskmsinternalex.
        MESSAGE 'An internal error occurred.' TYPE 'E'.
    ENDTRY.
```
+  Untuk detail API, lihat [GenerateDataKey](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html)di *AWS SDK untuk referensi SAP ABAP* API. 

------

Untuk daftar lengkap panduan pengembang AWS SDK dan contoh kode, lihat[Menggunakan layanan ini dengan AWS SDK](sdk-general-information-section.md). Topik ini juga mencakup informasi tentang memulai dan detail tentang versi SDK sebelumnya.