49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import time
|
|
import boto3
|
|
from botocore.client import Config
|
|
|
|
|
|
def main(event, context):
|
|
# Credentials mounted by Fission at /secrets/<namespace>/<secretname>/<key>
|
|
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)}
|