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
import base64 | |
# Convert this to a b64 string: | |
some_str = "Some string..." | |
b64string = base64.b64encode(some_str.encode("utf-8")).decode("utf-8") | |
# ^^ Without this, it's a byte array. | |
# /nomorehairpulling |
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
import json | |
""" | |
This is NOT extensive in any way -- just something quick and dirty. It doesn't handle all datatypes -- use at your own risk. | |
""" | |
def lowercase(original): | |
if isinstance(original, str): | |
return original.lower() | |
elif isinstance(original, list): |
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
import json | |
""" | |
This is NOT extensive in any way -- just something quick and dirty. | |
""" | |
def lowercase_keys(original, in_lists=False): | |
if in_lists and isinstance(original, list): | |
new_list = [] | |
for item in original: |
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
import boto3 | |
BUCKET = "LOLSOMEBUCKET" | |
KEY = "LOL/SOME/KEY" | |
client = boto3.client("s3") | |
result = client.get_object(Bucket=BUCKET, Key=KEY) | |
compressed = False |
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
# from botocore.session import Session | |
# from botocore.credentials import AssumeRoleProvider, CredentialResolver, AssumeRoleCredentialFetcher, \ | |
# DeferredRefreshableCredentials, _local_now | |
# """ | |
# # Where much of this is referenced: | |
# https://github.com/aws/aws-cli/blob/f4ea4b682e792eb474e9e3c3a74b16ab34ba95c0/tests/integration/test_cli.py | |
# https://github.com/boto/botocore/blob/fd6aac245b24dbdbfc6e0c5ecd7530cfe4346794/botocore/session.py | |
# https://github.com/boto/botocore/blob/fd6aac245b24dbdbfc6e0c5ecd7530cfe4346794/botocore/credentials.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
from datetime import datetime | |
# Prints a string that looks like: 2017-08-30T21:19:30 (this is a good standard ISO format) | |
current_time = datetime.utcnow().replace(tzinfo=None, microsecond=0).isoformat() | |
print(current_time) | |
# 2019-02-04T19:44:04 | |
# To read in a string like above | |
date_obj = datetime.strptime(current_time, "%Y-%m-%dT%H:%M:%S") |
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
Documented here: https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/ | |
Yes, it's really shitty. | |
Example Policy to ONLY allow specific IAM Roles access to the objects (denies all the other roles access to the objects): | |
{ | |
"Version": "2008-10-17", | |
"Statement": [ | |
{ |
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
def snake_to_camels(data: object) -> object: | |
"""Function that recursively converts snake_case to camelCase in a dict.""" | |
if isinstance(data, dict): | |
data_copy = dict(data) | |
for key, value in data.items(): | |
# Send the value back: | |
new_value = snake_to_camels(value) | |
# In case the key isn't a string (like an Int): |
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
{ | |
"Records": [ | |
{ | |
"EventSource": "aws:sns", | |
"EventVersion": "1.0", | |
"EventSubscriptionArn": "arn:aws:sns:REGION:ACCOUNT:TOPICNAME:SOME-ID", | |
"Sns": { | |
"Type": "Notification", | |
"MessageId": "SOME-ID", | |
"TopicArn": "arn:aws:sns:REGION:ACCOUNT:TOPICNAME", |
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
# Strip out the unicode keys from a Python 2 dictionary (also includes nested Lists, Dicts, and Sets): | |
def py2_strip_unicode_keys(blob): | |
"""For Python 2 Only -- this will convert unicode keys in nested dictionaries to standard strings.""" | |
if type(blob) == unicode: | |
return str(blob) | |
elif type(blob) == dict: | |
for key in list(blob.keys()): | |
value = blob.pop(key) | |
blob[str(key)] = py2_strip_unicode_keys(value) |
OlderNewer