这两天我都在看如何使用λ和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就可以看见上传的函数了。
代码这一块不像Python能直接看见,直接告诉你太大没法显示但是我可以直接调用