Doc AWS SDK ExamplesWord リポジトリには、さらに多くの GitHub の例があります。 AWS SDK
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SDK または CLI Encrypt
で使用する
以下のコード例は、Encrypt
の使用方法を示しています。
アクション例は、より大きなプログラムからのコードの抜粋であり、コンテキスト内で実行する必要があります。次のコード例で、このアクションのコンテキストを確認できます。
- CLI
-
- AWS CLI
-
例 1: Linux または MacOS でファイルの内容を暗号化するには
次の
encrypt
コマンドは、 AWS CLI でデータを暗号化する推奨方法を示しています。aws kms encrypt \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --plaintextfileb://ExamplePlaintextFile
\ --outputtext
\ --queryCiphertextBlob
|
base64
\ --decode>
ExampleEncryptedFile
このコマンドは、以下の操作を行います。
--plaintext
パラメータを使用して暗号化するデータを指定します。このパラメータ値は base64 でエンコードする必要があります。plaintext
パラメータの値は base64 でエンコードするか、fileb://
プレフィックスを使用する必要があります。プレフィックスは、ファイルからバイナリデータを読み取るように AWS CLI に指示します。ファイルが現在のディレクトリにない場合は、ファイルへのフルパスを入力します。例えば、fileb:///var/tmp/ExamplePlaintextFile
、fileb://C:\Temp\ExamplePlaintextFile
などです。ファイルから AWS CLI パラメータ値を読み取る方法の詳細については、 コマンドラインインターフェイスユーザーガイドの「ファイルからのパラメータのロード」と、コマンドラインツールブログのローカルファイルパラメータのベストプラクティス「」を参照してください。 --output
および AWS--query
パラメータを使用してコマンドの出力を制御します。これらのパラメータは、暗号化されたデータを抽出します。 AWS 暗号文と呼ばれる コマンドの出力から。出力の制御の詳細については、 コマンドAWS ラインインターフェイスユーザーガイドの「コマンド出力の制御」を参照してください。base64
ユーティリティを使用して、抽出された出力をバイナリデータにデコードします。コマンドが正常に返される暗号文は base64 でエンコードされたテキストencrypt
です。 AWS CLI を使用して復号化する前に、このテキストをデコードする必要があります。バイナリ暗号文をファイルに保存します。コマンド (> ExampleEncryptedFile
) の最後の部分は、復号を容易にするためにバイナリ暗号文をファイルに保存しています。 AWS CLI を使用してデータを復号するコマンドの例については、復号の例を参照してください。例 2: Windows でのデータの暗号化に AWS CLI を使用する
この例は前の例と同じですが、
base64
の代わりにcertutil
ツールを使用します。この手順には、次の例に示すように 2 つのコマンドが必要です。aws kms encrypt \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --plaintextfileb://ExamplePlaintextFile
\ --outputtext
\ --queryCiphertextBlob
>
C:\Temp\ExampleEncryptedFile.base64certutil
-decode
C:\Temp\ExampleEncryptedFile.base64 C:\Temp\ExampleEncryptedFile例 3: 非対称 KMS キーによる暗号化
次の
encrypt
コマンドは、非対称 KMS キーを使用してプレーンテキストを暗号化する方法を示しています。--encryption-algorithm
パラメータは必須です。すべてのencrypt
CLI コマンドと同様に、plaintext
パラメータは base64 でエンコードされているか、fileb://
プレフィックスを使用する必要があります。プレフィックスは、ファイルからバイナリデータを読み取るように AWS CLI に指示します。aws kms encrypt \ --key-id
1234abcd-12ab-34cd-56ef-1234567890ab
\ --encryption-algorithmRSAES_OAEP_SHA_256
\ --plaintextfileb://ExamplePlaintextFile
\ --outputtext
\ --queryCiphertextBlob
|
base64
\ --decode>
ExampleEncryptedFile
このコマンドでは何も出力されません。
-
API の詳細については、 AWS CLI コマンドリファレンスの「暗号化
」を参照してください。
-
- Java
-
- Java 2.x のSDK
-
注記
GitHub には他にもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 /** * Encrypts the given text asynchronously using the specified KMS client and key ID. * * @param keyId the ID of the KMS key to use for encryption * @param text the text to encrypt * @return a CompletableFuture that completes with the encrypted data as an SdkBytes object */ public CompletableFuture<SdkBytes> encryptDataAsync(String keyId, String text) { SdkBytes myBytes = SdkBytes.fromUtf8String(text); EncryptRequest encryptRequest = EncryptRequest.builder() .keyId(keyId) .plaintext(myBytes) .build(); CompletableFuture<EncryptResponse> responseFuture = getAsyncClient().encrypt(encryptRequest).toCompletableFuture(); return responseFuture.whenComplete((response, ex) -> { if (response != null) { String algorithm = response.encryptionAlgorithm().toString(); logger.info("The string was encrypted with algorithm {}.", algorithm); } else { throw new RuntimeException(ex); } }).thenApply(EncryptResponse::ciphertextBlob); }
-
API の詳細については、AWS SDK for Java 2.x API リファレンスの「暗号化」を参照してください。
-
- Kotlin
-
- Kotlin のSDK
-
注記
GitHub には他にもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 suspend fun encryptData(keyIdValue: String): ByteArray? { val text = "This is the text to encrypt by using the AWS KMS Service" val myBytes: ByteArray = text.toByteArray() val encryptRequest = EncryptRequest { keyId = keyIdValue plaintext = myBytes } KmsClient { region = "us-west-2" }.use { kmsClient -> val response = kmsClient.encrypt(encryptRequest) val algorithm: String = response.encryptionAlgorithm.toString() println("The encryption algorithm is $algorithm") // Return the encrypted data. return response.ciphertextBlob } } suspend fun decryptData( encryptedDataVal: ByteArray?, keyIdVal: String?, path: String, ) { val decryptRequest = DecryptRequest { ciphertextBlob = encryptedDataVal keyId = keyIdVal } KmsClient { region = "us-west-2" }.use { kmsClient -> val decryptResponse = kmsClient.decrypt(decryptRequest) val myVal = decryptResponse.plaintext // Write the decrypted data to a file. if (myVal != null) { File(path).writeBytes(myVal) } } }
-
API の詳細については、「Word for Kotlin Word リファレンスの暗号化
」を参照してください。 AWS SDK API
-
- PHP
-
- PHP に関する SDK
-
注記
GitHub には他にもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 /*** * @param string $keyId * @param string $text * @return Result */ public function encrypt(string $keyId, string $text) { try { return $this->client->encrypt([ 'KeyId' => $keyId, 'Plaintext' => $text, ]); }catch(KmsException $caught){ if($caught->getAwsErrorMessage() == "DisabledException"){ echo "The request was rejected because the specified KMS key is not enabled.\n"; } throw $caught; } }
-
API の詳細については、AWS SDK for PHP API リファレンスの「暗号化」を参照してください。
-
- Python
-
- Python のSDK (Boto3)
-
注記
GitHub には他にもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 class KeyEncrypt: def __init__(self, kms_client): self.kms_client = kms_client @classmethod def from_client(cls) -> "KeyEncrypt": """ Creates a KeyEncrypt instance with a default KMS client. :return: An instance of KeyEncrypt initialized with the default KMS client. """ kms_client = boto3.client("kms") return cls(kms_client) def encrypt(self, key_id: str, text: str) -> str: """ Encrypts text by using the specified key. :param key_id: The ARN or ID of the key to use for encryption. :param text: The text to encrypt. :return: The encrypted version of the text. """ try: response = self.kms_client.encrypt(KeyId=key_id, Plaintext=text.encode()) print( f"The string was encrypted with algorithm {response['EncryptionAlgorithm']}" ) return response["CiphertextBlob"] except ClientError as err: if err.response["Error"]["Code"] == "DisabledException": logger.error( "Could not encrypt because the key %s is disabled.", key_id ) else: logger.error( "Couldn't encrypt text. Here's why: %s", err.response["Error"]["Message"], ) raise
-
API の詳細については、AWS SDK for Python (Boto3) API リファレンスの暗号化」を参照してください。
-
- Ruby
-
- Ruby のSDK
-
注記
GitHub には他にもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 require 'aws-sdk-kms' # v2: require 'aws-sdk' # ARN of the AWS KMS key. # # Replace the fictitious key ARN with a valid key ID keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' text = '1234567890' client = Aws::KMS::Client.new(region: 'us-west-2') resp = client.encrypt({ key_id: keyId, plaintext: text }) # Display a readable version of the resulting encrypted blob. puts 'Blob:' puts resp.ciphertext_blob.unpack('H*')
-
API の詳細については、AWS SDK for Ruby API リファレンスの「暗号化」を参照してください。
-
- Rust
-
- Rust のSDK
-
注記
GitHub には他にもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 async fn encrypt_string( verbose: bool, client: &Client, text: &str, key: &str, out_file: &str, ) -> Result<(), Error> { let blob = Blob::new(text.as_bytes()); let resp = client.encrypt().key_id(key).plaintext(blob).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); let mut ofile = File::create(out_file).expect("unable to create file"); ofile.write_all(s.as_bytes()).expect("unable to write"); if verbose { println!("Wrote the following to {:?}", out_file); println!("{}", s); } Ok(()) }
-
API の詳細については、「 Word for Rust Word リファレンスの暗号化
」を参照してください。 AWS SDK API
-