Skip to content

Instantly share code, notes, and snippets.

View skorfmann's full-sized avatar

Sebastian Korfmann skorfmann

View GitHub Profile
/**
* Post-synthesis function to configure AWS provider for LocalStack
*/
exports.postSynth = function(config) {
const endpoint = "http://localhost:4566";
const services = [
"apigateway", "apigatewayv2", "cloudformation", "cloudwatch", "dynamodb", "ec2", "es",
"elasticache", "firehose", "iam", "kinesis", "lambda", "rds", "redshift", "route53",
"secretsmanager", "ses", "sns", "sqs", "ssm", "stepfunctions", "sts"

MoneyMoney CSV Export with Apple Script and Automator

  • adjust set accounts to {"IBAN 1", "IBAN 2"}
  • replace yourPassword with your MoneyMoney password
  • replace /your/local/path/ with your actual target path
  • set the time range set yesterday to (today - (1 * days))

Load this file in Automator and get fully automated exports.

import { Credentials } from "@aws-amplify/core";
import { AuthOptions, createAuthLink } from "aws-appsync-auth-link";
import { createSubscriptionHandshakeLink } from "aws-appsync-subscription-link";
import {
ApolloClient, ApolloLink, HttpLink, InMemoryCache
} from "@apollo/client/core"
import gql from 'graphql-tag';
global.WebSocket = require('ws');
@skorfmann
skorfmann / custom-data-source.ts
Last active July 8, 2021 13:54
A custom data source for cdktf without generics
import { Construct, Node, } from "constructs";
import { Resource, TerraformResource, TerraformAsset, AssetType } from 'cdktf';
import * as fs from "fs";
import * as path from 'path'
import { DataExternal } from "@cdktf/provider-external"
export interface CustomDataSourceConfig {
code(input: any): Promise<any>
inputs: any;
dependsOn?: TerraformResource[];
@skorfmann
skorfmann / README.md
Last active May 3, 2021 08:59
An example for a custom provider leveraging https://github.com/lukekaalim/terraform-plugin-node-SDK/ This
@skorfmann
skorfmann / custom-data-source.ts
Last active February 3, 2021 11:05
This uses the external Terraform provider (https://registry.terraform.io/providers/hashicorp/external) to build ad hoc data sources for cdktf.
import { Construct, } from "constructs";
import { Resource, TerraformResource } from 'cdktf';
import * as fs from "fs";
import * as path from 'path'
import { DataExternal } from "../.gen/providers/external"
export interface CustomDataSourceConfig<Inputs, Outputs> {
code(input: Inputs): Promise<Outputs>
inputs: Inputs;
dependsOn?: TerraformResource[];
import { Construct, Tag } from '@aws-cdk/core';
import { App, Stack } from '../../../packages/@terrastack/core';
import { AwsProvider, AwsS3Bucket, AwsIamPolicy } from '../.generated/aws';
import { PolicyDocument, PolicyStatement, AnyPrincipal, Effect } from "@aws-cdk/aws-iam"
const app = new App();
class MyBucketStack extends Stack {
constructor(scope: Construct, ns: string) {
super(scope, ns);
@skorfmann
skorfmann / Readme.md
Last active January 4, 2021 15:35
Stub Lambda Functions in your CDK Stack

Stubbing Lambda Functions in your CDK Stack

Given you have a stack with one or more Lambda functions (e.g. as part of a Step Functions state machine), it can be pretty useful to stub long running parts with a known response.

This makes use of cdk Aspects, which allows modifying all or a filtered subsset of resources for a given scope (Stack, Construct).

In addition this leverages raw overrides to remove the original code of the Lambda function.

Please note, that the stub has to be in Python or NodeJS, since inlining code is only supported by those runtimes.

@skorfmann
skorfmann / event-proxy-lambda.js
Last active September 2, 2022 12:09
AWS CDK EventBridge -> AppSync Subscriptions Proxy
const AWS = require('aws-sdk')
const appsync = require('aws-appsync');
const gql = require('graphql-tag');
require('cross-fetch/polyfill');
exports.handler = async function(event) {
const graphqlClient = new appsync.AWSAppSyncClient({
url: process.env.APPSYNC_ENDPOINT_URL,
region: process.env.AWS_REGION,
auth: {
import ecs = require('@aws-cdk/aws-ecs');
import { DockerImageAsset } from '@aws-cdk/aws-ecr-assets';
import path = require('path')
export interface FooFargateProps {
}
export class FooFargate extends cdk.Construct {
constructor(scope: cdk.Construct, id: string, props: FooFargateProps = {}) {