Skip to content

Commit 7ea4c78

Browse files
authored
Merge pull request #86 from ericsega91/fix/deploy-script-first-deploy-failures
fix(deploy): resolve 4 first-deploy failures on macOS/fresh accounts
2 parents 4fcb5ab + 192e4d1 commit 7ea4c78

1 file changed

Lines changed: 37 additions & 20 deletions

File tree

enterprise/deploy.sh

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,29 @@ CFN_PARAMS="$CFN_PARAMS ParameterKey=CreateVPCEndpoints,ParameterValue=${CREATE_
151151
CFN_PARAMS="$CFN_PARAMS ParameterKey=ExistingVpcId,ParameterValue=${EXISTING_VPC_ID}"
152152
CFN_PARAMS="$CFN_PARAMS ParameterKey=ExistingSubnetId,ParameterValue=${EXISTING_SUBNET_ID}"
153153

154+
155+
# Template is 70KB — exceeds 51,200 byte inline limit, must use S3
156+
info " Uploading CloudFormation template to S3..."
157+
STAGING_BUCKET="openclaw-deploy-${ACCOUNT_ID}-${REGION}"
158+
159+
if ! aws s3api head-bucket --bucket "$STAGING_BUCKET" 2>/dev/null; then
160+
echo "[info] Creating staging bucket s3://${STAGING_BUCKET}..."
161+
if [ "$REGION" = "us-east-1" ]; then
162+
aws s3api create-bucket --bucket "$STAGING_BUCKET" --region "$REGION"
163+
else
164+
aws s3api create-bucket --bucket "$STAGING_BUCKET" --region "$REGION" \
165+
--create-bucket-configuration LocationConstraint="$REGION"
166+
fi
167+
aws s3api put-public-access-block --bucket "$STAGING_BUCKET" \
168+
--public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"
169+
fi
170+
171+
aws s3 cp "$SCRIPT_DIR/clawdbot-bedrock-agentcore-multitenancy.yaml" \
172+
"s3://${STAGING_BUCKET}/cfn/clawdbot-bedrock-agentcore-multitenancy.yaml" \
173+
--region "$REGION" --quiet
174+
TEMPLATE_URL="https://${STAGING_BUCKET}.s3.${REGION}.amazonaws.com/cfn/clawdbot-bedrock-agentcore-multitenancy.yaml"
175+
success " Template uploaded"
176+
154177
# Try to create; if stack exists, do an update instead
155178
STACK_STATUS=$(aws cloudformation describe-stacks \
156179
--stack-name "$STACK_NAME" --region "$REGION" \
@@ -160,7 +183,7 @@ if [ "$STACK_STATUS" = "DOES_NOT_EXIST" ]; then
160183
info " Creating new stack (takes ~8 min)..."
161184
aws cloudformation create-stack \
162185
--stack-name "$STACK_NAME" \
163-
--template-body file://"$SCRIPT_DIR/clawdbot-bedrock-agentcore-multitenancy.yaml" \
186+
--template-url "$TEMPLATE_URL" \
164187
--capabilities CAPABILITY_NAMED_IAM \
165188
--region "$REGION" \
166189
--parameters $CFN_PARAMS
@@ -170,7 +193,7 @@ else
170193
info " Stack exists ($STACK_STATUS) — updating..."
171194
aws cloudformation update-stack \
172195
--stack-name "$STACK_NAME" \
173-
--template-body file://"$SCRIPT_DIR/clawdbot-bedrock-agentcore-multitenancy.yaml" \
196+
--template-url "$TEMPLATE_URL" \
174197
--capabilities CAPABILITY_NAMED_IAM \
175198
--region "$REGION" \
176199
--parameters $CFN_PARAMS 2>/dev/null && \
@@ -377,6 +400,9 @@ done
377400
# Create ECS Fargate services for always-on deployment mode (one per security tier).
378401
# Services start with desiredCount=0 — admin enables per-position via Security Center.
379402
info "[4.5/8] Setting up Fargate tier services..."
403+
if [ "$SKIP_SERVICES" = "true" ]; then
404+
info " Skipping Fargate tier services (--skip-services)"
405+
else
380406

381407
ECS_CLUSTER="${STACK_NAME}-always-on"
382408
BASE_TASK_DEF="${STACK_NAME}-always-on-agent"
@@ -404,29 +430,19 @@ else
404430

405431
# Define tiers: name:model:guardrailId
406432
# desiredCount=0 for all — admin activates via Security Center
407-
declare -A TIER_MODELS=(
408-
[standard]="${MODEL:-global.amazon.nova-2-lite-v1:0}"
409-
[restricted]="us.deepseek.r1-v1:0"
410-
[engineering]="global.anthropic.claude-sonnet-4-5-20250929-v1:0"
411-
[executive]="global.anthropic.claude-sonnet-4-6"
412-
)
413-
declare -A TIER_GUARDRAILS=(
414-
[standard]="${GUARDRAIL_MODERATE_ID:-}"
415-
[restricted]="${GUARDRAIL_STRICT_ID:-}"
416-
[engineering]=""
417-
[executive]=""
418-
)
419-
420433
for TIER_NAME in standard restricted engineering executive; do
421434
SERVICE_NAME="${STACK_NAME}-tier-${TIER_NAME}"
422-
TIER_MODEL="${TIER_MODELS[$TIER_NAME]}"
423-
TIER_GUARDRAIL="${TIER_GUARDRAILS[$TIER_NAME]}"
424-
425-
# Register tier-specific task definition with tier env vars
426435
TIER_FAMILY="${STACK_NAME}-tier-${TIER_NAME}"
427-
436+
case "$TIER_NAME" in
437+
standard) TIER_MODEL="${MODEL:-global.amazon.nova-2-lite-v1:0}"; TIER_GUARDRAIL="${GUARDRAIL_MODERATE_ID:-}" ;;
438+
restricted) TIER_MODEL="us.deepseek.r1-v1:0"; TIER_GUARDRAIL="${GUARDRAIL_STRICT_ID:-}" ;;
439+
engineering) TIER_MODEL="global.anthropic.claude-sonnet-4-5-20250929-v1:0"; TIER_GUARDRAIL="" ;;
440+
executive) TIER_MODEL="global.anthropic.claude-sonnet-4-6"; TIER_GUARDRAIL="" ;;
441+
esac
428442
# Build container environment JSON
429443
TIER_ENV=$(cat <<ENVJSON
444+
445+
430446
[
431447
{"name":"STACK_NAME","value":"${STACK_NAME}"},
432448
{"name":"AWS_REGION","value":"${REGION}"},
@@ -512,6 +528,7 @@ print(json.dumps(defs))
512528
done
513529

514530
success "Fargate tier services configured (desiredCount=0, activate via Security Center)"
531+
fi
515532
fi
516533

517534
# ── Step 5: Upload SOUL templates and knowledge docs ──────────────────────────

0 commit comments

Comments
 (0)