通过Lambda生成分期付款预订的报告
#aws #python #lambda #ptbr

介绍

也许您已经遇到了评估对环境本能可能保留的偏见,并取决于本能的数量,这可能是一项非常愉快的任务。

在包含数十个或数百本本能的环境中,为每次手动完成的储备监狱报告可能需要几天的时间,其任务是:检查本能¢行为的家族,请访问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桶

第一点是创建我们的存储桶,其中脚本使用的CSV文件以及脚本生成的文件将是。

访问Amazon S3控制台,然后单击创建存储桶。给您的存储桶命名,然后选择您的喜好注册。将其余选项作为标准放置,然后单击“创建桶”。

Bucket的名称在全球范围内独家,因此请使用与我的不同名称并将其写下来。让我们在下一步将创建的诗中使用此名称。

创建了存储桶,下载esse arquivo,然后爬上您的水桶。

这是脚本将使用的模型CSV文件记录报告的报告。他已经有列表的列的负责人,脚本记录了实例的数据和相应的价格。

Image description

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"
3Al Engony,并防止Yoãootanct -ligux> ion)sub?

如前所述,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等。

包括£o

我希望这个脚本可以手动收集这些数据来帮助您节省时间和精力,就像它帮助我一样。

重要:始终验证用calculadora de preços da AWS值生成的报告的值。我不能保证没有不同的分歧,尽管这很困难。

说到AWS计算器,如果您观察到上面的示例电子表格,则会看到一些具有无availablean值的字段。尝试在AWS计算器中验证这些值。当我写这篇文章的那一刻,选择了实例的Famãlia以及储备和监狱的方式,因为它不可用,保留实例的启示盒就会消失,如果您更新了宣传案件,则会回来。 ð

这一切都是今天的!
如果您有生命或想要发送反馈,请随时发表评论。
abraã§os!