Войдите в AWS ECR с помощью Python, вызывая команды Windows PowerShell на удаленном сеансе PSSession. - PullRequest
0 голосов
/ 02 февраля 2019

Следующий код с использованием Docker Python SDK выполняется успешно:

import boto3
import os
import docker
from subprocess import PIPE, Popen

## Get key and secret from System Environment Variables
aws_key = os.getenv("AWS_ACCESS_KEY")
aws_secret = os.getenv("AWS_SECRET_KEY")

ecr_client = boto3.client('ecr', aws_access_key_id = aws_key, aws_secret_access_key = aws_secret)

authToken = ecr_client.get_authorization_token()['authorizationData'][0]['authorizationToken']
ecr_username, ecr_password = base64.b64decode(authToken).decode().split(':')
registry = ecr_client.get_authorization_token()['authorizationData'][0]['proxyEndpoint']

dockerclient = docker.from_env()

dockerclient.login(
    username=ecr_username, 
    password=ecr_password, 
    registry=registry)

и выдает следующий вывод:

{'IdentityToken': '', 'Status': 'Login Succeeded'}

Следующий код также использует AWS Tools для PowerShellработает успешно при запуске непосредственно с компьютера с Windows 10.

awsEcrLoginCmd = """
Set-AWSCredentials -AccessKey {} -SecretKey {};
Invoke-Expression -Command (Get-ECRLoginCommand -Region us-east-1).Command
""".format(aws_key, aws_secret)

process = Popen(['powershell', awsEcrLoginCmd], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()
print(stdout.decode(), stderr.decode())

Однако, когда тот же код запускается с того же компьютера с Windows 10 в удаленном сеансе PowerShell, как показано ниже,

$compName = "remoteName" 
$cred = Get-Credential -UserName "$env:userdomain\$env:username"
$s1 = New-PSSession -ComputerName $compName -Credential $cred
$s1 | Enter-PSSession

я получаю следующий вывод:

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error saving credentials: error storing credentials - 
    err: exit status 1, 
    out: `A specified logon session does not exist. It may already have been terminated.`

Как войти в aws ecr с помощью AWS Tools for PowerShell при запуске с удаленного PSSession?

...