moto/tests/test_ssm/test_ssm_cloudformation.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

72 lines
2.1 KiB
Python
Raw Normal View History

import boto3
import json
from moto import mock_ssm, mock_cloudformation
from tests import EXAMPLE_AMI_ID
@mock_ssm
@mock_cloudformation
def test_get_command_invocations_from_stack():
stack_template = {
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Test Stack",
"Resources": {
"EC2Instance1": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": EXAMPLE_AMI_ID,
"KeyName": "test",
"InstanceType": "t2.micro",
"Tags": [
{"Key": "Test Description", "Value": "Test tag"},
{"Key": "Test Name", "Value": "Name tag for tests"},
],
},
}
},
"Outputs": {
"test": {
"Description": "Test Output",
"Value": "Test output value",
"Export": {"Name": "Test value to export"},
},
"PublicIP": {"Value": "Test public ip"},
},
}
cloudformation_client = boto3.client("cloudformation", region_name="us-east-1")
stack_template_str = json.dumps(stack_template)
2021-10-18 19:44:29 +00:00
cloudformation_client.create_stack(
StackName="test_stack",
TemplateBody=stack_template_str,
Capabilities=("CAPABILITY_IAM",),
)
client = boto3.client("ssm", region_name="us-east-1")
ssm_document = "AWS-RunShellScript"
params = {"commands": ["#!/bin/bash\necho 'hello world'"]}
response = client.send_command(
Targets=[
{"Key": "tag:aws:cloudformation:stack-name", "Values": ("test_stack",)}
],
DocumentName=ssm_document,
Parameters=params,
OutputS3Region="us-east-2",
OutputS3BucketName="the-bucket",
OutputS3KeyPrefix="pref",
)
cmd = response["Command"]
cmd_id = cmd["CommandId"]
instance_ids = cmd["InstanceIds"]
2021-10-18 19:44:29 +00:00
client.get_command_invocation(
CommandId=cmd_id, InstanceId=instance_ids[0], PluginName="aws:runShellScript"
)