我有以下问题,我不能添加依赖于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
添加到CustomResource
的properties
参数中,将导致创建依赖关系。
cdk.CustomResource(
...,
{
properties: {'tablearn': cfnRawTable.attrArn}
},
)
或者,你可以声明一个依赖,而不需要使用.node.addDependency
insertionLambda.node.addDependency(CfnRawTable)
我认为你应该反过来做:
insertionLambda.addDependsOn (cfnRawTable);