Skip to content

Instantly share code, notes, and snippets.

@em-shea
em-shea / quicksight-manifest.json
Created April 15, 2020 02:28
An example manifest for QuickSight
{
"fileLocations": [
{
"URIPrefixes": [
"s3://my-bucket-name"
]
}
],
"globalUploadSettings": {
"format": "JSON"
@em-shea
em-shea / template.yaml
Created May 12, 2020 01:44
An example SAM template for a Lambda function invoked by API Gateway
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An example SAM template for a Lambda function invoked by API Gateway.
Resources:
MyFunction:
Type: 'AWS::Serverless::Function'
Properties:
FunctionName: MyFunction
Handler: MyFunction.lambda_handler
@em-shea
em-shea / template.yaml
Last active June 17, 2020 21:11
An example SAM template for a Lambda & API Gateway app that sends messages using SNS
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An example SAM template for a Lambda & API Gateway app that sends messages using SNS.
Parameters:
# For any variables you don't want stored in your repo, you can pass them through the SAM deploy command
# Ie, sam deploy .... --parameter-overrides MyEmail=myemail@gmail.com
MyEmail:
Type: String
Resources:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:*",
"lambda:*",
"cloudformation:*",
"sns:CreateTopic",
# Mock call to S3 to read file
def mocked_read_file(bucket_name, key_name):
return "我爱写单元测试!"
# Mock call to Translate to translate file text
def mocked_translate_text(original_text):
return {
"original_text":"我爱写单元测试!",
"translated_text":"I love writing unit tests!",
"original_language":"zh",
# Mock S3 new file uploaded event
def s3_upload_event(self, file_name):
return {
"Records":[
{
"eventVersion":"2.1",
"eventSource":"aws:s3",
"awsRegion":"us-east-1",
"eventTime":"2021-06-18T16:03:17.567Z",
class TranslateFileTest(unittest.TestCase):
# Test for valid file type (.txt)
@mock.patch('translate_file.app.read_file', side_effect=mocked_read_file)
@mock.patch('translate_file.app.translate_text', side_effect=mocked_translate_text)
def test_valid_file(self, translate_text_mock, read_file_mock):
response = lambda_handler(self.s3_upload_event("valid_file.txt"), "")
expected_response = {
"success": True,
import os
import boto3
# Explicitly specifying where the default AWS region is found
# (as an environment variable) to be able to mock it in the test
s3_client = boto3.client('s3', region_name=os.environ['AWS_REGION'])
translate_client = boto3.client('translate', region_name=os.environ['AWS_REGION'])
def lambda_handler(event, context):
print(event)
import unittest
from unittest import mock
# Setting the default AWS region environment variable required by the Python SDK boto3
with mock.patch.dict('os.environ', {'AWS_REGION': 'us-east-1'}):
from translate_file.app import lambda_handler
@em-shea
em-shea / example_user_service.py
Created January 16, 2022 19:25
An example of a user service querying DynamoDB and formatting the response
import os
import boto3
import datetime
from typing import List, Dict
from dataclasses import dataclass
from boto3.dynamodb.conditions import Key
@dataclass
class Subscription:
list_name: str