Я нашел, что я должен использовать для ГГГГГГГГГГГГ.
Что происходит? Оказывается, что типы некоторых значений не обязательно должны быть скалярами (string
, number
, ...), но могут быть IResolvable
, что позволяет CDK оценивать их во время синтеза. Например, вот объявление DataFormatConversionConfigurationProperty
в node_modules/@aws-cdk/aws-kinesisfirehose/lib/kinesisfirehose.generated.d.ts
:
export declare namespace CfnDeliveryStream {
interface DataFormatConversionConfigurationProperty {
readonly enabled: boolean | cdk.IResolvable;
readonly inputFormatConfiguration: CfnDeliveryStream.InputFormatConfigurationProperty | cdk.IResolvable;
readonly outputFormatConfiguration: CfnDeliveryStream.OutputFormatConfigurationProperty | cdk.IResolvable;
readonly schemaConfiguration: CfnDeliveryStream.SchemaConfigurationProperty | cdk.IResolvable;
}
}
Это означает, что мы можем использовать следующее для атрибута enabled
const cfnParam = new CfnParameter(this, "EnableFirehoseDataFormatConversion", {
type: "String"
});
const cfnCondition = new CfnCondition(this, "FirehoseDataFormatConversionEnabled", {
expression: Fn.conditionEquals(cfnParam.valueAsString, "true"),
});
const enabledOrNot: IResolvable = Fn.conditionIf(cfnCondition.logicalId, true, false);
new kinesisf.CfnDeliveryStream(this, "MyFirehose", {
// https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html
extendedS3DestinationConfiguration: {
bucketArn: dataBucket.bucketArn,
bufferingHints: {
intervalInSeconds: XXXXXXXXXXXXXX,
sizeInMBs: 128,
},
compressionFormat: "UNCOMPRESSED",
dataFormatConversionConfiguration: {
enabled: enabledOrNot
},
roleArn: myRole.roleArn,
prefix: dataStoragePrefixInS3,
errorOutputPrefix: errorStoragePrefixInS3,
}
});
Этот подход не работает для XXXXXXXXXXXXXX, потому что тип intervalInSeconds
является number
, а не number | IResolvable
. Однако тип bufferingHints
равен IResolvable
, поэтому вы должны иметь возможность указать всю структуру. Я пока не знаю, как создать экземпляр IResolvable
, который бы возвращал структуру.