Als ich die Präzedenzfälle gegoogelt habe, gab es viele Beispiele für Python, also das Mindesteinstellungs-Memo, als ich es von Hand mit [Ruby] doc gemacht habe.
Erstellen Sie mit einem Klick auf den Lambda-Konsolenbildschirm im Web
ce: GetCostAndUsage
lambda_functions.rb
require 'aws-sdk'
require 'net/http'
require 'uri'
require 'json'
#Lambda-Einstiegspunkt
def lambda_handler(event:, context:)
fetch_cost
.then { |response| pretty_response(response) }
.then { |message| notify_slack(message) }
#Rückgabe als HTTP-Antwort
{ statusCode: 200, body: 'ok' }
end
#Rechnungsinformationen abrufen
def fetch_cost(time = Time.now)
#Ich benötige keine Anmeldeinformationen, da ich mich bereits authentifiziert habe(Siehe unten)
client = Aws::CostExplorer::Client.new(region: 'us-east-1')
client.get_cost_and_usage(
time_period: {
start: Time.local(time.year, time.month, 1).strftime('%F'),
end: time.strftime('%F'),
},
granularity: 'MONTHLY',
metrics: ['AmortizedCost'],
group_by: [ { type: "DIMENSION",key: 'SERVICE' }]
)
end
#Formatieren des Rückgabewerts der API
def pretty_response(res)
#Kürzung. Passend
end
#Post an Slack
def notify_slack(message)
#eingehender Webhook Legen Sie die festgelegte URL in der Umgebungsvariablen fest
uri = URI.parse(ENV['SLACK'])
params = { text: message }
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
res = http.start do
request = Net::HTTP::Post.new(uri.path)
request.set_form_data(payload: params.to_json)
http.request(request)
end
unless res.is_a? Net::HTTPSuccess
raise 'Failed POST Slack'
end
res
end
Klicken Sie hier für die vollständige Quelle (Inhalt). Was Sie tun, ist fast dasselbe wie [Develpers.IO-Präzedenzfallerfassungsprozess in Python] [Klassenmethode].
Wenn Sie ändern möchten, was Sie sehen möchten, können Sie [was an Aws :: CostExplorer :: Client # get_cost_and_usage
] api_doc übergeben werden soll, oder pretty_response
ändern.
Ich wusste nicht, wo ich die IAM-Authentifizierung erhalten soll, wenn ich die Lambda-Funktion ausführe, aber wenn Sie das Juwel aws-sdk verwenden, können Sie dies tun, ohne etwas zu tun. Der Grund ist wie folgt.
Anfangs wusste ich das nicht, daher war es nutzlos, weil ich ein IAM getrennt von der Rolle für die Ausführung erstellt und diesen Zugriffsschlüssel und Pfad verwendet habe.
Recommended Posts