介绍
也许您已经遇到了评估对环境本能可能保留的偏见,并取决于本能的数量,这可能是一项非常愉快的任务。
在包含数十个或数百本本能的环境中,为每次手动完成的储备监狱报告可能需要几天的时间,其任务是:检查本能¢行为的家族,请访问AWS计算器,收集不同方式的价格(储备金和付款),并将所有这些信息包括在电子表格中。汗水,看到…
考虑了一种自动化此过程的方法,我制作了一个python脚本以在lambda功能中运行,并向我们生成了这个美丽的报告。 ð
此脚本使用AWS prea api填写一个带有按需的CSV文件,并以不同的付款方式(无预付款,部分高级且完全高级)到1年和3年。也可以在标准和可说的预订的类型之间进行选择,以更好地满足您的需求。
关于AWS的API API
AWS提供两个您可以用来咨询价格的API。您可以咨询文档neste link,但总而言之:
- 使用AWS的API列表批量API,您可以咨询大量群众。此API返回JSON或CSV文件。大众API恢复了价格清单的所有历史版本。
- 使用API API列表查询,可以使用AWS SDK或AWS CLI咨询有关AWS服务,产品和价格的特定信息。该API能够恢复有关某些产品或价格的信息,而不是收回质量价格。这使您可以在可能无法处理质量价格列表的环境中获取价格信息,例如在基于网络浏览器或基于Web浏览器的应用程序中。例如,可以使用咨询API使用64个VCPU,256 Memorial Gib和SQL Server Enterprise Prone©-INSTALLED SIA -PACK(孟买)寻求Amazon EC2安装的信息。咨询API返回当前价格并不恢复历史记录。
对于此脚本,第二个选项将在上述API中使用。在此API的呼叫中,传递了符合您的环境的实例的一些属性,它将返回我们所讨论的实例。
AWS API API AWS列表提供以下两个端点:
妈妈在面团里!
1- criar桶strong>
第一点是创建我们的存储桶,其中脚本使用的CSV文件以及脚本生成的文件将是。
访问Amazon S3控制台,然后单击创建存储桶。给您的存储桶命名,然后选择您的喜好注册。将其余选项作为标准放置,然后单击“创建桶”。
Bucket的名称在全球范围内独家,因此请使用与我的不同名称并将其写下来。让我们在下一步将创建的诗中使用此名称。
创建了存储桶,下载esse arquivo,然后爬上您的水桶。
这是脚本将使用的模型CSV文件记录报告的报告。他已经有列表的列的负责人,脚本记录了实例的数据和相应的价格。
。2-创建AMI
的函数在IAM控制台上,单击左侧菜单上的策略,然后创建策略。单击JSON选项卡并用以下方式替换代码JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::ec2-princing-reports/*"
}
]
}
用您先前创建的存储桶的名称替换Koud0行上的存储桶名。前进到审核部分以提供您的polycy名称,然后单击创建策略。
让我们扮演角色,并攻击脚本操作的其他必要条件以及其他必要的东西。在左侧菜单中单击角色,然后创建角色。在受信任的实体类型中,选择AWS服务,标记Lambda服务并提前攻击必要的政策。
在添加权限搜索您之前创建的Polycy,并将名称旁边的框标记为选择它。以下策略的相同过程:
- awspricelistservicefullaccess
- Amazonec2ReadonlyAccess
- AmazonssmreadonLyAccess
- awslambdabasicexecutionrole
提前为您的角色选择名称并查看受攻击的多维斯。您角色的权限应该看起来像这样:
3- criarfun§ã§olambda
访问lambda控制台,然后单击创建功能。从头开始选择“选项作者”,从一个代码的示例开始。 dãªlambda功能的名称,然后选择运行时python 3.9。
在更改中,默认执行辊选择使用现有角色,然后选择您在上一步中创建的角色。完成此点击创建功能。
现在您已经创建了该函数,将示例的示例替换为neste repositório的方式。插入代码后,单击部署以保存更改。
完成此操作,它转到“配置”选项卡并更改超时2分钟(根据环境中的环境数设置更长或更短的时间)。
用于“测试”选项卡来设置新测试。 dãª是事件的名称,然后单击“保存”。
4-configuraã§o do脚本
返回“代码”选项卡。让我们看一些需要更改的线路线:
保持警卫的大腿,并受到pyem仪式的保护。选择您的实例所在的注册。如果您有多个记录中的实例,则有必要更改注册并再次执行功能,为每个区域生成报告。
# Define AWS Region
AWS_REGION = "us-east-1"
如前所述,AWS PREA API提供了两个不同区域的端点。在这里,我们将使用Virgania区域,但是如果您愿意,您可以与另一个区域一起工作。
# Define AWS Pricing Rregion (us-east-1 or ap-south-1)
AWS_PRICING_REGION = 'us-east-1'
将在报告中使用的预订类型
您可以使用标准或可说明的预订类型。要了解两者之间的区别,请参见este link。
# Define reservation type (standard or convertible)
OFFERING_CLASS = 'standard'
存储桶名称报告的CSV文件将存储
更改此选项,然后输入您创建的存储桶的名称。由于Bucket在全球范围内是独家的,因此您必须无论如何都必须更改。
# Enter your BUCKET name, e.g 'mybucket'
BUCKET = 'mybucket'
空的CSV文件名将由脚本
完成如果您已使用其他名称保存了Model CSV文件,请在此处输入。
# KEY path, e.g.'myec2report.csv'
KEY = 'ec2_pricing_ri'
5-了解过滤器
要使API在我们的情况下返回相应的价格,我需要将一些parannter作为过滤器传递。该过滤器应用于API返回的JSON文件的生产中。请参阅下面的示例:
"product": {
"productFamily": "Compute Instance",
"attributes": {
"enhancedNetworkingSupported": "No",
"intelTurboAvailable": "Yes",
"memory": "1 GiB",
"dedicatedEbsThroughput": "Up to 2085 Mbps",
"vcpu": "2",
"classicnetworkingsupport": "false",
"capacitystatus": "Used",
"locationType": "AWS Region",
"storage": "EBS only",
"instanceFamily": "General purpose",
"operatingSystem": "Linux",
"intelAvx2Available": "Yes",
"regionCode": "us-east-1",
"physicalProcessor": "Intel Skylake E5 2686 v5",
"clockSpeed": "3.1 GHz",
"ecu": "Variable",
"networkPerformance": "Up to 5 Gigabit",
"servicename": "Amazon Elastic Compute Cloud",
"vpcnetworkingsupport": "true",
"instanceType": "t3.micro",
"tenancy": "Shared",
"usagetype": "BoxUsage:t3.micro",
"normalizationSizeFactor": "0.5",
"intelAvxAvailable": "Yes",
"processorFeatures": "AVX; AVX2; Intel AVX; Intel AVX2; Intel AVX512; Intel Turbo",
"servicecode": "AmazonEC2",
"licenseModel": "No License required",
"currentGeneration": "Yes",
"preInstalledSw": "NA",
"location": "US East (N. Virginia)",
"processorArchitecture": "64-bit",
"marketoption": "OnDemand",
"operation": "RunInstances",
"availabilityzone": "NA"
},
"sku": "CRAJUW7BTXFMT2UJ"
},
生产部分的主要键:
- 租赁
- preinstalledsw
- 操作系统
- LICENSEMODEL
- 能力史图斯
为了进一步完善我们的过滤器,我们花了几个parano仪表,例如:
- 位置
- InstanceType
观察包含过滤器的parano仪表的代码的拉伸:
Filters=[
{
'Type': 'TERM_MATCH',
'Field': 'location',
'Value': region
},
{
'Type': 'TERM_MATCH',
'Field': 'capacitystatus',
'Value': 'Used'
},
{
'Type': 'TERM_MATCH',
'Field': 'tenancy',
'Value': 'Shared'
},
{
'Type': 'TERM_MATCH',
'Field': 'instanceType',
'Value': typeEc2
},
{
'Type': 'TERM_MATCH',
'Field': 'preInstalledSw',
'Value': preInstalledSw
},
{
'Type': 'TERM_MATCH',
'Field': 'operatingSystem',
'Value': operatingSystem
},
{
'Type': 'TERM_MATCH',
'Field': 'licenseModel',
'Value': 'No License required'
}
],
6-执行
一旦进行了必要的更改,请进行新的部署以保存,然后单击测试Botan。如果一切顺利,测试结果将与此相似: 回到存储桶,然后生成一个新文件(与原点文件 +末尾的数字序列相同)。 打开文件,我们可以看到该遏制是一份精美的报告,其中包括按需和储备金的所有实例中插入了代码中的所有情况。除了价格外,我们还可以检查其他属性,例如ID,名称,AZ,类型,内存,VCPU等。 我希望这个脚本可以手动收集这些数据来帮助您节省时间和精力,就像它帮助我一样。 重要:始终验证用calculadora de preços da AWS值生成的报告的值。我不能保证没有不同的分歧,尽管这很困难。 说到AWS计算器,如果您观察到上面的示例电子表格,则会看到一些具有无availablean值的字段。尝试在AWS计算器中验证这些值。当我写这篇文章的那一刻,选择了实例的Famãlia以及储备和监狱的方式,因为它不可用,保留实例的启示盒就会消失,如果您更新了宣传案件,则会回来。 ð 这一切都是今天的!
包括£o
如果您有生命或想要发送反馈,请随时发表评论。
abraã§os!