복붙노트

[PYTHON] Boto ec2 인스턴스에서 셸 명령을 실행합니다.

PYTHON

Boto ec2 인스턴스에서 셸 명령을 실행합니다.

나는 EC2와 boto에 초보자이다. 인스턴스를 실행하는 EC2가 있고 예를 들어 쉘 명령을 실행하고 싶습니다. apt-boto를 통해 업데이트하십시오.

run_instances 명령에서 user_data를 사용하여 솔루션을 많이 찾았습니다.하지만 인스턴스가 이미 시작된 경우에는 어떻게해야합니까?

나는 그것이 가능한지조차 모른다. 이 참조에 대한 단서는 큰 도움이 될 것입니다.

해결법

  1. ==============================

    1.boto.manage.cmdshell 모듈을 사용하여이를 수행 할 수 있습니다. 이를 사용하려면 paramiko 패키지가 설치되어 있어야합니다. 간단한 사용 예 :

    boto.manage.cmdshell 모듈을 사용하여이를 수행 할 수 있습니다. 이를 사용하려면 paramiko 패키지가 설치되어 있어야합니다. 간단한 사용 예 :

    import boto.ec2
    from boto.manage.cmdshell import sshclient_from_instance
    
    # Connect to your region of choice
    conn = boto.ec2.connect_to_region('us-west-2')
    
    # Find the instance object related to my instanceId
    instance = conn.get_all_instances(['i-12345678'])[0].instances[0]
    
    # Create an SSH client for our instance
    #    key_path is the path to the SSH private key associated with instance
    #    user_name is the user to login as on the instance (e.g. ubuntu, ec2-user, etc.)
    ssh_client = sshclient_from_instance(instance,
                                         '<path to SSH keyfile>',
                                         user_name='ec2-user')
    # Run the command. Returns a tuple consisting of:
    #    The integer status of the command
    #    A string containing the output of the command
    #    A string containing the stderr output of the command
    status, stdout, stderr = ssh_client.run('ls -al')
    

    그것은 기억에서 타자를 친다 그러나 나는 그것이 정확하다고 생각한다.

    유사한 기능을 가진 Fabric (http://docs.fabfile.org/)을 체크 아웃 할 수도 있지만 훨씬 더 정교한 기능과 기능이 있습니다.

  2. ==============================

    2.나는 당신이 당신의 필요 조건을 위해 직물을 사용할 수 있다고 생각한다. 패브릭 래퍼를 한 번 확인하십시오. 패브릭 라이브러리를 통해 원격 서버 셸에서 명령을 실행할 수 있습니다.

    나는 당신이 당신의 필요 조건을 위해 직물을 사용할 수 있다고 생각한다. 패브릭 래퍼를 한 번 확인하십시오. 패브릭 라이브러리를 통해 원격 서버 셸에서 명령을 실행할 수 있습니다.

    그것은 매우 사용하기 쉽고 boto와 fabric을 모두 통합 할 수 있습니다. 함께 그들은 훌륭하게 작동합니다.

    또한 n 개의 노드에 동일한 명령을 실행할 수 있습니다. 내가 믿는 것은 당신의 요구 사항 일 수 있습니다.

    그냥 확인해 봐.

  3. ==============================

    3.예, AWS 시스템 관리자와 함께이 작업을 수행 할 수 있습니다. AWS Systems Manager Run Command를 사용하면 EC2 및 온 프레미스 서버에서 일련의 명령을 원격으로 안전하게 실행할 수 있습니다. 아래는이를 달성하기위한 고급 단계입니다.

    예, AWS 시스템 관리자와 함께이 작업을 수행 할 수 있습니다. AWS Systems Manager Run Command를 사용하면 EC2 및 온 프레미스 서버에서 일련의 명령을 원격으로 안전하게 실행할 수 있습니다. 아래는이를 달성하기위한 고급 단계입니다.

    인스턴스 IAM 역할 부착 : ec2 인스턴스에는 정책 AmazonSSMFullAccess가있는 IAM 역할이 있어야합니다. 이 역할은 인스턴스가 Systems Manager API와 통신 할 수있게합니다.

    SSM 에이전트 설치 : EC2 인스턴스에는 SSM 에이전트가 설치되어 있어야합니다. SSM 에이전트는 실행 명령을 처리하고 명령별로 인스턴스를 요청 및 구성합니다.

    명령 실행 : AWS CLI를 통한 예제 사용 :

    다음 명령을 실행하여 인스턴스에서 실행중인 서비스를 검색합니다. 인스턴스 ID를 ec2 인스턴스 ID로 바꿉니다.

    aws ssm send-command --document-name "AWS-RunShellScript" --comment "listing services" --instance-ids "Instance-ID" --parameters commands="service --status-all" --region us-west-2 --output text
    

    자세한 정보 : https://www.justdocloud.com/2018/04/01/run-commands-remotely-ec2-instances/

  4. from https://stackoverflow.com/questions/15501845/boto-execute-shell-command-on-ec2-instance by cc-by-sa and MIT license