1+ #! /bin/bash
2+
3+ set -e # Exit on error
4+ set -u # Exit on undefined variable
5+
6+ # Colors for output
7+ RED=' \033[0;31m'
8+ GREEN=' \033[0;32m'
9+ YELLOW=' \033[1;33m'
10+ NC=' \033[0m' # No Color
11+
12+ # Function to print colored output
13+ print_status () {
14+ echo -e " ${GREEN} [INFO]${NC} $1 "
15+ }
16+
17+ print_error () {
18+ echo -e " ${RED} [ERROR]${NC} $1 "
19+ }
20+
21+ # Configuration
22+ SOURCE_SECRET_NAME=" ${SOURCE_SECRET_NAME} "
23+ DEST_SECRET_NAME=" ${DEST_SECRET_NAME} "
24+ DEST_REGION=" ${DEST_REGION} "
25+
26+ print_status " Copying secret: $SOURCE_SECRET_NAME -> $DEST_SECRET_NAME "
27+
28+ # Step 1: Pull secret from first account
29+ print_status " Step 1: Pulling secret from source (e.g., current) AWS account..."
30+ SOURCE_SECRET_VALUE=$( aws secretsmanager get-secret-value \
31+ --secret-id " $SOURCE_SECRET_NAME " \
32+ --query ' SecretString' \
33+ --output text)
34+
35+ if [ -z " $SOURCE_SECRET_VALUE " ]; then
36+ print_error " Failed to retrieve source secret"
37+ exit 1
38+ fi
39+
40+ print_status " Secret retrieved successfully"
41+
42+ # Step 2: Switch to second account credentials
43+ print_status " Step 2: Switching to destination account credentials..."
44+
45+ if [ -z " ${ENV_AWS_ACCESS_KEY_ID:- } " ] || [ -z " ${ENV_AWS_SECRET_ACCESS_KEY:- } " ]; then
46+ print_error " ENV_AWS_ACCESS_KEY_ID and ENV_AWS_SECRET_ACCESS_KEY must be set"
47+ exit 1
48+ fi
49+
50+ export AWS_ACCESS_KEY_ID=$ENV_AWS_ACCESS_KEY_ID
51+ export AWS_SECRET_ACCESS_KEY=$ENV_AWS_SECRET_ACCESS_KEY
52+ export AWS_SESSION_TOKEN=${ENV_AWS_SESSION_TOKEN:- }
53+
54+ print_status " Credentials switched"
55+
56+ # Step 3: Create secret in second account
57+ print_status " Step 3: Creating secret in destination AWS account..."
58+
59+ aws secretsmanager create-secret \
60+ --name " $DEST_SECRET_NAME " \
61+ --secret-string " $SOURCE_SECRET_VALUE " \
62+ --region " $DEST_REGION "
63+
64+ print_status " Secret created successfully in $DEST_REGION "
65+ print_status " Done!"
0 commit comments