Env
Версия CDK - "@aws-cdk/assert": "1.56.0"
Описание:
Использование машинописного текста и CDK -> создать шаблон облачной информации для «Стека». Команда, которая используется для создания шаблонов cdk synth
В стеке: должно быть условием, которое должно отключать или разрешать предоставление grantEncryptDecrypt
некоторой лямбде.
Цель:
- Не используйте
kms.Key
, если условие true
. - используйте машинописный текст для создания шаблона облачной информации
Часть машинописного кода CDK:
import * as kms from '@aws-cdk/aws-kms';
...
const keyCondition=new cdk.CfnCondition(this, 'ConditionName', {
expression: cdk.Fn.conditionEquals('value', 'value')
});
// Import KMS key from stack's output
const encryptionKey = kms.Key.fromKeyArn(this, 'keyName', Fn.importValue('output_value'));
encryptionKey.grantEncryptDecrypt(this.mylambda);
const encryptionKeyCfg = encryptionKey.node.defaultChild as kms.CfnKey;
// But encryptionKeyCfg is undefined
encryptionKeyCfg.cfnOptions.condition = keyCondition;
Проблема:
const encryptionKeyCfg = encryptionKey.node.defaultChild as kms.CfnKey;
возвращает undefined
Но, например, тот же код с EventSourceMapping
работает хорошо:
const child = myEventSourceMapping.node.defaultChild as lambda.CfnEventSourceMapping;
child.cfnOptions.condition = keyCondition;
Вопросы:
- Как установить условие на
kms.Key
или kms.CfnKey
(или какой класс использовать)? - Может, в таком сасе стоит использовать другой подход?