import time import boto3 from botocore.client import Config def main(event, context): # Credentials mounted by Fission at /secrets/// try: with open("/secrets/default/bench-s3-secret/access-key") as f: access_key = f.read().strip() with open("/secrets/default/bench-s3-secret/secret-key") as f: secret_key = f.read().strip() except Exception as e: return {"status": "error", "detail": f"secret read: {e}"} s3 = boto3.client( "s3", endpoint_url="https://s3.msk-1.ngcloud.ru", aws_access_key_id=access_key, aws_secret_access_key=secret_key, config=Config(signature_version="s3v4"), ) bucket = "sless-functions" key = "storage-check/check.txt" test_data = b"storage-check-ok" try: # Write t0 = time.time() s3.put_object(Bucket=bucket, Key=key, Body=test_data) write_ms = round((time.time() - t0) * 1000, 2) # Read t0 = time.time() result = s3.get_object(Bucket=bucket, Key=key)["Body"].read() read_ms = round((time.time() - t0) * 1000, 2) # Cleanup s3.delete_object(Bucket=bucket, Key=key) if result == test_data: return {"status": "ok", "write_ms": write_ms, "read_ms": read_ms, "bucket": bucket} else: return {"status": "error", "detail": "data mismatch"} except Exception as e: return {"status": "error", "detail": str(e)}