Skip to content

Instantly share code, notes, and snippets.

@mweagle
mweagle / mock_http.go
Created May 3, 2017 02:02
mock request
// Create an http.Request object with this data...
spartaResp := newSpartaMockHTTPResponse()
spartaReq := &http.Request{
Method: "POST",
URL: &url.URL{
Scheme: "http",
Path: fmt.Sprintf("/%s", functionName),
},
Proto: "HTTP/1.1",
ProtoMajor: 1,
@mweagle
mweagle / shim.py
Created May 3, 2017 02:00
Python core shim
bytesWritten = lib.Lambda(funcName.encode(‘utf-8’),
json.dumps(request).encode(‘utf-8’),
credentials.access_key.encode(‘utf-8’),
credentials.secret_key.encode(‘utf-8’),
credentials.token.encode(‘utf-8’),
byref(exitCode),
response_content_type_buffer,
MAX_RESPONSE_CONTENT_TYPE_SIZE-1,
response_buffer,
MAX_RESPONSE_SIZE-1)
@mweagle
mweagle / main.go
Last active May 3, 2017 01:57
After transformation
package main
// #include <stdio.h>
// #include <stdlib.h>
// #include <string.h>
// #include <stdio.h>
import "C"
import "github.com/aws/aws-sdk-go/aws/credentials"
import (
@mweagle
mweagle / main.go
Last active May 3, 2017 01:58
Original source
package main
import (
"fmt"
"os"
sparta "github.com/mweagle/Sparta"
"github.com/mweagle/SpartaPython"
"github.com/mweagle/Sparta/cgo"
// Standard AWS λ function
func helloWorld(event *json.RawMessage,
context *sparta.LambdaContext,
w http.ResponseWriter,
logger *logrus.Logger) {
helloWorldCounterMetric.Inc(1)
fmt.Fprint(w, "Hello World")
}
// Go get the outputs of the GrafanaStack
awsSession := session.New()
cloudFormationSvc := cloudformation.New(awsSession)
params := &cloudformation.DescribeStacksInput{
StackName: aws.String(GrafanaStackName),
}
outputResults, outputResultsErr := cloudFormationSvc.DescribeStacks(params)
lambdaFn.Decorator = func(serviceName string,
lambdaResourceName string,
lambdaResource gocf.LambdaFunction,
resourceMetadata map[string]interface{},
S3Bucket string,
S3Key string,
buildID string,
template *gocf.Template,
context map[string]interface{},
logger *logrus.Logger) error {
@mweagle
mweagle / main.go
Last active August 26, 2016 05:47
Spartav0.8.0_envVars
Environment: &gocf.EC2ContainerServiceTaskDefinitionContainerDefinitionsEnvironmentList{
gocf.EC2ContainerServiceTaskDefinitionContainerDefinitionsEnvironment{
Name: gocf.String("AWS_REGION"),
Value: gocf.Ref("AWS::Region").String(),
},
gocf.EC2ContainerServiceTaskDefinitionContainerDefinitionsEnvironment{
Name: gocf.String(sqsQueueURLEnvVar),
Value: gocf.Ref(sqsResourceName).String(),
},
gocf.EC2ContainerServiceTaskDefinitionContainerDefinitionsEnvironment{
@mweagle
mweagle / main.go
Last active August 26, 2016 05:45
Spartav0.8.0_EC2Role
ec2IAMStatements = append(ec2IAMStatements, spartaIAM.PolicyStatement{
Action: []string{"sqs:ChangeMessageVisibility",
"sqs:DeleteMessage",
"sqs:GetQueueAttributes",
"sqs:ReceiveMessage"},
Effect: "Allow",
Resource: gocf.GetAtt(sqsResourceName, "Arn").String(),
@mweagle
mweagle / main.go
Created August 26, 2016 05:27
Spartav0.8.0_newLambda
// Setup an IAM role that allows the lambda function to send a message
// to the queue.
iamPolicy := sparta.IAMRoleDefinition{
Privileges: []sparta.IAMRolePrivilege{
sparta.IAMRolePrivilege{
Actions: []string{
"sqs:SendMessage"},
Resource: gocf.GetAtt(sqsResourceName, "Arn").String(),
},
},