AWS Lambda 暗号化ヘルパーを使用して環境変数の復号を試みたところ、「InvalidCiphertextException」というエラーを受け取りました。AWS Identity and Access Management (IAM) および AWS Key Management Service (AWS KMS) のアクセス権限はすべて正しいです。
簡単な説明
AWS KMS API アクションエラー InvalidCiphertextException は、Lambda が環境変数の暗号化の方法を更新したため、復号リクエストが失敗したことを示します。Lambda は関数名を暗号化コンテキストとして渡し、AWS KMS への暗号化呼び出しを行います。この変更の前に作成された復号関数については、復号のためのコードを更新し、暗号化コンテキストとして Lambda 関数名を渡す必要があります。
解決方法
暗号化コンテキストを使用して特定の SDK の AWS KMS への復号呼び出しでコードを取得するには、次の手順を実行します。
- Lambda コンソールを開き、[Functions] (関数) を選択します。
- [Function name] (関数名) で、Lambda 関数を選択します。
- [Environment variable] (環境変数) で [Edit] (編集) を選択し、[Add environment variable] (環境変数の追加) を選択します。
- [Key] (キー) と [Value] (値) を入力し、[Encryption configuration] (暗号化の設定) を展開します。
- [Enable helpers for encryption in transit] (転送時の暗号化に使用するヘルパーの有効化) を選択し、[Encrypt] (暗号化) を選択します。
- [Decrypt secret snippet] (シークレットスニペットを復号) を展開し、次のようなスニペットをコピーして貼り付けます。
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 を呼び出すときに、関連データを伴う認証つき暗号化の暗号化方式が使用されていることを確認するにはどうすればよいですか?