首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用session-manager-plugin命令

如何使用session-manager-plugin命令
EN

Stack Overflow用户
提问于 2021-02-16 18:30:33
回答 2查看 331关注 0票数 1

我想在python代码中使用会话管理器插件。

代码的编写方式如下

代码语言:javascript
复制
import boto3
from boto3.session import Session
import subprocess

AWS_REGION = "ap-northeast-1"
AWS_PROFILE = "default"
INSTANCE_ID = "i-XXXXX"

ssm = boto3.client('ssm')

response = ssm.start_session(
    Target=INSTANCE_ID,
    DocumentName='AWS-StartPortForwardingSession',
    Parameters={
        'portNumber': ['3389'],
        'localPortNumber': ['13389'],
    }
)

parameters = "{'DocumentName': 'AWS-StartPortForwardingSession', 'Target': "+INSTANCE_ID+", 'Parameters': {'portNumber': ['3389'], 'localPortNumber': ['13389']}}"

def start_aws_ssm_plugin(create_session_response, parameters, profile, region):
    arg0 = '"' + 'session-manager-plugin' + '"'
    arg1 = '"' + str(create_session_response).replace('\'', '\\"') + '"'
    arg2 = region
    arg3 = 'StartSession'
    arg4 = profile
    arg5 = '"' + str(parameters).replace('\'', '\\"') + '"'
    arg6 = 'https://ssm.{region}.amazonaws.com'.format(region=region)

    command = arg0 + ' ' + arg1 + ' ' + arg2 + ' ' + arg3 + ' ' + arg4 + ' ' + arg5 + ' ' + arg6

    pid = subprocess.Popen(command).pid
    return pid

start_aws_ssm_plugin(response, parameters, AWS_PROFILE, AWS_REGION)

但是,代码得到一个错误。

代码语言:javascript
复制
panic: interface conversion: interface {} is nil, not string

goroutine 1 [running]:
github.com/aws/SSMCLI/src/sessionmanagerplugin/session.ValidateInputAndStartSession(0xc00010c000, 0x7, 0x8, 0x14c2380, 0xc000006018)

我编写的代码引用了"https://stackoverflow.com/questions/65963897/how-do-i-use-the-results-of-an-ssm-port-forwarding-session-started-with-ruby/66043222#66043222

如果你有任何信息,请让我知道。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2021-06-03 11:54:45

据我所知,您需要调用start-session端点来获取streamurl、sessionid和token。然后调用session-manager-plugin转发tty。

https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartSession.html

票数 0
EN

Stack Overflow用户

发布于 2021-12-11 00:10:39

您似乎搞错了两个json arg字符串的引用。这在Windows10上有效:

代码语言:javascript
复制
import boto3
ssm = boto3.client('ssm')
instance_id = "i-XXXXX"
ssm_response = ssm.start_session(
    Target=instance_id,
    DocumentName='AWS-StartPortForwardingSession',
    Parameters={"portNumber": ["8080"], "localPortNumber": ["9999"]}
)
cmd = [
    'C:/Program Files/Amazon/SessionManagerPlugin/bin/session-manager-plugin.exe',
    json.dumps(ssm_response),
    'eu-central-1',  # client region
    'StartSession',
    'default',  # profile name from aws credentials/config files
    json.dumps(dict(Target=instance_id)),
    'https://ssm.eu-central-1.amazonaws.com'  # endpoint for ssm service

]
subprocess.run(cmd)

https://github.com/aws/session-manager-plugin/blob/mainline/src/sessionmanagerplugin/session/session.go很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66222667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档