我正在尝试从返回的对象中检索instanceid,公共DNS名称和"Name"标记get-ec2instance.
$instances = foreach($i in (get-ec2instance)) '
{ $i.RunningInstance | Select-Object InstanceId, PublicDnsName, Tag }
Run Code Online (Sandbox Code Playgroud)
这是输出:
InstanceId PublicDnsName Tag
---------- ------------- ---
myInstanceIdHere myPublicDnsName {Name}
... ... {Name}
Run Code Online (Sandbox Code Playgroud)
我希望能够{Name}使用上面的代码行访问并在此输出中打印其值.自最初发布以来,我做了一些研究,发现......
PS C:\Users\aneace\Documents> $instances[0].Tag.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True List`1 System.Object
Run Code Online (Sandbox Code Playgroud)
在这个和AWS文档之间,我认为Tag引用了这个列表,但我不确定.我可以访问一个通过调用打印键和值列的表$instances[0].Tag,但我现在的问题是我希望它Value是我的第一个表而不是{Name}对象的输出.有什么建议?
我一直在尝试使用以下脚本,但没有成功:
$Ami=Get-EC2ImageByName WINDOWS_2012_BASE
New-EC2Instance -ImageId $Ami[0].ImageId -MinCount 1 -MaxCount 1 -KeyName uckey -InstanceType `
t1.micro -SubnetId subnet-56738b33 -AssociatePublicIp $true
Run Code Online (Sandbox Code Playgroud)
错误是:
New-EC2Instance : Object reference not set to an instance of an object.
At line:1 char:1
+ New-EC2Instance -ImageId $Ami[0].ImageId -MinCount 1 -MaxCount 1 -KeyName uckey ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Amazon.PowerShe...2InstanceCmdlet:NewEC2InstanceCmdlet)
[New-EC2Instance], InvalidOperationException
+ FullyQualifiedErrorId : System.NullReferenceException,Amazon.PowerShell.Cmdlets.EC2.NewEC2InstanceC
mdlet
Run Code Online (Sandbox Code Playgroud)
问题在于-AssociatePublicIp没有它的参数,脚本可以工作。
谢谢阅读
如何使用 PowerShell 在 S3 存储桶之间复制大于 5GB 的文件?
有几个使用 PowerShell 在 AWS S3 存储桶之间复制文件的示例,但它们使用 Copy-S3Object 命令,该命令仅限于小于 5GB 的文件。
有没有办法使用aws cli获取最新的Windows 2012R2基础AMI ID?
类似Get-EC2ImageByName -Names WINDOWS_2012R2_BASEPowershell的东西.我想在Linux中使用它.
我尝试过使用AMI id,
aws ec2 describe-images --owners amazon --filters "Name=name,Values=Windows_Server-2012-R2_RTM-English-64Bit-Base-*"但感觉就像是黑客.在Powershell中有更好的方法吗?
我正在尝试Get-S3Object -BucketName pilot,但它有很多子目录.
我有下面的PowerShell脚本,可以将文件移动到我的亚马逊桶中,所有这些都适用于一些小文件,但是当复制较大的文件时,for循环继续循环并开始复制,然后其他人完成并且不需要很长时间在我有100个文件全部一次转移之前.
我想要的是能够将同时文件传输的数量限制为5或10?
foreach ($line in $csv) {
#--------------------Transfer files Put in a for each loop here---------------------------
$SourceFolder =$line.destination
$sourceFile = $line.name
if(test-Path -path $SourceFolder){
Write-S3Object -BucketName $BucketName -Key $sourceFile -File $SourceFolder
#check fro missing files
$S3GetRequest = New-Object Amazon.S3.Model.S3Object #get-S3Object -BucketName $BucketName -Key $sourceFile
$S3GetRequest = get-S3Object -BucketName $BucketName -Key $sourceFile
if($S3GetRequest -eq $null){
Write-Error "ERROR: Amazon S3 get requrest failed. Script halted."
$sourceFile + ",Transfer Error" |out-file $log_loc -append
}
}else {$SourceFolder + ",Missing File Error" |out-file $log_loc -append} …Run Code Online (Sandbox Code Playgroud) 我使用aws ec2 userdata和windows powershell脚本.我需要实例引导.我的想法是:
我试图在userdata中获取版本标记值.我检查了aws http api.它无法返回标签.我写了简单的PowerShell脚本:
$instanceId = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id")
aws ec2 describe-tags --filters $filter --query 'Tags[*]'
Run Code Online (Sandbox Code Playgroud)
我可以使用aws http api获取实例ID.我无法获取实例标签,因为AWS ec2 userdata无法启动"aws.exe".
此脚本是正确的 - 它在实例启动之前手动运行.
注意:"aws"是"aws.exe"(https://aws.amazon.com/cli/)
powershell amazon-ec2 amazon-web-services user-data aws-powershell
我正在开发一个无人参与的PowerShell脚本,并希望以正确的方式存储AWS凭据.
根据文档,我应该能够将凭证存储在像这样的.ini文件中
\ myAWSCredentials.ini
[default]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
[namedProfile]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Run Code Online (Sandbox Code Playgroud)
并将其加载到我的环境中
Set-AWSCredentials -ProfilesLocation .\myAWSCredentials.ini
要么
Set-AWSCredentials -ProfileName namedProfile -ProfilesLocation .\myAWSCredentials.ini
但是我得到一个没有意义的错误 - PowerShell与App.config文件有什么关系?
Set-AWSCredentials:加载存储的凭据时出错,(profile location ='.\ myAWSCredentials.ini').错误:App.config不包含凭据信息.添加AWSAccessKey和AWSSecretKey或AWSProfileName.在行:1 char:1 + Set-AWSCredentials -ProfilesLocation.\ myAWSCredentials.ini + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified :( :) [Set-AWSCredentials],ArgumentException + FullyQualifiedErrorId:System.ArgumentException, Amazon.PowerShell.Common.SetCredentialsCmdlet
我可以使用powershell获取Tag的一个实例的键值对.
我有一个对象,$instance并$instance.Tags产生以下列表:
Key Value --- ----- abc cde mnp mju
如何检索任何特定密钥的值?
我们正在标记我们的 AWS 实例,我想通过 TAG 引用检索我们所有实例(ELB、S3、EC2、安全组)的列表。例如,我们始终使用以下内容标记我们的资源:{ "Key": "Project", "Value": "bananas" },
我们如何通过 power-shell 获取包含 TAG Project 值“bananas”的所有资源的列表?
我能够使用以下脚本获取我所有的 EC2:
$instance = Get-EC2Instance
-Filter @( @{name='tag:Project'; values="bananas"};
@{name='instance-state-code'; values = 16} )
| Select-Object -ExpandProperty instances #Get instance ID 忽略任何终止的实例 $instance | 导出-CSV "C:\ec2.csv"
但我不确定如何使用一个脚本获取我所有的标记资源。
powershell amazon-web-services aws-powershell aws-resource-group
我试图通过.NET Amazon API将powershell脚本连接到Auto Scaling组.
我在这里检查了文档,但是我很难获得一个包含属于Auto Scaling Group的实例的IP地址的对象.
我不确定使用哪个类,或者哪个类包含我的对象.
我目前正在使用:
$request = New-Object -TypeName Amazon.AutoScaling.Model.DescribeAutoScalingInstancesRequest
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过同样的情况?哪个类/对象包含AutoScaling组中运行的实例的IP地址?
我已经创建了一个存储桶,但我想在此存储桶中创建新文件夹,而不是上传数据或其他任何内容,只需创建新文件夹。我怎样才能做到这一点 ?
谢谢
aws-powershell ×12
powershell ×10
amazon-ec2 ×5
amazon-s3 ×4
aws-cli ×2
amazon-ami ×1
user-data ×1