AWS CLI描述实例不一致

时间:2018-01-29 19:04:08

标签: amazon-web-services bamboo aws-powershell ssm

我有一个Bamboo任务,可以调用远程EC2上的批处理文件。该批处理文件执行测试,然后调用PowerShell脚本来解析测试。
最后我抓住我们的Bamboo服务器的实例ID并通过ssm发回测试结果。

当我尝试发送结果时,PowerShell脚本中存在我的问题。我用" describe-instances"检索Bamboo服务器ID:

Set-AWSCredential -StoreAs default -AccessKey <key> -SecretKey <key>

$instanceid = aws ec2 describe-instances --profile default --region "us-east-1" --filters 'Name=tag:Name,Values=Bamboo Server' --query 'Reservations[*].Instances[*].InstanceId' --output text

Send-SSMCommand -InstanceId $instanceId -DocumentName AWS-RunPowerShellScript -Parameter -Comment

*注意:我的Bamboo Server与我的测试位于不同的EC2上。


所以,如果我从Bamboo Build Plan中调用批处理文件。 &#34; describe-instances&#34;命令无法正常运行。
但是,如果我在远程EC2上本地运行批处理文件,则该过程可以顺利运行。

我试过了:
- &#34; describe-instances&#34;的多种变体。包括Get-EC2Instance等。
- 我相信我的权限设置正确。但也许&#34; describe-instances&#34;不抓住它。我已经尝试了很多设置信誉的变体,包括aws配置,从环境变量和文件中手动加载 - 我把Start-Sleeps放入,以确保我没有异步问题。

就像当我从Bamboo Task调用它时,命令拒绝运行。

我注意到测试在本地的前台运行,在从Bamboo调用时在后台运行。

我的问题可能是安全问题吗?就像从Bamboo运行一样,不允许命令运行吗?我找不到任何来自AWS或Bamboo的文档解释。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

哦,伙计......

教程:不要混用AWS CLI和AWSPowerShell。你得到了奇怪的结果。

首先:我不是百分百确定,但我相信凭证在命令之间以不同方式传递。似乎使用Set-AWSCredential设置每个会话的信用可行。但事实并非如此。因此,您必须坚持使用AWSPowerShell命令。

第二:
说到AWSPowerShell命令。他们可能很棘手。我不得不想出一个非常时髦的命令来捕获Bamboo Server的Instance Id。我把它拼凑在网内

周围的其他线程和帖子中
$instance = (Get-EC2Instance -Filter @{Name="tag:Name";Value="Bamboo Server" }).Instances | Select-Object InstanceId

然后使用$instance.InstanceId

获取实际ID

编辑: @Curios - 我拒绝了您的编辑,因为:根据您的命名约定,$ instance是完全可以接受的,但是非常欢迎您在脚本中将其命名为$ Instances。而且,你是对的,Bamboo Server确实引用名为&#34; Bamboo Server&#34;的所有实例。我选择使用选项卡的原因:名称/值组合是我们的架构只有一个Bamboo服务器,但更新等可能会更改实例ID,因此我需要通过抓住我们的&#34; Bamboo来允许这样的更改服务器&#34;不管它的实例ID如何。其他我需要根据需要为命令设置独特的设置。