Files
eagle0/scripts/refresh_name_layers/refresh_name_layers.rb
T
adminandGitHub e08f327bd1 remove all trailing whitespace (#2344)
* remove all trailing whitespace

* fix one scala file


Former-commit-id: c73a66046649b189f5df617fefa6e099b1c05426
2022-11-23 08:22:25 -08:00

74 lines
2.4 KiB
Ruby
Executable File

#!/usr/bin/env ruby
require 'net/http'
require 'uri'
require 'aws-sdk-s3'
require 'aws-sdk-lambda'
require 'zip'
def fetch(uri_str, limit = 10)
# You should choose a better exception.
raise ArgumentError, 'too many HTTP redirects' if limit == 0
response = Net::HTTP.get_response(URI(uri_str))
case response
when Net::HTTPSuccess then
response
when Net::HTTPRedirection then
location = response['location']
warn "redirected to #{location}"
fetch(location, limit - 1)
else
response.value
end
end
def lambda_handler(event:, context:)
response = fetch("https://docs.google.com/spreadsheets/d/1DHEsiv4cY4gE6AX3sVH82K__mpBD1aznIYCQwQxA_F0/export?gid=0&format=tsv")
stringio = Zip::OutputStream.write_buffer do |zio|
zip_entry = Zip::Entry.new(zio, 'names.tsv', nil, nil, nil, nil, nil, nil, Zip::DOSTime.at(0))
zio.put_next_entry(zip_entry)
zio.write(response.body)
end
stringio.rewind
new_contents = stringio.string.bytes
s3 = Aws::S3::Client.new
original_resp = s3.get_object(bucket:'eagle0', key:'names.tsv.zip')
original_contents = original_resp.body.string.bytes
if original_contents != new_contents then
puts "Different contents"
resp = s3.put_object(body: stringio.sysread, bucket:'eagle0', key:'names.tsv.zip')
puts "successfully uploaded zip"
puts resp
client = Aws::Lambda::Client.new
lambda_response = client.publish_layer_version({
layer_name: "namesLayer",
content: {
s3_bucket: 'eagle0',
s3_key: 'names.tsv.zip'
}
})
new_version_arn = lambda_response.layer_version_arn
puts "successfully updated layer"
puts lambda_response
lambda_response = client.update_function_configuration({
function_name: "Name_Generator",
layers: [new_version_arn, "arn:aws:lambda:us-east-1:339296677100:layer:nameConstructionLayer:2"]
})
puts "successfully updated config"
puts lambda_response
{ statusCode: 200, headers: { "Content-Type": "text/html; charset=UTF-8" }, body: lambda_response }
else
puts "Contents are identical, not uploading"
{ statusCode: 200, headers: { "Content-Type": "text/html; charset=UTF-8" }, body: "No change" }
end
end
lambda_handler(event: nil, context: nil)