Skip to content

Commit d97daac

Browse files
committed
Remove debugging permission logic
1 parent 3d3cc0e commit d97daac

File tree

2 files changed

+6
-114
lines changed

2 files changed

+6
-114
lines changed
Lines changed: 4 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,21 @@
11
import os
22
import boto3
33
from aws_lambda_powertools import Logger
4-
from botocore.exceptions import ClientError
54

65
logger = Logger(service="promptLoader")
76

87

9-
def _test_list_prompts(client):
10-
"""Test listing prompts."""
11-
try:
12-
response = client.list_prompts(maxResults=10)
13-
logger.info(f"✅ ListPrompts SUCCEEDED: Found {len(response.get('promptSummaries', []))} prompts")
14-
for prompt in response.get("promptSummaries", []):
15-
logger.info(f" - Prompt: {prompt.get('name')} (ID: {prompt.get('id')})")
16-
except ClientError as e:
17-
logger.error(f"❌ ListPrompts FAILED: {e}")
18-
19-
20-
def _test_get_prompt(client, prompt_name):
21-
"""Test getting a specific prompt."""
22-
try:
23-
response = client.get_prompt(promptIdentifier=prompt_name, promptVersion="$LATEST")
24-
logger.info(f"✅ GetPrompt SUCCEEDED for {prompt_name}: {len(response.get('variants', []))} variants")
25-
except ClientError as e:
26-
error_code = e.response.get("Error", {}).get("Code", "Unknown")
27-
error_message = e.response.get("Error", {}).get("Message", str(e))
28-
logger.error(f"❌ GetPrompt FAILED for {prompt_name}: {error_code} - {error_message}")
29-
_test_alternative_prompts(client)
30-
31-
32-
def _test_alternative_prompts(client):
33-
"""Test getting prompts with different identifiers."""
34-
list_response = client.list_prompts(maxResults=10)
35-
for prompt in list_response.get("promptSummaries", []):
36-
try:
37-
prompt_id = prompt.get("id")
38-
test_response = client.get_prompt(promptIdentifier=prompt_id, promptVersion="$LATEST")
39-
logger.info(
40-
f"✅ GetPrompt SUCCEEDED for prompt ID {prompt_id}: {len(test_response.get('variants', []))} variants"
41-
)
42-
break
43-
except ClientError as e2:
44-
logger.error(f"❌ GetPrompt FAILED for prompt ID {prompt_id}: {e2}")
45-
46-
47-
def _analyze_iam_permissions():
48-
"""Analyze IAM permissions for the current role."""
49-
try:
50-
sts = boto3.client("sts")
51-
identity = sts.get_caller_identity()
52-
logger.info(f"Lambda running as: {identity.get('Arn')}")
53-
54-
role_arn = identity.get("Arn")
55-
if "assumed-role" in role_arn:
56-
role_name = role_arn.split("/")[-2]
57-
iam = boto3.client("iam")
58-
59-
try:
60-
attached_policies = iam.list_attached_role_policies(RoleName=role_name)
61-
logger.info("Attached managed policies:")
62-
for policy in attached_policies.get("AttachedPolicies", []):
63-
logger.info(f" - {policy.get('PolicyName')} ({policy.get('PolicyArn')})")
64-
except Exception as e:
65-
logger.warning(f"Could not list attached policies: {e}")
66-
except Exception as e:
67-
logger.warning(f"Could not analyze IAM permissions: {e}")
68-
69-
70-
def debug_bedrock_permissions():
71-
"""Debug Bedrock operations and permissions."""
72-
try:
73-
logger.info(f"AWS_REGION: {os.environ.get('AWS_REGION')}")
74-
logger.info(f"QUERY_REFORMULATION_PROMPT_NAME: {os.environ.get('QUERY_REFORMULATION_PROMPT_NAME')}")
75-
76-
client = boto3.client("bedrock-agent", region_name=os.environ["AWS_REGION"])
77-
logger.info("Testing Bedrock Agent permissions...")
78-
79-
_test_list_prompts(client)
80-
prompt_name = os.environ.get("QUERY_REFORMULATION_PROMPT_NAME", "epsam-pr-27-queryReformulation")
81-
_test_get_prompt(client, prompt_name)
82-
_analyze_iam_permissions()
83-
84-
except Exception as e:
85-
logger.error(f"Debug permissions test failed: {e}")
86-
87-
888
def load_prompt(prompt_name: str, version: str = "$LATEST") -> str:
899
"""
9010
Load a prompt template from Amazon Bedrock Prompt Management.
91-
Includes debugging to help understand permission issues.
9211
"""
93-
94-
# Run debug test on first call
95-
if not hasattr(load_prompt, "_debug_run"):
96-
debug_bedrock_permissions()
97-
load_prompt._debug_run = True
98-
9912
try:
10013
client = boto3.client("bedrock-agent", region_name=os.environ["AWS_REGION"])
101-
response = client.get_prompt(promptIdentifier=prompt_name, promptVersion=version)
102-
prompt_text = response["variants"][0]["templateConfiguration"]["text"]["text"]
10314

104-
logger.info(f"Successfully loaded prompt '{prompt_name}' version '{version}'")
105-
return prompt_text
106-
107-
except ClientError as e:
108-
error_code = e.response.get("Error", {}).get("Code", "Unknown")
109-
error_message = e.response.get("Error", {}).get("Message", str(e))
110-
111-
logger.error(f"Failed to load prompt '{prompt_name}': {error_code} - {error_message}")
112-
logger.info("This appears to be the known AWS Bedrock Prompt Management issue affecting multiple users")
15+
response = client.get_prompt(promptIdentifier=prompt_name, promptVersion=version)
11316

114-
raise Exception(f"Failed to load prompt '{prompt_name}': {error_code} - {error_message}")
17+
return response["variants"][0]["templateConfiguration"]["text"]["text"]
11518

11619
except Exception as e:
117-
logger.error(f"Unexpected error loading prompt '{prompt_name}': {e}")
118-
raise Exception(f"Unexpected error loading prompt '{prompt_name}': {e}")
20+
logger.error(f"Error loading prompt {prompt_name}: {e}")
21+
raise

packages/slackBotFunction/tests/test_prompt_loader.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,11 @@ def test_load_prompt_success(mock_boto_client):
1212
mock_client.get_prompt.return_value = {
1313
"variants": [{"templateConfiguration": {"text": {"text": "Test prompt template"}}}]
1414
}
15-
mock_client.list_prompts.return_value = {"promptSummaries": []}
16-
mock_client.get_caller_identity.return_value = {"Arn": "test-arn"}
17-
18-
# Disable debug for clean testing
19-
load_prompt._debug_run = True
2015

2116
result = load_prompt("query-reformulation")
2217

2318
assert result == "Test prompt template"
24-
mock_client.get_prompt.assert_called_with(promptIdentifier="query-reformulation", promptVersion="$LATEST")
19+
mock_client.get_prompt.assert_called_once_with(promptIdentifier="query-reformulation", promptVersion="$LATEST")
2520

2621

2722
@patch("app.services.prompt_loader.boto3.client")
@@ -34,13 +29,10 @@ def test_load_prompt_with_version(mock_boto_client):
3429
"variants": [{"templateConfiguration": {"text": {"text": "Versioned prompt template"}}}]
3530
}
3631

37-
# Disable debug for clean testing
38-
load_prompt._debug_run = True
39-
4032
result = load_prompt("query-reformulation", "1")
4133

4234
assert result == "Versioned prompt template"
43-
mock_client.get_prompt.assert_called_with(promptIdentifier="query-reformulation", promptVersion="1")
35+
mock_client.get_prompt.assert_called_once_with(promptIdentifier="query-reformulation", promptVersion="1")
4436

4537

4638
@patch("app.services.prompt_loader.boto3.client")
@@ -50,8 +42,5 @@ def test_load_prompt_bedrock_error(mock_boto_client):
5042
mock_boto_client.return_value = mock_client
5143
mock_client.get_prompt.side_effect = Exception("Bedrock error")
5244

53-
# Disable debug for clean testing
54-
load_prompt._debug_run = True
55-
5645
with pytest.raises(Exception, match="Bedrock error"):
5746
load_prompt("query-reformulation")

0 commit comments

Comments
 (0)