Skip to content

Instantly share code, notes, and snippets.

iMil iMilnb

Block or report user

Report or block iMilnb

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
iMilnb /
Last active Apr 7, 2020
AWS Terraform configuration: Stream CloudWatch Logs to ElasticSearch


This snippet is a sample showing how to implement CloudWatch Logs streaming to ElasticSearch using terraform. I wrote this gist because I didn't found a clear, end-to-end example on how to achieve this task. In particular, I understood the resource "aws_lambda_permission" "cloudwatch_allow" part by reading a couple of bug reports plus this stackoverflow post.

The js file is actually the Lambda function automatically created by AWS when creating this pipeline through the web console. I only added a endpoint variable handling so it is configurable from terraform.

iMilnb /
Last active Mar 3, 2020
Programmatically manipulate AWS resources with boto3 - a quick hands on

boto3 quick hands-on

This documentation aims at being a quick-straight-to-the-point-hands-on AWS resources manipulation with [boto3][0].

First of all, you'll need to install [boto3][0]. Installing it along with [awscli][1] is probably a good idea as

  • [awscli][1] is boto-based
  • [awscli][1] usage is really close to boto's
iMilnb /
Created Aug 2, 2015
Basic Flask snippet to handle AWS SNS messages and subscription
from flask import Flask, request
import requests
import json
app = Flask(__name__)
def msg_process(msg, tstamp):
js = json.loads(msg)
msg = 'Region: {0} / Alarm: {1}'.format(
js['Region'], js['AlarmName']
iMilnb /
Last active Feb 9, 2020
Imports AWS EC2 instance metadata ( into a python dict
#!/usr/bin/env python
import requests
import json
# Converts AWS EC2 instance metadata to a dictionary
def load():
metaurl = ''
# those 3 top subdirectories are not exposed with a final '/'
iMilnb /
Last active Sep 20, 2019
Fetch monit XML status URL content, transform it to JSON and display a status report
#!/usr/bin/env python
import requests
import xmltodict
import json
import os
import sys
with open('{0}/.getmonitrc'.format(os.path.expanduser('~'))) as f:
cf = json.loads(
iMilnb / tf_debug.log
Created Dec 6, 2018
terraform debug for aws_ses_receipt_rule bug report
View tf_debug.log
terraform apply tfplan
2018/12/06 14:44:36 [INFO] Terraform version: 0.11.10 17850e9a55d33c43d7c31fd6ac122ba97a51d899
2018/12/06 14:44:36 [INFO] Go runtime version: go1.11.1
2018/12/06 14:44:36 [INFO] CLI args: []string{"/home/imil/pkg/bin/terraform", "apply", "tfplan"}
2018/12/06 14:44:36 [DEBUG] Attempting to open CLI config file: /home/imil/.terraformrc
2018/12/06 14:44:36 [DEBUG] File doesn't exist, but doesn't need to. Ignoring.
2018/12/06 14:44:36 [INFO] CLI command args: []string{"apply", "tfplan"}
2018/12/06 14:44:36 [INFO] command: initializing local backend from plan (not set)
2018/12/06 14:44:36 [DEBUG] checking for provider in "."
2018/12/06 14:44:36 [DEBUG] checking for provider in "/home/imil/pkg/bin"
iMilnb / collectd.conf
Last active Oct 10, 2018
collectd-python plugin to read data from
View collectd.conf
<Plugin python>
ModulePath "/home/imil/collectd"
Import "ethermine"
<Module ethermine>
wallet "0xf00f00f00"
interval "300"
url ""
iMilnb /
Last active Sep 26, 2018
Custom AWS sandbox using packer, Troposphere / CloudFormation and Ansible

packer template

  "variables": {
    "aws_access_key": "",
    "aws_secret_key": ""
  "builders": [{
    "type": "amazon-ebs",
iMilnb /
Created May 27, 2015
AWS EC2 simple manipulation script using python and boto3
#!/usr/bin/env python
# Simple [boto3]( based EC2 manipulation tool
# To start an instance, create a yaml file with the following format:
# frankfurt:
# - subnet-azb:
# - type: t2.micro
# image: image-tagname
iMilnb / gist:ba7b46dfc854544bf3c8
Last active Sep 4, 2018
Dynamic ipsec and racoon configuration generation for AWS EC2 VPN using boto3 and Jinja2
View gist:ba7b46dfc854544bf3c8
#!/usr/bin/env python
# $ cat ipsec_conf.tmpl
# {#
# cgw_in_addr: customer_gateway tunnel_inside_address ip_address
# cgw_in_cidr: customer_gateway tunnel_inside_address network_cidr
# vgw_in_addr: vpn_gateway tunnel_inside_address ip_address
# vgw_in_cidr: vpn_gateway tunnel_inside_address network_cidr
# cgw_out_addr: customer_gateway tunnel_outside_address
You can’t perform that action at this time.