私はEC2とbotoの初心者です。apt-get update
EC2 実行中のインスタンスがあり、botoなどを使用してシェル コマンドを実行したいと考えています。
いろいろ検索した結果、 run_instancesuser_data
コマンドを使用して解決策を見つけましたが、インスタンスが既に起動されている場合はどうなりますか?
それが可能かどうかさえわかりません。このリファレンスの手がかりは大きな助けになります。
私はEC2とbotoの初心者です。apt-get update
EC2 実行中のインスタンスがあり、botoなどを使用してシェル コマンドを実行したいと考えています。
いろいろ検索した結果、 run_instancesuser_data
コマンドを使用して解決策を見つけましたが、インスタンスが既に起動されている場合はどうなりますか?
それが可能かどうかさえわかりません。このリファレンスの手がかりは大きな助けになります。
これを行うには、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/ )を確認することもできます。
ご要望に応じて布を使用できると思います。生地のラッパーを一度確認してください。ファブリック ライブラリを介して、リモート サーバー シェルでコマンドを実行できます。
使い方はとても簡単で、 boto と fabric の両方を統合できます。一緒に彼らは華麗に働きます。
さらに、同じコマンドを n 個のノードに対して実行できます。あなたの要件になると思います
ただそれをチェックしてください。
はい、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/