0

ecsタスク(ec2)でdjangoコマンド($python manage.py foo)を実行したい。本番サーバーなのでsshは使いたくない。AWS Systems Manager Run Command または Session manager を使用したいと考えていました。

以下のページを例に Dockerfile に install コマンドを追加しました。 ( https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-linux.html )

Python 3.6 イメージであるため、私の docker イメージは debian です。

ただ、アクティベーションコードが必要とのことでssmの設定方法をcfnで確認したところ、アクティベーションの項目がありませんでした。( https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SSM.html )

マネージャーを手動で作成してアクティベーション コードを生成しようと思ったのですが、30 分後にコードのデフォルト設定が期限切れになっていることがわかりました。この場合、docker build を行うたびにアクティベーション コードを生成する必要があります。

私はこのように操作を設計しようとしています。

  1. SSM と ssh 以外の ecs タスク (Docker イメージ) でシェル コマンドを実行できますか?

  2. cfnでssmを生成し、Refなどでアクティベーションコードを取得できますか?

  3. アクティベーション コードの期間を無期限または不要にする方法はありますか?

  4. Docker イメージによって作成された ecs の ec2 インスタンスをマネージャーに表示することはできますか? ありがとうございました

4

1 に答える 1

2

aws system manager - session manager をご覧ください。インスタンスでポートを開くことなく、Web コンソールまたは cli で任意のインスタンスに接続できます。アクセスは IAM によって制御されます。 https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html

Docker コンテナーに直接接続する場合は、セッション マネージャーからオンプレミス ソリューションを利用できます。 https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html

ssh 経由で ec2 インスタンスに接続する場合は、ssh(22) ポートを開く必要なく、セッション マネージャーでも接続できます。https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html

また、ターゲット インスタンスへの接続確立中に、公開 ssh キーをターゲット インスタンスに一時的に追加するきちんとした SSH ProxyCommand スクリプトも作成しました。

AWS SSM SSH ProxyComand -> https://gist.github.com/qoomon/fcf2c85194c55aee34b78ddcaa9e83a1

于 2019-08-25T06:06:16.110 に答える