12

私はEC2とbotoの初心者です。apt-get updateEC2 実行中のインスタンスがあり、botoなどを使用してシェル コマンドを実行したいと考えています。

いろいろ検索した結果、 run_instancesuser_dataコマンドを使用して解決策を見つけましたが、インスタンスが既に起動されている場合はどうなりますか?

それが可能かどうかさえわかりません。このリファレンスの手がかりは大きな助けになります。

4

4 に答える 4

21

これを行うには、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/ )を確認することもできます。

于 2013-03-19T15:42:15.137 に答える
3

ご要望に応じて布を使用できると思います。生地のラッパーを一度確認してください。ファブリック ライブラリを介して、リモート サーバー シェルでコマンドを実行できます。

使い方はとても簡単で、 boto と fabric の両方を統合できます。一緒に彼らは華麗に働きます。

さらに、同じコマンドを n 個のノードに対して実行できます。あなたの要件になると思います

ただそれをチェックしてください。

于 2013-03-21T18:31:56.443 に答える
1

はい、AWS Systems Manager でこれを行うことができます。AWS Systems Manager Run Command を使用すると、EC2 およびオンプレミス サーバーで一連のコマンドをリモートかつ安全に実行できます。以下は、これを実現するための大まかな手順です。

インスタンス IAM ロールのアタッチ: ec2 インスタンスには、ポリシー AmazonSSMFullAccess を持つ IAM ロールが必要です。このロールにより、インスタンスは Systems Manager API と通信できるようになります。

SSM エージェントのインストール: EC2 インスタンスには、SSM エージェントがインストールされている必要があります。SSM エージェントは、実行コマンド リクエストを処理し、コマンドに従ってインスタンスを設定します。

Execute command : 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/

于 2018-09-28T08:26:19.823 に答える