我在将 cron 表达式作为参数传递给堆栈时遇到问题。似乎参数的评估结果与预期不同。详情如下:
从 json 文件读取 cron 表达式。
{ "CronSchedule":""cron(0 19 * * * *)""}
我的 cloudformation 堆栈的代码片段。
ScheduledRule: Type: AWS::Events::Rule Properties: Description: ScheduledRule Name: !Sub '${Environment}-${Platform}-${AppName}-${Prefix}-SCHEDULE-CAPTURE' ScheduleExpression: !Sub ${CronSchedule} State: "ENABLED"
AWS 命令执行:
aws --region us-east-1 cloudformation deploy --template-file ./deployment/aws/cfn/cloudwatch-resources.yml --stack-name QA-DUMMYAPP-CLOUD-WATCH --parameter-overrides 所有者=DUMMYAPP AppID=C4E7876D-1BF6-0090-868C-A8E82D4BCBCD BU=DJI AppName=DUMMYAPP Platform=T3 LambdaStackName=QA-DUMMYAPP-LAMBDA ApiGwResourcesStackName=QA-DUMMYAPP-API-GW-RESOURCES CloudWatchStackName=QA-DUMMYAPP-CLOUD-WATCH FeedStateMachineStackName =STACK_NAME 环境=QA CronSchedule="cron(0 19 * * * *)"--no-fail-on-empty-changeset
在AWS控制台上,cronShedule在参数选项卡上显示如下。
CronSchedule = *cron(0 19 配置部署 pom.xml README.md 脚本 src 配置部署 pom.xml README.md 脚本 src 配置部署 pom.xml README.md 脚本 src )
问题似乎是 * 被替换为执行 cloudformation 命令的目录下的目录/文件名。
如有任何帮助,我们将不胜感激。
最佳答案
它对我来说可以像这样传递变量:
CronSchedule="'cron(0 19 * * * *)'"
关于cron - 无法将 CRON 表达式设置为 cloudFormation 堆栈的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63034020/