Как установить условие для ключа KMS с помощью CDK (машинописный текст)? - PullRequest
0 голосов
/ 07 августа 2020

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;

Вопросы:

  1. Как установить условие на kms.Key или kms.CfnKey (или какой класс использовать)?
  2. Может, в таком сасе стоит использовать другой подход?
...