【发布时间】:2021-11-21 00:33:45
【问题描述】:
我是这里的 powershell 新手。我不知道为什么在成功安装 AWS CLI 后,我会间歇性地返回 aws command not Recognized 错误。我进入睡眠状态,认为一些环境变量可能会在后台设置。需要帮助弄清楚我需要在这里做什么才能成功执行 $putItem 命令。
我按照这里的说明https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html
请注意:整个过程必须自动化,因此我无法手动登录主机并修复某些问题,因为同一脚本必须在 100 多个主机上运行
Write-Output "Checking if AWS CLI support exists..."
cmd.exe /c "aws --version"
if ($LASTEXITCODE -eq 0){
Write-Output "AWS CLI installed already"
} else {
Write-Output "Installing AWS CLI V2"
cmd.exe /c "msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /qn"
if ($LASTEXITCODE -eq 0){
Write-Output "AWS CLI installed successfully"
Start-Sleep -s 5
} else {
Write-Output "Could not install AWS CLI"
exit 1
}
}
$putItem = 'aws dynamodb put-item --table-name ' + $instanceStatusDDBTable + ' --item "{\"HostName\" : {\"S\" : \"' + $instanceName + '\"}, \"Modules\" : {\"M\" : {}}, \"DAGName\" : {\"S\" : \"' + $dagName +'\"}}"'
Write-Output "Executing DB put item query $putItem"
cmd.exe /c $putItem
if ($LASTEXITCODE -eq 0){
Write-Output "Created entry for $instanceName in $instanceStatusDDBTable DDB table"
} else {
Write-Output "Could not complete put Item operation for $instanceName"
exit 1
}
这是输出
Checking if AWS CLI support exists...
Installing AWS CLI V2
AWS CLI installed successfully
Executing DB put item query aws dynamodb put-item --table-name Ex2019-HostStatusTable --item "{\"HostName\" : {\"S\" : \"Host1\"}, \"Modules\" : {\"M\" : {}}, \"DAGName\" : {\"S\" : \"USW-D01\"}}"
Could not complete put Item operation for Host1
错误输出 -
'aws' is not recognized as an internal or external command,
operable program or batch file.
【问题讨论】:
-
这里有很多话要说。首先,您可以通过 Get-Command cmdlet 检查是否安装了 aws。那么,为什么要通过 cmd.exe 调用 aws CLI?您可以直接在 PowerShell 中执行此操作。另外,为什么不安装 AWS PowerShell 模块呢?最后,您在运行脚本时使用哪些 AWS 凭证?
-
AWS Dynamo DB 设置/查询数据 API 不适用于 Powershell github.com/aws/aws-tools-for-powershell/issues/41 因此,使用 cmd.exe。我使用 SSM 托管实例,此脚本在 SSM 自动化文档中作为运行命令执行
标签: amazon-web-services powershell cmd