AWSλ自动化和PowerShell

  

这两天我都在看如何使用λ和Python,但是平常更习惯使用PowerShell来管理各种系统。试试看如何在λ里面使用PowerShell吧。

  

首先在本地计算机上需要安装下面三个模块。

  

安装PowerShell核心https://github.com/powershell/powershell

  

安装。net核心软件开发工具包(SDK) https://www.microsoft.com/net/download

  

安装AWSLambdaPSCore模块
Install-Module AWSLambdaPSCore范围CurrentUser

  

安装好了,在Powershell6的控制台里面执行
New-AWSPowerShellLambda -ScriptName awstag模板基本

  

他会自动根据基本的模板创建一个目录,里面用一个空白的ps文件,和一个readme文件。这个空白的ps文件自动加载了powershellcore的模块,如果我们需要添加其他的模块,需要在这里修改。下面是我的一个测试脚本。这个脚本主要的功能是检查标签,确保EC2,体积和快照都有对应的标签,因为每个月我需要通过标签来显示不同诊所的账单。另外如果快照如果超过60天,顺便也自动给我删除了。

  
 <代码> # PowerShell脚本文件执行AWS Lambda函数。
  #
  #在λ执行以下变量时将预定义的。
  # $ LambdaInput——PSObject包含Lambda函数输入数据。
  # $ LambdaContext - Amazon.Lambda.Core。ILambdaContext对象包含有关当前运行的λ信息环境。
  #
  #最后一项在PowerShell管道将作为Lambda函数的结果返回。
  #
  #包括PowerShell Lambda函数模块,像AWSPowerShell。NetCore模块,添加一个“#”要求的声明
  #指示模块和版本。
  
  #需要模块@ {ModuleName=癆WSPowerShell.NetCore”; ModuleVersion=' 3.3.335.0 '}
  
  #取消发送输入事件监测日志
  # Write-Host (ConvertTo-Json -InputObject美元LambdaInput压缩深度5)
  
  Write-Host -ForegroundColor黄色“检查EC2实例标记状态”
  
  所有美元=Get-EC2Instance |选择扩大实例
  
  返回所有|=$美元都{_.tag美元。关键-notcontains“诊所”}
  
  如果(返回- ne零美元){
  $ username=皌est@abc.com”
  密码=美元“Passwordtest”| ConvertTo-SecureString -asPlainText force
  $凭据=新对象System.Management.Automation.PSCredential(用户名、密码)美元
  id=return.InstanceId美元
  
  Send-MailMessage从test@abc.com——test@abc.com -SmtpServer smtp.office365.com - port 587 -UseSsl主题”EC2实例标记“身体”$ id "凭证凭证
  退出
  
  }
  #确认EC2实例标记
  
  $=@结果()
  foreach(项)美元{
  
  Name=美元项目。标签|都{$ _。关键情商的名字}|选择-ExpandProperty价值
  诊所=美元项目。标签|都{$ _。“诊所”的关键情商}|选择-ExpandProperty价值
  美元项目|添加成员-NotePropertyName描述-NotePropertyValue美元的名字
  美元美元项目|添加成员-NotePropertyName诊所-NotePropertyValue诊所
  
  项=美元项目| select *
  $ +=$ item
  
  }
  
  $ |选择结果描述InstanceId privateIpaddress,诊所| group对象诊所
  
  write-host“更新卷标签状态…“-ForegroundColor黄
  #标签所有卷的基础;价值=https://www.yisu.com/zixun/$值}
  }
  
  }
  
  }
  
  Write-Host“标签状态更新快照……”-ForegroundColor黄色
  #标签所有快照的基础;价值=https://www.yisu.com/zixun/$值}
  美元New-EC2Tag资源snapid标签@{键=癗ame”;值=https://www.yisu.com/zixun/$名称}
  
  }
  }
  
  }
  
  write-host“删除快照超过60天!”-ForegroundColor黄色
  
  美元日期=(get-date) .AddDays (-40)
  
  foreach(快照,快照美元){
  id=snapshot.snapshotid美元
  
  如果($快照。开始时间lt $日期){
  美元的快照
  Remove-EC2Snapshot -SnapshotId $ id证实:假美元
  }
  } 
  

接下来在Powershell6的控制台执行,他会自动绑定我的角色,压缩相关的模块和执行脚本,然后上传到λ的控制台。这里的我的角色我是随便写的,允许访问ec2和监测日志。

  

Publish-AWSPowerShellLambda -ScriptPath \ awstag。ps1 - name awstag -iamrole ec2fullaccess的地区ap-southeast-2

  

等个1分钟,登录aws就可以看见上传的函数了。

  

 AWSλ自动化和PowerShell

  

代码这一块不像Python能直接看见,直接告诉你太大没法显示但是我可以直接调用

  

 AWSλ自动化和PowerShell

AWSλ自动化和PowerShell