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 / dynamodb-data-to-s3.py
Last active July 22, 2022 16:35
A Lambda function that scans a given DynamoDB table and writes the data to S3
import os
import json
import boto3
from datetime import datetime
# Import resources using AWS Python SDK (boto3) and specify the DynamoDB table to scan and S3 bucket to write file to
# Table and bucket name are passed as environment variables in SAM template
s3 = boto3.resource('s3')
bucket = s3.Bucket(os.environ['BUCKET_NAME'])
table = boto3.resource('dynamodb').Table(os.environ['TABLE_NAME'])
@em-shea
em-shea / template.yaml
Last active April 15, 2024 18:54
An example SAM template that creates a DynamoDB table, a Lambda function that writes to DynamoDB, and an EventBridge trigger
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An app that includes a DynamoDB table, a Lambda function that writes to DynamoDB, and a scheduled EventBridge event
Resources:
LambdaWriteToDynamoDB:
# A function that writes to a DynamoDB table on a schedule
Type: 'AWS::Serverless::Function'
Properties:
FunctionName: LambdaWriteToDynamoDB
@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:
@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 / eventbridge-lambda.yaml
Last active November 3, 2023 21:03
EventBridge scheduled event Lambda example
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
Function:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: src/Function
Handler: handler.handler
Runtime: python3.11
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:*",
"lambda:*",
"cloudformation:*",
"sns:CreateTopic",
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
# 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",
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,