AWS Cli命令在本地系统中运行良好,但在Jenkins中不工作

ac1kyiln  于 2023-03-01  发布在  Jenkins
关注(0)|答案(1)|浏览(244)

我正在使用这个命令来创建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"]}"}
x6yk4ghg

x6yk4ghg1#

将--target value中的双引号改为单引号,并删除转义的双引号,如下所示:

--target '{"Arn": "arn:aws:scheduler:::aws-sdk:ec2:stopInstances", "RoleArn": "arn:aws:iam::9668xxxxxxxx:role/service-role/Amazon_EventBridge_Invoke_Action_On_EC2_Instance_2111992150", "Input": {"InstanceIds": ["i-0ad766a46xxxxxxxx"]}}'

应该可以的

相关问题