-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #505 from ddps-lab/azure-sps-for-PR
AZURE SPS 수집 기능 코드 Main Branch로 Merge
- Loading branch information
Showing
16 changed files
with
1,286 additions
and
80 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
name: deploy azure sps files to lambda | ||
on: | ||
push: | ||
branches: | ||
- 'main' | ||
paths: | ||
- 'collector/spot-dataset/azure/lambda/current_collector/load_price.py' | ||
- 'collector/spot-dataset/azure/lambda/current_collector/upload_data.py' | ||
- 'collector/spot-dataset/azure/lambda/current_collector/lambda_function_sps.py' | ||
- 'collector/spot-dataset/azure/lambda/current_collector/load_sps.py' | ||
- 'const_config.py' | ||
- 'collector/spot-dataset/azure/lambda/current_collector/utill/**' | ||
- 'collector/spot-dataset/azure/lambda/current_collector/sps_module/**' | ||
|
||
env: | ||
AWS_ACCESS_KEY_ID: ${{ secrets.SPOTRANK_ACCESS_KEY_ID }} | ||
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPOTRANK_SECRET_ACCESS_KEY }} | ||
AWS_DEFAULT_REGION: 'us-west-2' | ||
|
||
jobs: | ||
deploy_source: | ||
name: deploy lambda from source | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: checkout source code | ||
uses: actions/checkout@v4 | ||
- name: Zip Lambda function code | ||
run: | | ||
rm -f azure_sps_lambda.zip | ||
zip -j azure_sps_lambda.zip \ | ||
collector/spot-dataset/azure/lambda/current_collector/load_price.py \ | ||
collector/spot-dataset/azure/lambda/current_collector/upload_data.py \ | ||
collector/spot-dataset/azure/lambda/current_collector/lambda_function_sps.py \ | ||
collector/spot-dataset/azure/lambda/current_collector/load_sps.py \ | ||
const_config.py | ||
zip -r azure_sps_lambda.zip \ | ||
collector/spot-dataset/azure/lambda/current_collector/utill \ | ||
collector/spot-dataset/azure/lambda/current_collector/sps_module | ||
- name: Deploy to AWS Lambda | ||
run: | | ||
aws lambda update-function-code --function-name azure-sps-collector --zip-file fileb://azure_sps_lambda.zip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
51 changes: 51 additions & 0 deletions
51
collector/spot-dataset/azure/lambda/current_collector/lambda_function_sps.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
import load_sps | ||
from sps_module import sps_shared_resources | ||
from datetime import datetime | ||
from upload_data import update_latest_sps, save_raw_sps | ||
from utill import pub_service | ||
|
||
def lambda_handler(event, _): | ||
try: | ||
# EventBridge 규칙에서 전달된 action 매개변수 가져오기 | ||
action = event.get("action", "default") # EventBridge에서 전달된 UTC 시간 문자열 | ||
event_time_utc = event.get("time", "default") | ||
event_time_utc = datetime.strptime(event_time_utc, "%Y-%m-%dT%H:%M:%SZ") | ||
desired_count = sps_shared_resources.time_desired_count_map.get(event_time_utc.strftime("%H:%M"), 1) | ||
|
||
print(f"Lambda triggered: action={action}, event_time_utc={event_time_utc}, desired_count={desired_count}") | ||
|
||
# Event Bridge 에서 0:00의 호출은 First_Time으로 오고, 기타는 Every_10Min로 옵니다. | ||
if action == "First_Time": | ||
print(f"Executing: collect_spot_placement_score_first_time (desired_count={desired_count})") | ||
sps_res_df = load_sps.collect_spot_placement_score_first_time(desired_count=desired_count) | ||
|
||
elif action == "Every_10Min": | ||
if event_time_utc.hour == 15 and event_time_utc.minute == 0: | ||
return handle_response(200, f"Action '{action}' executed successfully. The scheduled time (UTC 15:00, KST 00:00) has been skipped.") | ||
|
||
print(f"Executing: collect_spot_placement_score (desired_count={desired_count})") | ||
sps_res_df = load_sps.collect_spot_placement_score(desired_count=desired_count) | ||
|
||
else: | ||
return handle_response(400, f"Invalid action: '{action}'. Time: {event_time_utc}") | ||
|
||
assert sps_res_df is not None and handle_res_df(sps_res_df, event_time_utc) | ||
return handle_response(200, f"Action '{action}' executed successfully") | ||
|
||
except Exception as e: | ||
error_msg = f"AZURE SPS MODULE EXCEPTION!\n Error: {e}" | ||
pub_service.send_slack_message(error_msg) | ||
return handle_response(400, f"Action '{action}' executed failed. Time: {event_time_utc}.", error_msg) | ||
|
||
|
||
def handle_res_df(sps_res_df, event_time_utc): | ||
update_result = update_latest_sps(sps_res_df, event_time_utc) | ||
save_result = save_raw_sps(sps_res_df, event_time_utc) | ||
return update_result and save_result | ||
|
||
def handle_response(status_code, body, error_message=None): | ||
response = {"statusCode": status_code, "body": body} | ||
if error_message: | ||
response["error_message"] = error_message | ||
print(f"Response: {response}") | ||
return response |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.