添加对自定义资源cdk的依赖



我有以下问题,我不能添加依赖于cfnResource的CustomResource

const cfnRawTable = new timestream.CfnTable(this, 'MyCfnTableRaw', {
databaseName: dbName,
// the properties below are optional
magneticStoreWriteProperties: {
enableMagneticStoreWrites: true,
},
retentionProperties: {
magneticStoreRetentionPeriodInDays: '1825',
memoryStoreRetentionPeriodInHours: '8640',
},
tableName: rawtable,
})
let insertionLambda = new cdk.CustomResource(this, 'insertionlambda', {
serviceToken:
'arn:aws:lambda:' +
cdk.Fn.ref('region') +
'738234497474:function:timestreaminsertion-' +
cdk.Fn.ref('env'),
})
cfnRawTable.addDependsOn(insertionLambda)
我得到错误Argument of type 'CustomResource' is not assignable to parameter of type 'CfnResource'

使用CDK的Construct依赖项:

cfnRawTable.node.addDependency(insertionLambda);

addDependsOn是一个低级CloudFormation特性,仅在L1 CloudFormation资源中可用。高级.node.addDependency可用于所有构造。

在这种情况下,从命名来看,插入lambda取决于表,而不是相反,就像@Martin Muller指出的那样。你仍然可以使用上面的,只是把它们调换一下。这个猜测可能完全不正确,当然,可能您的lambda没有插入到这个特定的表中。

如果您从另一个资源中引用任何资源,它将自动添加依赖项。

作为一个例子,将cfnRawTable.attrArn添加到CustomResourceproperties参数中,将导致创建依赖关系。

cdk.CustomResource(
..., 
{
properties: {'tablearn': cfnRawTable.attrArn}
},
)

或者,你可以声明一个依赖,而不需要使用.node.addDependency

做任何引用。
insertionLambda.node.addDependency(CfnRawTable)

我认为你应该反过来做:

insertionLambda.addDependsOn (cfnRawTable);

最新更新