1

Python コードで session-manager-plugin を使用したい。

コードは次のように記述します

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)

しかし、コードはエラーになります。

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"

情報をお持ちの方はお知らせください。

ありがとうございました

4

2 に答える 2