我正在尝试通过AWS CDK创建预算。
这是代码,它们是通过参考官方文档和执行类似操作的TypeScript解决方案拼凑而成的。
email = '[email protected]'
value = 90.0
subscription = sns_sub.EmailSubscription(email)
topic = sns.Topic(self, id='notification_topic', display_name='budget notifications',
topic_name='budget_notifications')
topic.add_subscription(subscription)
budget_data_props = aws_budgets.CfnBudget.BudgetDataProperty(budget_type='COST', time_unit='MONTHLY',
budget_name='CDK budget',
budget_limit=aws_budgets.CfnBudget.SpendProperty(amount=value, unit='USD'))
np = aws_budgets.CfnBudget.NotificationProperty(comparison_operator='GREATER_THAN',
notification_type='FORECASTED', threshold=90.0,
threshold_type='PERCENTAGE')
sub = aws_budgets.CfnBudget.SubscriberProperty(address=topic.topic_arn, subscription_type='SNS')
nws = aws_budgets.CfnBudget.NotificationWithSubscribersProperty(notification=np, subscribers=[sub])
budget_props = aws_budgets.CfnBudgetProps(budget=budget_data_props, notifications_with_subscribers=nws)
budget = aws_budgets.CfnBudget(self, 'cdk budget', budget=budget_props)
我得到的错误是:
错误:
值与联合中的任何类型均不匹配:连线结构类型'@ aws-cdk / aws-budgets.CfnBudgetProps'与预期的'@ aws-cdk / aws-budgets.CfnBudget.BudgetDataProperty'不匹配,预期的对象引用为{“ $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudgetProps“,” data“:{” budget“:{” $ jsii.struct“:{” fqn“:” @ aws- cdk / aws-budgets.CfnBudget.BudgetDataProperty“,” data“:{” budgetType“:” COST“,” timeUnit“:” MONTHLY“,” budgetLimit“:{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.SpendProperty“,” data“:{” amount“:10,” unit“:” USD“}}},” budgetName“:” CDK budget“,” costFilters“:null ,“ costTypes”:空,“planningBudgetLimits“:null,” timePeriod“:null}}},” notificationsWithSubscribers“:{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.NotificationWithSubscribersProperty“,” data“: {“ notification”:{“ $ jsii.struct”:{“ fqn”:“ @ aws-cdk / aws-budgets.CfnBudget.NotificationProperty”,“ data”:{“ comparisonOperator”:“ GREATER_THAN”,“ notificationType”: “ FORECASTED”,“ threshold”:90,“ thresholdType”:“ PERCENTAGE”}}},“ subscribers”:[{“ $ jsii.struct”:{“ fqn”:“ @ aws-cdk / aws-budgets.CfnBudget .SubscriberProperty“,” data“:{” address“:” $ {Token [TOKEN.56]}“”,“ subscriptionType”:“ SNS”}}}}}}}}}}“ timePeriod”:null}}},“ notificationsWithSubscribers”:{“ $ jsii.struct”:{“ fqn”:“ @ aws-cdk / aws-budgets.CfnBudget.NotificationWithSubscribersProperty”,“ data”:{“ notification”: {“ $ jsii.struct”:{“ fqn”:“ @ aws-cdk / aws-budgets.CfnBudget.NotificationProperty”,“ data”:{“ comparisonOperator”:“ GREATER_THAN”,“ notificationType”:“ FORECASTED”,“阈值“:90,” thresholdType“:” PERCENTAGE“}}},”用户“:[{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.SubscriberProperty“,” data“:{” address“:” $ {Token [TOKEN.56]}“,” subscriptionType“:” SNS“}}}]}}}}}}}“ timePeriod”:null}}},“ notificationsWithSubscribers”:{“ $ jsii.struct”:{“ fqn”:“ @ aws-cdk / aws-budgets.CfnBudget.NotificationWithSubscribersProperty”,“ data”:{“ notification”: {“ $ jsii.struct”:{“ fqn”:“ @ aws-cdk / aws-budgets.CfnBudget.NotificationProperty”,“ data”:{“ comparisonOperator”:“ GREATER_THAN”,“ notificationType”:“ FORECASTED”,“阈值“:90,” thresholdType“:” PERCENTAGE“}}},”用户“:[{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.SubscriberProperty“,” data“:{” address“:” $ {Token [TOKEN.56]}“,” subscriptionType“:” SNS“}}}]}}}}}}}notificationsWithSubscribers“:{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.NotificationWithSubscribersProperty“,” data“:{” notification“:{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.NotificationProperty“,” data“:{” comparisonOperator“:” GREATER_THAN“,” notificationType“:” FORECASTED“,” threshold“:90,” thresholdType“:” PERCENTAGE“}}},” subscribers“:[{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.SubscriberProperty“,” data“:{” address“:” $ {Token [TOKEN.56]}“,” subscriptionType“:” SNS“}}}}}}}}}}notificationsWithSubscribers“:{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.NotificationWithSubscribersProperty“,” data“:{” notification“:{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.NotificationProperty“,” data“:{” comparisonOperator“:” GREATER_THAN“,” notificationType“:” FORECASTED“,” threshold“:90,” thresholdType“:” PERCENTAGE“}}},” subscribers“:[{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.SubscriberProperty“,” data“:{” address“:” $ {Token [TOKEN.56]}“,” subscriptionType“:” SNS“}}}}}}}}}}NotificationWithSubscribersProperty“,” data“:{” notification“:{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.NotificationProperty“,” data“:{” comparisonOperator“:” GREATER_THAN“,” notificationType“:” FORECASTED“,” threshold“:90,” thresholdType“:” PERCENTAGE“}}}},” subscribers“:[{” $ jsii.struct“:{” fqn“:” @ aws- cdk / aws-budgets.CfnBudget.SubscriberProperty“,” data“:{” address“:” $ {Token [TOKEN.56]}“,” subscriptionType“:” SNS“}}}}}}}}}}}}}NotificationWithSubscribersProperty“,” data“:{” notification“:{” $ jsii.struct“:{” fqn“:” @ aws-cdk / aws-budgets.CfnBudget.NotificationProperty“,” data“:{” comparisonOperator“:” GREATER_THAN“,” notificationType“:” FORECASTED“,” threshold“:90,” thresholdType“:” PERCENTAGE“}}}},” subscribers“:[{” $ jsii.struct“:{” fqn“:” @ aws- cdk / aws-budgets.CfnBudget.SubscriberProperty“,” data“:{” address“:” $ {Token [TOKEN.56]}“,” subscriptionType“:” SNS“}}}}}}}}}}}}}comparisonOperator“:” GREATER_THAN“,” notificationType“:” FORECASTED“,” threshold“:90,” thresholdType“:” PERCENTAGE“}}},” subscribers“:[{” $ jsii.struct“:{” fqn“: “ @ aws-cdk / aws-budgets.CfnBudget.SubscriberProperty”,“ data”:{“ address”:“ $ {Token [TOKEN.56]}”,“ subscriptionType”:“ SNS”}}}}}}}}} }}}comparisonOperator“:” GREATER_THAN“,” notificationType“:” FORECASTED“,” threshold“:90,” thresholdType“:” PERCENTAGE“}}},” subscribers“:[{” $ jsii.struct“:{” fqn“: “ @ aws-cdk / aws-budgets.CfnBudget.SubscriberProperty”,“ data”:{“ address”:“ $ {Token [TOKEN.56]}”,“ subscriptionType”:“ SNS”}}}}}}}}} }}}}}}}}}}}}}}}}}}}}}
我使用的是带有类型提示的IDE,所以我对这似乎是类型不匹配的情况感到困惑。
感谢您的阅读和见解。
使用python并创建一个Construct时,有两个传递prop的选项。直接使用Props对象或将Props对象的参数用作键/值对。您正在混合这两种方法。由于您正在创建道具对象,因此应直接传递它
budget = aws_budgets.CfnBudget(self, 'cdk budget', budget_props)
您也可以通过这种方式代替创建Props对象
budget = aws_budgets.CfnBudget(
self, 'cdk budget',
budget=budget_data_props,
notifications_with_subscribers=nws
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句