AWS Lambda 暗号化ヘルパーを使用して AWS Key Management Service (AWS KMS) 環境変数の復号を試みたところ、「InvalidCiphertextException」というエラーを受け取りました。
簡単な説明
AWS KMS API アクションエラー ** InvalidCipherTextException** は、Lambda が環境変数の暗号化方法を更新したために復号化リクエストが失敗したことを示します。Lambda は、関数名を暗号化コンテキストとして渡し、AWS KMS への暗号化呼び出しを行います。この変更の前に作成された復号関数については、復号のためのコードを更新し、暗号化コンテキストとして Lambda 関数名を渡す必要があります。
解決策
暗号化コンテキストを使用して特定の SDK の AWS KMS への復号呼び出しでコードを取得するには、次の手順を実行します。
- Lambda コンソールを開き、関数 を選択します。
- 関数名で Lambda 関数を選択し、設定タブを選択します。
- 環境変数 で 編集を選択し、環境変数の追加を選択します。
- キーと値を入力し、暗号化の設定を展開します。
- 転送時の暗号化に使用するヘルパーを有効にするを選択し、次に暗号化を選択します。
- シークレットスニペットを復号を展開し、次のようなコードスニペットを入力します。
DECRYPTED = boto3.client('kms').decrypt( CiphertextBlob=b64decode(ENCRYPTED),
EncryptionContext={'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']}
)['Plaintext'].decode('utf-8')
このコードスニペットを使用して、暗号化ヘルパーで暗号化された新しい環境変数を複合します。
古い環境変数を再暗号化して、新しい環境変数で動作するようにしてください。
詳細については、AWS Lambda 環境変数の使用を参照してください。
関連情報
AWS KMS API を呼び出すときに、関連するデータ暗号化を伴う認証済み暗号化が使用されていることを検証するにはどうすればよいですか?