How to execute commands on AWS Instance using Boto3

后端 未结 6 1486
一生所求
一生所求 2021-01-11 12:01

Can anyone tell me if we can execute Shell Commands using Boto3 on Launched AWS instance.

I read at few places about \"boto.manage.cmdshell\" but it is deprecated in

6条回答
  •  佛祖请我去吃肉
    2021-01-11 12:30

    ssm = boto3.client('ssm' )    
    testCommand = ssm.send_command( InstanceIds=[ 'i-123123123123' ], DocumentName='AWS-RunShellScript', Comment='la la la', OutputS3BucketName='myOutputS3Bucket', OutputS3KeyPrefix='i-123123123123', Parameters={ "commands":[ "ip config" ]  } )
    

    i-123123123123 is a pretend ec2 instance id. I put that in the OutputS3KeyPrefix to get a unique place to store logs in the bucket.

    You can install the ssm agent like this;

    ec2r = boto3.resource('ec2' )
    userdata = """#cloud-config
        runcmd:
         - /home/ec2-user/sudo npm run prod
         - cd /tmp
         - curl https://amazon-ssm-%s.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm -o amazon-ssm-agent.rpm
         - yum install -y amazon-ssm-agent.rpm
    """ % region   
    
    if ssm == "on":
        instance = ec2r.create_instances( ImageId=ami, MinCount=1, MaxCount=1, KeyName=keyname, InstanceType=instancetype, 
            NetworkInterfaces=[{
            'DeviceIndex': 0,
            'AssociatePublicIpAddress': False,
            'SubnetId': mySub,
            'Groups': secGroupList,
            'AssociatePublicIpAddress': AssociatePublicIpAddress
        }],
            Monitoring={ 'Enabled': False },
    
            UserData=userdata,
            IamInstanceProfile={
                'Name': rolename
            },
            EbsOptimized=False
        )
    

提交回复
热议问题