Код: Выделить всё
aws ssm start-session \
--target "i-xxx" --region "regionEndpoint" --profile "ssm_profile" \
--document-name "AWS-StartPortForwardingSessionToRemoteHost" \
--parameters host="database-xxx.rds.amazonaws.com",portNumber="3306",localPortNumber="3306"
< /code>
Приведенная выше команда установит подключение к порту 3306 удаленного хоста и отображает его с портом 3306 на локальном хосте. См. Подробнее о следующей ссылке:
[list]
[*]https://aws.amazon.com/blogs/mt/use-port-forwarding-in-aws-systems -manager-session-manager-to-connect-to-remote-hosts/
[/list]
Мы пытаемся реализовать одно и то же поведение с помощью программы C# по AWS SDK, однако, следующая примерная программа всегда получает исключения на var response = ssmclient.startsessionAsync (starsessessionRequest) .result; < /code>. < /P>
System.AggregateException: 'One or more errors occurred. (i-xxx is not connected.)'< /code>, с следующими двумя внутренними исключениями: < /p>
[list]
[*]TargetNotConnectedException: i-xxx is not connected.
[/list]
мы новичок в AWS SDK, и мы очень ценим любые подсказки и предложения.
Подробности: < /h3>
sample c# исходный код: < /strong> < /p>
using Amazon;
using Amazon.SimpleSystemsManagement;
using Amazon.SimpleSystemsManagement.Model;
using Amazon.Runtime;
namespace aws_connect_poc
{
public class AWSConnection
{
public static void SshTunnel2(
string accessKey,
string secretKey,
string target,
string databaseHost,
RegionEndpoint regionEndpoint)
{
try
{
// Set AWS credentials manually
var awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
// Create SSM client with credentials and region
using var ssmClient = new AmazonSimpleSystemsManagementClient(awsCredentials, regionEndpoint);
// Create request for SSH tunnel
var startSessionRequest = new StartSessionRequest
{
Target = target, // EC2 instance ID (i-xxxx)
DocumentName = "AWS-StartPortForwardingSessionToRemoteHost",
Parameters = new Dictionary
{
{ "host", new List { databaseHost } }, // RDS host
{ "portNumber", new List { "3306" } }, // Remote MySQL port
{ "localPortNumber", new List { "3306" } } // Local port
}
};
// Start the session
var response = ssmClient.StartSessionAsync(startSessionRequest).Result;
if (!string.IsNullOrEmpty(response.SessionId))
{
Console.WriteLine($"SSH session started successfully: {response.SessionId}");
}
else
{
Console.WriteLine("Failed to start SSH session.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... s-sdk-in-c