<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.rainsbrook.co.uk/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.rainsbrook.co.uk/wiki/feed.php">
        <title>Rainsbrook - aws</title>
        <description></description>
        <link>https://www.rainsbrook.co.uk/wiki/</link>
        <image rdf:resource="https://www.rainsbrook.co.uk/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-05-01T02:44:49+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:account&amp;rev=1758207049&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:apigateway&amp;rev=1766141275&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:bash-read-in-values&amp;rev=1758207318&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cli&amp;rev=1768996283&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-index&amp;rev=1767957148&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-lambda&amp;rev=1748597930&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-parameters-mappings-refs&amp;rev=1771323827&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-s3&amp;rev=1760627186&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-terraformstate&amp;rev=1748598092&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_big_example&amp;rev=1748598185&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_mappings_outputs&amp;rev=1748598218&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_refs&amp;rev=1748598246&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudwatch&amp;rev=1750866041&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:codebuild&amp;rev=1756807441&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:deploy_cloudformation_from_cli&amp;rev=1748598287&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:dynamodb-local&amp;rev=1652721059&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:dynamodb&amp;rev=1760353299&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ebsvolumes&amp;rev=1735921749&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ec2&amp;rev=1748423815&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ec2_auto-scaling-group-launch_configurations&amp;rev=1748597729&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ecr&amp;rev=1710245331&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ecs&amp;rev=1710249908&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-assume-role-in-other-account&amp;rev=1724786516&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-key-age&amp;rev=1710500774&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-policy-yaml&amp;rev=1730302928&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam&amp;rev=1756743661&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:jq-the-json-army-toolkit&amp;rev=1758207687&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda-general&amp;rev=1716888101&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda-layer-howtouse-boto3&amp;rev=1748617555&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda&amp;rev=1750088229&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambdabased-lambdalayer-orig&amp;rev=1763636348&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambdabased-lambdalayer&amp;rev=1750088280&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda_layers&amp;rev=1767624915&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:list_accounts_in_org&amp;rev=1751377075&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:organisations&amp;rev=1758811905&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:parameterstore&amp;rev=1730982471&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:query-with-jq&amp;rev=1776433133&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:region-loop&amp;rev=1748426578&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:route53&amp;rev=1611572561&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:s3&amp;rev=1717497548&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:securityhub&amp;rev=1732558804&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ses&amp;rev=1643299304&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sns&amp;rev=1752065398&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sqs&amp;rev=1643299258&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ssm&amp;rev=1742398564&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sso&amp;rev=1774970289&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:start&amp;rev=1748598495&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:statemachine&amp;rev=1643299046&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sts&amp;rev=1767787178&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:tags&amp;rev=1768389838&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:timestream&amp;rev=1758208046&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:vpc-parameterstore&amp;rev=1758204550&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:vpc&amp;rev=1753967286&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:yaml-in-aws&amp;rev=1748598135&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.rainsbrook.co.uk/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>Rainsbrook</title>
        <link>https://www.rainsbrook.co.uk/wiki/</link>
        <url>https://www.rainsbrook.co.uk/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:account&amp;rev=1758207049&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-18T14:50:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>account</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:account&amp;rev=1758207049&amp;do=diff</link>
        <description>Account

aws sts get-caller-identity will always work even if you have no credentials for anything else.


THIS_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:apigateway&amp;rev=1766141275&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-19T10:47:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>apigateway</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:apigateway&amp;rev=1766141275&amp;do=diff</link>
        <description>API Gateway

Intro

Lambda

Test lambda to show different methods



import json
# Example data

data = {
    &quot;items&quot;: [
        {&quot;id&quot;: 1, &quot;name&quot;: &quot;Item 1&quot;, &quot;price&quot;: 10.99},
        {&quot;id&quot;: 2, &quot;name&quot;: &quot;Item 2&quot;, &quot;price&quot;: 15.99},
        {&quot;id&quot;: 3, &quot;name&quot;: &quot;Item 3&quot;, &quot;price&quot;: 20.99},
    ]
}

def lambda_handler(event, context):
    # Determine the HTTP method of the request
    http_method = event[&quot;httpMethod&quot;]
    # Handle GET request
    if http_method == &quot;GET&quot;:
        # Return the data in the res…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:bash-read-in-values&amp;rev=1758207318&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-18T14:55:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>bash-read-in-values</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:bash-read-in-values&amp;rev=1758207318&amp;do=diff</link>
        <description>BASH read in values to script


#!/bin/bash

CONTROL_ID=$1

if [ -z ${CONTROL_ID} ]; then 
        echo &quot;Please give control id as a parameter, eg ./check.sh IAM.x&quot;;
        exit 1
fi


echo &quot;Set a profile with the AWS SSO:-&quot;
echo &quot;aws configure sso --use-device-code&quot;
echo &quot;profile name needs to be 'OrgDeployRole' &quot;

read -p &quot;Is this set (y / n)? &quot; yn
case $yn in 
        y|yes ) echo &quot;ok, using control:- ${CONTROL_ID}&quot;;;
        n|no )  echo &quot;exiting... You need to set this up.&quot;;
        exit;;…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cli&amp;rev=1768996283&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-21T11:51:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cli</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cli&amp;rev=1768996283&amp;do=diff</link>
        <description>Amazon Web Services CLI

Initial install

AWS cli tool is written in python, and as python3 is the most recent, this is what will be installed. The awscli tool is installed through pip3. Consider installing this in a virtual environment (Python Virtual Env )


# yum install python3

... edited...

Install  1 Package (+3 Dependent packages)

Total download size: 11 M
Installed size: 51 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): python3-3.7.0-0.20.rc1.amzn2.0.1.x86_64.rpm                …</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-index&amp;rev=1767957148&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-09T11:12:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudformation-index</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-index&amp;rev=1767957148&amp;do=diff</link>
        <description>AWS Cloud Formation

Code Examples

Deploy CloudFormation from cli 


Using !Ref 


S3 and !Join 


Parameters, Mappings, and !Refs 


Cloud Formation Mappings and Output Section 


Example from course for best practice example 


AWS Lambda Function with Tags 


YAML 


AWS IAM policy in YAML 


VPC Parameter store 


IAM Policy 


Tags 


Set numeric value to string

Force an string value instead of integer (join two strings with nothing, “”):-
!Join [&quot;&quot;, [&quot;00&quot;, &quot;1002899&quot;]]
Outputs and Exports…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-lambda&amp;rev=1748597930&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:38:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudformation-lambda</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-lambda&amp;rev=1748597930&amp;do=diff</link>
        <description>lambda yaml cloudformation


AWSTemplateFormatVersion: 2010-09-09
Parameters:
  var1:
    Type: CommaDelimitedList
    Description: general variable
Resources:
  LambdaRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lambda.amazonaws.com
            Action:
              - 'sts:AssumeRole'
  LambdaPolicy:
    Type: 'AWS::IAM::Pol…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-parameters-mappings-refs&amp;rev=1771323827&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-17T10:23:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudformation-parameters-mappings-refs</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-parameters-mappings-refs&amp;rev=1771323827&amp;do=diff</link>
        <description>Parameters, Mappings, and !Refs

Parameters


---
Parameters:
    ParameterTest:
        Type: String
        Description: Enter t2.micro, m1.small, or m1.large. Default is t2.micro.

Resources:
  BasicParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: TestPara
      Type: String
      Value: !Ref ParameterTest
      Description: SSM Parameter test.
      Tags:
        Environment: DEV


000</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-s3&amp;rev=1760627186&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-16T15:06:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudformation-s3</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-s3&amp;rev=1760627186&amp;do=diff</link>
        <description>S3 buckets

S3 is an Object store not a filesystem although at first glance, it can seem like one.

Although S3 buckets are tied to a region, the name for a bucket must be globally unique. This can pose a problem in deploying code developed in Dev to Prod as if bucket names are hard coded, there will be a conflict beween Prod and Dev on deployment. Editing code between deployments to change a bucket name is not a great idea, but introducing a limited amount of randomness to the name can avoid th…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-terraformstate&amp;rev=1748598092&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:41:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudformation-terraformstate</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation-terraformstate&amp;rev=1748598092&amp;do=diff</link>
        <description>Cloudformation for Terraform State Files and Lock Table

Terraform requires a state bucket and lock table before it can do any work, but you can't create these in Terraform because it needs them to do anything.... vicious circle.

I've used Cloud Formation to create these, then Terraform will work as expected.</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_big_example&amp;rev=1748598185&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:43:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudformation_big_example</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_big_example&amp;rev=1748598185&amp;do=diff</link>
        <description>BIG Example

From a course.


$ aws cloudformation get-template --stack-nameMyStack --query TemplateBody --output text

AWSTemplateFormatVersion: &quot;2010-09-09&quot;
Description: &gt;
  Template to build the Web Tier
Parameters:
  VPCID:
    Description: VPC ID from the Base Networking Stack
    Type: String
  PUBSUBA:
    Description: Public Subnet A ID
    Type: String
  PUBSUBB:
    Description: Public Subnet B ID
    Type: String
  AppNamePram:
    Description: MyApp
    Type: String
  AppVerPram:
   …</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_mappings_outputs&amp;rev=1748598218&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:43:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudformation_mappings_outputs</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_mappings_outputs&amp;rev=1748598218&amp;do=diff</link>
        <description>Cloud Formation Mappings

Adding in Mappings, Parameters, UserData and an Outputs section.


Parameters:
  ServiceName:
    Description: &quot;Stack Name&quot;
    Type: String
  InstanceTypePara:
    Type: String
    Default: t2.micro
    AllowedValues:
      - t2.micro
      - m1.small
      - m1.large
    Description:
      EC2 instances
  SSHkey:
    Description: AJS ssh key
    Type: AWS::EC2::KeyPair::KeyName

Mappings:
  RegionMap:
    eu-west-1:
      AMI: ami-07d9160fa81ccffb5 # Amazon Linux AMI …</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_refs&amp;rev=1748598246&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:44:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudformation_refs</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudformation_refs&amp;rev=1748598246&amp;do=diff</link>
        <description>Create a ec2 instance and security group tied together with ''!Ref'' and an s3 bucket.


Resources:
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-07d9160fa81ccffb5 # Amazon Linux AMI in Ireland
      Tags:
        - Key: Name
          Value: AJS -  simple EC2 example
        - Key: email
          Value: myname@company.co.uk
        - Key: BuiltBy
          Value: CloudFormation
        - Key: JoinTest
          Value: !Join [ &quot;:&quot;, […</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudwatch&amp;rev=1750866041&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-25T15:40:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cloudwatch</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:cloudwatch&amp;rev=1750866041&amp;do=diff</link>
        <description>Cloudwatch

Put values in to Cloudwatch

This was to make metrics available to EC2 autoscaling


$ aws cloudwatch put-metric-data --metric-name current-jobs-reserved --namespace asid_ident --value 0

$ aws cloudwatch put-metric-data --metric-name current-jobs-ready --namespace asid_ident  --value 0</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:codebuild&amp;rev=1756807441&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-02T10:04:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>codebuild</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:codebuild&amp;rev=1756807441&amp;do=diff</link>
        <description>AWS codebuild

Python in Lambda

buildspec.yaml


version: 0.2

phases:
  install:
    commands:
      - echo &quot;Installing boto3 with pip&quot;
      - pip install boto3

  build:
    commands:
      - echo &quot;Running reports.py&quot;
      - python3 -c 'from reports import lambda_handler; lambda_handler({}, {})'
      - echo &quot;Finished reports.py&quot;</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:deploy_cloudformation_from_cli&amp;rev=1748598287&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:44:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>deploy_cloudformation_from_cli</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:deploy_cloudformation_from_cli&amp;rev=1748598287&amp;do=diff</link>
        <description>Deploy CloudFormation from cli

This bash script uses aws cli to deploy a stack compared to using the web GUI to create a stack. Main advantage is for automation and repeatability:-


#!/bin/bash
#Written Andrew Stringer 01/03/2021
#Purpose to deploy a cloudformation stack from the cli.

STACK_NAME='mystack-a'
TEMPLATE_BODY='file://mystack-a.yaml'
REGION='eu-west-1'
PROFILE=$1

TAGS=&quot;Key=Name,Value=${STACK_NAME} Key=Build_Method,Value=CloudFormation Key=CostCentre,Value=12345 Key=Owner,Value=MY_…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:dynamodb-local&amp;rev=1652721059&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-16T17:10:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dynamodb-local</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:dynamodb-local&amp;rev=1652721059&amp;do=diff</link>
        <description>Local install of AWS DynamoDB

Notes

Note, the local install still relies on keys and connecting to IAM on the AWS mothership, so it is not really an isolated setup.

&lt;https://medium.com/@vikramaroskar/setting-up-local-dynamodb-as-a-service-1908919d4347&gt;

Install to /usr/local/bin/dynamodb/

Start DynamoDB as service


root@test-pythonwebserver:~# cat /etc/systemd/system/dynamodb.service
[Unit]
Description=Dynamo DB Local Service
[Service]
User=root
# The configuration file application.properti…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:dynamodb&amp;rev=1760353299&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-13T11:01:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dynamodb</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:dynamodb&amp;rev=1760353299&amp;do=diff</link>
        <description>Dynamo DB CLI examples

Local install of AWS DynamoDB

List Tables:-


$ aws dynamodb --profile nonprod_admin list-tables
{
    &quot;TableNames&quot;: [
        &quot;lifecycle-exceptions&quot;, 
        &quot;github_sync&quot;
    ]
}



$ aws dynamodb list-tables --profile nonprod_admin | jq .[][] | grep -i 'dev\|test\|nonprod'
&quot;dev-access&quot;
&quot;dev-accounts&quot;
&quot;dev-historic&quot;
&quot;dev-accounts-data&quot;
&quot;ami-builder-dev-account-contacts-data&quot;
&quot;ami-builder-dev-pager-duty-service-data&quot;
&quot;sharedservices-statefiles-nonprod&quot;</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ebsvolumes&amp;rev=1735921749&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-03T16:29:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ebsvolumes</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ebsvolumes&amp;rev=1735921749&amp;do=diff</link>
        <description>EBS Volumes

Elastic Block Storage (EBS) volumes are block storage (as opposed to object stores such as S3) and are typically attached to EC2 instances.

Show encryption status of EBS

Best practice is for EBS volumes to be encrypted. This script will show the volume status for each volume in the account and what it is attached to (if any). It is possible to have a volume attached to multiple ec2 instances but EBS does not handle file locking etc, so this is unusual.</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ec2&amp;rev=1748423815&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-28T09:16:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ec2</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ec2&amp;rev=1748423815&amp;do=diff</link>
        <description>EC2

Listing instances


root@ftphost02:~/.aws# aws ec2 describe-instances --output table --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value'
-------------------
|DescribeInstances|
+-----------------+
|  Node1          |
|  FTP            |
+-----------------+


root@ftphost02:~/.aws# aws ec2 describe-instances --output table --query 'Reservations[].Instances[].[join(`,`,Tags[?Key==`Name`].Value),State.Name]'
----------------------------
|     DescribeInstances    |
+--------------+--…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ec2_auto-scaling-group-launch_configurations&amp;rev=1748597729&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:35:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ec2_auto-scaling-group-launch_configurations</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ec2_auto-scaling-group-launch_configurations&amp;rev=1748597729&amp;do=diff</link>
        <description>AWS Auto Scaling Groups / Launch Configurations

In AWS in order to build an auto scaling group, we need to configure a Launch Configuraton, this is a template which defines common parameters for each ec2 instance launched in to an auto scaling group.</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ecr&amp;rev=1710245331&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-12T12:08:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ecr</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ecr&amp;rev=1710245331&amp;do=diff</link>
        <description>ECR


$ aws ecr describe-repositories --profile nonprod_admin | jq .[][].repositoryName
&quot;ubuntu1804-infradevtools-container&quot;



Brain Dump FIXME


$ aws ecr create-repository --repository-name web2048
{
    &quot;repository&quot;: {
        &quot;repositoryUri&quot;: &quot;356565822870.dkr.ecr.us-west-2.amazonaws.com/web2048&quot;,
        &quot;imageScanningConfiguration&quot;: {
            &quot;scanOnPush&quot;: false
        },
        &quot;encryptionConfiguration&quot;: {
            &quot;encryptionType&quot;: &quot;AES256&quot;
        },
        &quot;registryId&quot;: &quot;356…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ecs&amp;rev=1710249908&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-12T13:25:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ecs</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ecs&amp;rev=1710249908&amp;do=diff</link>
        <description>Amazon ECS cluster


$ aws ecs create-cluster --cluster-name web2048
{
    &quot;cluster&quot;: {
        &quot;status&quot;: &quot;ACTIVE&quot;,
        &quot;defaultCapacityProviderStrategy&quot;: [],
        &quot;statistics&quot;: [],
        &quot;capacityProviders&quot;: [],
        &quot;tags&quot;: [],
        &quot;clusterName&quot;: &quot;web2048&quot;,
        &quot;settings&quot;: [
            {
                &quot;name&quot;: &quot;containerInsights&quot;,
                &quot;value&quot;: &quot;disabled&quot;
            }
        ],
        &quot;registeredContainerInstancesCount&quot;: 0,
        &quot;pendingTasksCount&quot;: 0,
  …</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-assume-role-in-other-account&amp;rev=1724786516&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T19:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>iam-assume-role-in-other-account</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-assume-role-in-other-account&amp;rev=1724786516&amp;do=diff</link>
        <description>IAM - Assume role in other account

Framework to assume a role in a different account.


#!/bin/bash

# Reads in a list of account numbers, assumes a set role
# (with the required policy to perform whatever...) and does whatever.

FILENAME='accountlist.txt'
export AWS_DEFAULT_REGION='eu-west-2'

while read -r ACCOUNT;
  do
    echo &quot;Using ${ACCOUNT} to get who I am:-&quot;
    aws sts get-caller-identity
    
    echo &quot;Changing role.&quot;
    
    # get credentials to use in remote account
    aws sts as…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-key-age&amp;rev=1710500774&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-15T11:06:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>iam-key-age</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-key-age&amp;rev=1710500774&amp;do=diff</link>
        <description>iam-key-age


# Written 24/09/2021 by Andrew Stringer
# Prurpose is to detect users with AWS IAM access keys older than a certain number of days (accesskey below)
# Should be run once per week via CloudWatch Events. 
# Uses the &quot;email&quot; value in Tags, so these need to be set for users.

import boto3, os, time, datetime, sys, json
from datetime import date
from botocore.exceptions import ClientError


# age of keys
accesskey = 180
AWS_REGION = 'eu-west-2'

iam = boto3.client('iam')
email_list = []…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-policy-yaml&amp;rev=1730302928&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-30T15:42:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>iam-policy-yaml</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam-policy-yaml&amp;rev=1730302928&amp;do=diff</link>
        <description>AWS IAM policy in YAML

This reads Account Number in from Parameter Store and uses it with a !Join, IAM policies normally are in JSON, but in CF can be written in YAML, and CF translates to JSON on the fly:-


---
AWSTemplateFormatVersion: 2010-09-09
Description: Security-Hub-Report
Parameters:
  AccountNumber:
    Type: AWS::SSM::Parameter::Value&lt;AccountNumber&gt;
    Default: 56788765
    Description: AccountNUmber

Resources:
  Type: AWS::IAM::Policy
  Properties:
    PolicyName: Silly-Policy
  …</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam&amp;rev=1756743661&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-01T16:21:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>iam</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:iam&amp;rev=1756743661&amp;do=diff</link>
        <description>IAM

Get unused security groups


#!/bin/bash

#Get all security groups and check against network interfaces thety are allocated to.
echo &quot;&quot; &gt; security_groups.txt
for SG in
$(aws ec2 describe-security-groups --profile nonprod_admin | jq --raw-output '.[][] | [.GroupId, .GroupName, .Description ] | @csv')
do
echo $SG
#echo $SG | tee  security_groups.txt | cut -f1 -d | aws ec2 describe-network-interfaces --filters Name=group-id,Values=${SG} --profile nonprod_admin
done

# Clean up our temporary me…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:jq-the-json-army-toolkit&amp;rev=1758207687&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-18T15:01:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>jq-the-json-army-toolkit</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:jq-the-json-army-toolkit&amp;rev=1758207687&amp;do=diff</link>
        <description>JQ - the toolkit for slicing JSON

jq - json parser</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda-general&amp;rev=1716888101&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-28T09:21:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lambda-general</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda-general&amp;rev=1716888101&amp;do=diff</link>
        <description>AWS Lambda

Lambda CLI


$ aws lambda list-functions --profile nonprod_admin | jq .[][].FunctionName | grep -i 'dev\|test'


in lambda python, read tags in from Lambda environment:-


import os
TAGS = [{&quot;Key&quot;: k, &quot;Value&quot;: v} for k, v in json.loads(os.environ[&quot;TAGS&quot;]).items()]

create_something
 Tags=TAGS</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda-layer-howtouse-boto3&amp;rev=1748617555&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T15:05:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lambda-layer-howtouse-boto3</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda-layer-howtouse-boto3&amp;rev=1748617555&amp;do=diff</link>
        <description>How to use a Lambda Layer

Terraform to deploy a lambda function with a layer, this deploys Boto3 as a layer, a bit strange but I needed the functionality to create an “Additional Checksum” with an s3 copy, this was not included in the version of Boto3 deployed with Lambda/Python.</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda&amp;rev=1750088229&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-16T15:37:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lambda</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda&amp;rev=1750088229&amp;do=diff</link>
        <description>AWS Lambda

AWS Lambda

How to use a Lambda Layer

Lambda Layers

Lambda based Lambda Layer generator</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambdabased-lambdalayer-orig&amp;rev=1763636348&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-20T10:59:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lambdabased-lambdalayer-orig</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambdabased-lambdalayer-orig&amp;rev=1763636348&amp;do=diff</link>
        <description>Orig layer gen

to check and edit.....


# more layer-create.py 
import json
# import urllib.request
import os
import shutil
import sys
import subprocess
import zipfile
import boto3
import botocore


from os import listdir
from os.path import isfile, join

def lambda_handler(event, context):
    # https://stackoverflow.com/questions/58648739/how-to-check-if-python-package-is-latest-version-programmatically?noredirect=1&amp;lq=1
    # https://www.digitalocean.com/community/tutorials/how-to-use-subpro…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambdabased-lambdalayer&amp;rev=1750088280&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-16T15:38:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lambdabased-lambdalayer</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambdabased-lambdalayer&amp;rev=1750088280&amp;do=diff</link>
        <description>Lambda based Lambda Layer generator

This idea follows on from Lambda Layers created from a BASH script. Simply put, it doesn't seem like a cloud native way of working. Spinning up either a Linux VM (if you are stuck using windows) or ec2 instance just to build a Lambda layer is an overkill and probably difficult to build with regard to running and automating. 
I had the idea to use Lambda to build and import the layer, it could be triggered regularly from CloudWatch events and to allow the laye…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda_layers&amp;rev=1767624915&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-05T14:55:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lambda_layers</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:lambda_layers&amp;rev=1767624915&amp;do=diff</link>
        <description>Lambda Layers

Script to create boto3 lambda layer with latest version of boto3 and push to AWS.

See here for a Lambda based Lambda Layer generator.

How to use a Lambda Layer.


#!/bin/bash
printf &quot;Build script for AWS boto3 Lambda Layer. \n&quot;
printf &quot;=======================================. \n&quot;

printf &quot;Updating system. \n&quot;
sudo yum update -y

printf &quot;\n&quot;
printf &quot;Update python3 pip. \n&quot;
python3 -m pip install --upgrade pip

printf &quot;\n&quot;
printf &quot;aws cli version is:-  &quot;
aws --version

printf &quot;\n&quot;…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:list_accounts_in_org&amp;rev=1751377075&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-01T13:37:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>list_accounts_in_org</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:list_accounts_in_org&amp;rev=1751377075&amp;do=diff</link>
        <description>list_accounts_in_organisations.sh


#!/bin/bash

# Lists just the accounts in an organiation,
# suitable for redirecting to a file to iterate over
# for processing something in all accounts.

# This gives a text output, the default is json, --output table is also valid.

aws organizations list-accounts --query 'Accounts[*].[Id]' --output text

# Using jq to parse the JSON
aws organizations list-accounts | jq -r '.Accounts.[].Id'</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:organisations&amp;rev=1758811905&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-25T14:51:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>organisations</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:organisations&amp;rev=1758811905&amp;do=diff</link>
        <description>Organisations

Get Root ID

With text output:-
OrgRoot=$(aws organizations list-roots --query 'Roots[0].Id' --output text)
Using JQ:-
OrgToot=$(aws organizations list-roots | jq -r .Roots.[0].Id)
Get a list of OU's in an organisation
OU_IDs=$(aws organizations describe-organization --query 'Organization.Id' --output text)</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:parameterstore&amp;rev=1730982471&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-07T12:27:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>parameterstore</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:parameterstore&amp;rev=1730982471&amp;do=diff</link>
        <description>AWS Parameter Store (SSM)

AWS Cli

Set a parameter


#aws ssm put-parameter --name &quot;test123&quot; --type &quot;String&quot; --value &quot;MyValue&quot;
#{
#  &quot;Version&quot;: 1,
#  &quot;Tier&quot;: &quot;Standard&quot;
#}



Note:-
If the Value contains a URL, it will create an error:-
$ aws ssm put-parameter --name &quot;/repo/testpar3&quot; --value &quot;https://server/repo3.git&quot; --description &quot;repo_backup&quot; --type &quot;String&quot;

Error parsing parameter '--value': Unable to retrieve https://server/repo3.git: Could not connect to the endpoint URL: &quot;https://server…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:query-with-jq&amp;rev=1776433133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-17T13:38:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>query-with-jq</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:query-with-jq&amp;rev=1776433133&amp;do=diff</link>
        <description>Query with jq

Just a fabricated joke to have a page starting with Q


STANDARDS=$(aws securityhub list-standards-control-associations  --security-control-id ${CONTROL_ID} | jq -r .StandardsControlAssociationSummaries.[].StandardsArn)


Seriously, jq is a really useful Linux command to process and extract values from JSON formatted data - See</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:region-loop&amp;rev=1748426578&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-28T10:02:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>region-loop</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:region-loop&amp;rev=1748426578&amp;do=diff</link>
        <description>AWS loop through regions


cat region_loop.sh 
#!/bin/bash

REGIONS=('us-east-1' 'us-east-2' 'us-west-1' 'us-west-2' 'eu-west-1' 'eu-west-2')

for REGION in &quot;${REGIONS[@]}&quot;; do
  echo &quot;${REGION}&quot;
done




$ ./region_loop.sh 
us-east-1
us-east-2
us-west-1
us-west-2
eu-west-1
eu-west-2</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:route53&amp;rev=1611572561&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-25T11:02:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>route53</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:route53&amp;rev=1611572561&amp;do=diff</link>
        <description>Route 53 DNS</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:s3&amp;rev=1717497548&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-06-04T10:39:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>s3</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:s3&amp;rev=1717497548&amp;do=diff</link>
        <description>S3


# create path in s3 for backup to export to
print(&quot;Create s3 path&quot;)
s3session.put_object(Bucket=bucket_london, Key=('redis_elasticache'+'/'))



$ aws s3 ls --profile nonprod_admin | grep -i 'dev\|test\|nonprod'
$ for B in $(aws s3 ls --profile nonprod_admin | grep -i 'dev\|test\|nonprod' | cut -f3 -d' ');  
do 
 echo -n ${B}&quot;: &quot;
 aws s3 ls --summarize --human-readable --recursive s3://${B} --profile nonprod_admin | grep -i total | tr -d '\n'
 echo &quot;&quot; 
done

cdn-frontend  Total Objects: 98 …</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:securityhub&amp;rev=1732558804&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-25T18:20:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>securityhub</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:securityhub&amp;rev=1732558804&amp;do=diff</link>
        <description>Security Hub

AWS Security Hub monitors your account and suggests security improvements you can make, these scan results are called Findings and are assessed against well known security standards from AWS, CIS and NIST and others.


$ aws securityhub describe-standards
{
    &quot;Standards&quot;: [
        {
            &quot;StandardsArn&quot;: &quot;arn:aws:securityhub:eu-west-2::standards/aws-foundational-security-best-practices/v/1.0.0&quot;,
            &quot;Name&quot;: &quot;AWS Foundational Security Best Practices v1.0.0&quot;,
       …</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ses&amp;rev=1643299304&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-27T16:01:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ses</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ses&amp;rev=1643299304&amp;do=diff</link>
        <description>SES


$ aws ses list-configuration-sets  --profile nonprod_admin | jq .[][] | grep -i 'dev\|test\|nonprod'
  &quot;Name&quot;: &quot;dev-ses-config&quot;</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sns&amp;rev=1752065398&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-09T12:49:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sns</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sns&amp;rev=1752065398&amp;do=diff</link>
        <description>SNS

Amazon Simple Notification system, uses “Topics” which users subscribe to, similar to MQTT.


$ aws sns list-topics --profile nonprod_admin | jq .[][].TopicArn | grep -i 'dev\|test\|nonprod'
&quot;arn:aws:sns:eu-west-1:123456789234:AMI-lifecycle-test-ajs&quot;
&quot;arn:aws:sns:eu-west-1:123456789234:dev-api-jwt-authoriser-dlq&quot;
&quot;arn:aws:sns:eu-west-1:123456789234:dev-approval-workflow-approval-dlq&quot;</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sqs&amp;rev=1643299258&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-27T16:00:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sqs</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sqs&amp;rev=1643299258&amp;do=diff</link>
        <description>SQS

Simple Queue service


$ aws sqs list-queues --profile nonprod_admin | jq .[][] | grep -i 'dev\|test\|nonprod'
&quot;https://eu-west-1.queue.amazonaws.com/123456781234/AJS-testQueue&quot;
&quot;https://eu-west-1.queue.amazonaws.com/123456781234/dev-archive-data-queue&quot;</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ssm&amp;rev=1742398564&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-19T15:36:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ssm</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:ssm&amp;rev=1742398564&amp;do=diff</link>
        <description>Simple Systems Manager (SSM)

Session Manager

Web gui way to get ssh console.

&lt;FIXME&gt;

&lt;https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-create-iam-instance-profile.html&gt;</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sso&amp;rev=1774970289&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-31T15:18:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sso</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sso&amp;rev=1774970289&amp;do=diff</link>
        <description>Automating SSO

AWS sso has changed, so if you are running this on a headless system over ssh for example, use aws configure sso --use-device-code. This will produce an option to open a browser and approve access there.


$ aws configure sso --use-device-code &lt;cr&gt;

SSO session name (Recommended): test123
SSO start URL [None]: https://d-1a2345ab23.awsapps.com/start/#
SSO region [None]: eu-west-1
SSO registration scopes [sso:account:access]:
Attempting to automatically open the SSO authorization p…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:start&amp;rev=1748598495&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:48:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:start&amp;rev=1748598495&amp;do=diff</link>
        <description>AWS Amazon Web Services



Pages in this namespace:

	* account
	* apigateway
	* bash-read-in-values
	* cli
	* cloudformation-index
	* cloudformation-lambda
	* cloudformation-parameters-mappings-refs
	* cloudformation-s3
	* cloudformation-terraformstate
	* cloudformation_big_example
	* cloudformation_mappings_outputs
	* cloudformation_refs
	* cloudwatch
	* codebuild
	* deploy_cloudformation_from_cli
	* dynamodb
	* dynamodb-local
	* ebsvolumes
	* ec2
	* ec2_auto-scaling-group-launch_configuration…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:statemachine&amp;rev=1643299046&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-27T15:57:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>statemachine</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:statemachine&amp;rev=1643299046&amp;do=diff</link>
        <description>StepFunctions and State Machine

List state machines


$ aws stepfunctions list-state-machines --profile nonprod_admin | jq .[][].name | grep -i 'dev\|test\|nonprod'
&quot;dev-approval-workflow&quot;
&quot;dev-get-accounts&quot;
&quot;ami-lifecycle-dev-ami-statemachine&quot;


Core Step Function</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sts&amp;rev=1767787178&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-07T11:59:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sts</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:sts&amp;rev=1767787178&amp;do=diff</link>
        <description>AWS Security Token Service

Who am I??

Deep philosophy the AWS way, use sts get-caller-identity:-


$ aws sts get-caller-identity --color on
{
    &quot;UserId&quot;: &quot;AERRTT%ESSXXXXPZZZZZP:User1234&quot;,
    &quot;Account&quot;: &quot;987667892345&quot;,
    &quot;Arn&quot;: &quot;arn:aws:sts::987667892345:assumed-role/AWSReservedSSO_PLATFORM-Administrator_d4a391q2z49ade26/User1234&quot;
}</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:tags&amp;rev=1768389838&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-14T11:23:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tags</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:tags&amp;rev=1768389838&amp;do=diff</link>
        <description>Tags

CLI


response = iam_client.tag_role(
    RoleName='MyRole',
    Tags=[
           {
           'Key': 'Repo',
           'Value': 'MyRepo'
           },
           {
           'Key': 'CliCreated',
           'Value': 'true'
           },
         ]
)</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:timestream&amp;rev=1758208046&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-18T15:07:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>timestream</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:timestream&amp;rev=1758208046&amp;do=diff</link>
        <description>Timestream

AWS Timestream is a specialised database optimised to record a stream of time based events such as logging IOT events.

Example Lambda


import json
import boto3
import time
from datetime import datetime

'''
# Sample Event data
{
  &quot;awsAccountId&quot;: &quot;12348765&quot;,
  &quot;actionType&quot;: &quot;NewRequest&quot;,
  &quot;status&quot;: &quot;Approved&quot;
}
'''

def get_current_time_year_month():
    yearmonth = datetime.now().strftime('%Y-%m')
    daytime = datetime.now().strftime('%d-%H:%M:%S')
    return yearmonth, daytime
…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:vpc-parameterstore&amp;rev=1758204550&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-18T14:09:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vpc-parameterstore</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:vpc-parameterstore&amp;rev=1758204550&amp;do=diff</link>
        <description>VPC Parameter store


---
Parameters:
    VPCName:
        Type: String
        Description: VPC Name for test.

Resources:
  BasicParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: test-VPC-Name
      Type: String
      Value: !Ref VPCName
      Description: SSM Parameter test.
      Tags:
        Environment: Test</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:vpc&amp;rev=1753967286&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-31T13:08:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>vpc</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:vpc&amp;rev=1753967286&amp;do=diff</link>
        <description>Virtual Private Cloud (VPC)

FIXME intro blurb on VPC, AZ, subnets, IG / NAT gateway

[VPC with two AZ and subnets]

Show unused Security Groups


#!/bin/bash

#Get all security groups and check against network interfaces thety are allocated to.
echo &quot;&quot; &gt; security_groups.txt
for SG in
$(aws ec2 describe-security-groups --profile nonprod_admin | jq --raw-output '.[][] | [.GroupId, .GroupName, .Description ] | @csv')
do
echo $SG
#echo $SG | tee  security_groups.txt | cut -f1 -d | aws ec2 describe-…</description>
    </item>
    <item rdf:about="https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:yaml-in-aws&amp;rev=1748598135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-30T09:42:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>yaml-in-aws</title>
        <link>https://www.rainsbrook.co.uk/wiki/doku.php?id=aws:yaml-in-aws&amp;rev=1748598135&amp;do=diff</link>
        <description>YAML

YAML == Yet Another Markup Language

Start of file

Syntax

Quotes

Single quotes allow you put (with some limitations) any character in your string, similar to BASH these won’t be expanded but treated as literals, “\n” is returns just the string \n.</description>
    </item>
</rdf:RDF>
