cdk-ssm-documents icon indicating copy to clipboard operation
cdk-ssm-documents copied to clipboard

Running powershell script already placed in EC2

Open macdrorepo opened this issue 2 years ago • 0 comments

Hello,

Not directly an issue but question on how to properly code that step as in subject. Currently have:

    execute_powershell = ssm_docs.RunPowerShellScriptStep(
        self,
        "execute_delicense_script",
        name="Run delicense script",
        run_command=[
            "C:\\cfn\\deactivate_license.ps1"
            ],
        exit_on_failure=True,
    )

but that's failing with:

RuntimeError: Passed to parameter props of new @cdklabs/cdk-ssm-documents.RunPowerShellScriptStep: Unable to deserialize value as @cdklabs/cdk-ssm-documents.RunPowerShellScriptStepProps ├── 🛑 Failing value is an object │ { '$jsii.struct': [Object] } ╰── 🔍 Failure reason(s): ╰─ Key 'runCommand': Unable to deserialize value as array<@cdklabs/cdk-ssm-documents.IStringVariable> ├── 🛑 Failing value is an array │ [ 'C:\cfn\deactivate_license.ps1' ] ╰── 🔍 Failure reason(s): ╰─ Index 0: Unable to deserialize value as @cdklabs/cdk-ssm-documents.IStringVariable ├── 🛑 Failing value is a string │ 'C:\cfn\deactivate_license.ps1' ╰── 🔍 Failure reason(s): ╰─ Value does not have the "$jsii.byref" key

Also did try with this:

    execute_powershell = ssm_docs.RunPowerShellScriptStep(
        self,
        "execute_delicense_script",
        name="Run delicense script",
        run_command=[ssm_docs.StringVariable(reference="C:\\cfn\\deactivate_license.ps1")],
        exit_on_failure=True,
    )

but that's failing during deployment: Resource handler returned message: "Invalid request provided: StepName: Run delicense script is invalid. at Line: 24, Column: 1

Whole script is:

    automation_document = ssm_docs.AutomationDocument(
        self,
        "delicense_adobe_servers",
        document_format=ssm_docs.DocumentFormat.YAML,
        document_name=f"{asg_name}-runbook",
        description="Delicense Adobe renderer servers",
        update_method="NewVersion",
        doc_inputs=[
            ssm_docs.Input.of_type_string(
                "ASGName", default_value=asg_name, description="(Required) Name of autoscaling group"
            ),
            ssm_docs.Input.of_type_string(
                "AutomationAssumeRole",
                description="(Required) The ARN of the role that allows automation to perform the actions on your behalf.",
            ),
            ssm_docs.Input.of_type_string("LCHName"),
            ssm_docs.Input.of_type_string("InstanceId"),
        ],
    )
    execute_powershell = ssm_docs.RunPowerShellScriptStep(
        self,
        "execute_delicense_script",
        name="Run delicense script",
        run_command=[ssm_docs.StringVariable(reference="C:\\cfn\\deactivate_license.ps1")],
        exit_on_failure=True,
    )
    terminate_instance = ssm_docs.AwsApiStep(
        self,
        "send_call_to_terminate_ec2",
        name="TerminateTheInstance",
        service=ssm_docs.AwsService.AUTO_SCALING,
        api_params={
            # pylint: disable=W1309
            "LifecycleHookName": f"{{{{ 'LCHName' }}}}",
            # pylint: disable=W1309
            "InstanceId": f"{{{{ 'InstanceId' }}}}",
            # pylint: disable=W1309
            "AutoScalingGroupName": f"{{{{ 'ASGName' }}}}",
            # "Api": "CompleteLifecycleAction",
            "LifecycleActionResult": "CONTINUE",
        },
        pascal_case_api="CompleteLifecycleAction",
        outputs=[],
        is_end=True,
    )

Help please :)

macdrorepo avatar Aug 09 '23 09:08 macdrorepo