我正在使用这个命令来创建AWS Eventbridge调度程序。当我在本地运行它时,它工作正常,但是在jenkins中它不工作。
aws计划程序创建计划-名称SendEmailOnce-计划表达式"在(2022 - 11 - 01T11:00:00)"-灵活时间窗口"{"模式":"OFF "}"-目标'{" Arn ":"参数:aws:调度程序:::aws-sdk:ec2:停止示例","角色参数":"arn:aws:iam::96685xxxxxxx:角色/服务角色/亚马逊事件桥调用动作开启EC2示例2111992150","输入":"{"示例ID":["i-0ad766a46xxxxxx"]}"}'
我使用以下命令创建AWS事件桥调度程序:* * aws调度程序创建-调度-名称SendEmailOnce-调度表达式"在(2022 - 11 - 01T11:00:00)"-灵活时间窗口"{"模式":"OFF "}"-目标'{" Arn ":"参数:aws:调度程序:::aws-sdk:ec2:停止示例","角色参数":"arn:aws:iam::96685xxxxxx:角色/服务角色/亚马逊事件桥调用动作开启EC2示例2111","输入":"{"示例ID":["i-0ad766a469xxxxxxx"]}"}"**
上面写的命令在本地机器上运行良好,但在jenkins中却不行。
- Jenkinsfile:**管道{代理任意
stages {
stage('Build') {
steps {
sh"""
aws sts get-caller-identity
aws scheduler create-schedule --name ${name} \
--schedule-expression "at(2022-11-01T11:00:00)" \
--flexible-time-window '{ "Mode": "OFF" }' \
--target "{"Arn": "arn:aws:scheduler:::aws-sdk:ec2:stopInstances", "RoleArn": "arn:aws:iam::966858xxxxx:role/service-role/Amazon_EventBridge_Invoke_Action_On_EC2_Instance_2111992150", "Input": "{\"InstanceIds\": [\"i-0ad766a46xxxxxx\"]}"}"
"""
}
}
}
}
- 错误:**分析参数"--target"时出错:无效的JSON:需要','分隔符:第1行第188列(字符187)JSON已接收:{"配置文件":"配置文件:aws:调度程序:::aws-sdk:ec2:停止示例","角色配置文件":"arn:aws:iam::9668xxxxxxxx:角色/服务角色/亚马逊事件桥调用动作开启EC2示例2111992150","输入":"{"示例ID":["i-0ad766a46xxxxxxxx"]}"}
1条答案
按热度按时间x6yk4ghg1#
将--target value中的双引号改为单引号,并删除转义的双引号,如下所示:
应该可以的