mirror of
https://github.com/awslabs/amazon-bedrock-agentcore-samples.git
synced 2025-09-08 20:50:46 +00:00
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
import httpx
|
|
import os
|
|
from dotenv import load_dotenv
|
|
import boto3
|
|
import requests
|
|
|
|
#Reading environment variables
|
|
load_dotenv()
|
|
|
|
def create_agentcore_client():
|
|
#create boto3 session and client
|
|
if os.getenv("awscred_profile_name") is None:
|
|
boto_session = boto3.Session(region_name=os.getenv("aws_default_region")) #using default profile
|
|
else:
|
|
boto_session = boto3.Session(profile_name=os.getenv("awscred_profile_name"), region_name=os.getenv("aws_default_region"))
|
|
|
|
agentcore_client = boto_session.client(
|
|
"bedrock-agentcore-control"
|
|
)
|
|
|
|
return boto_session, agentcore_client
|
|
|
|
def create_http_client(**kwargs) -> httpx.AsyncClient:
|
|
"""Create an HTTPX client with SSL verification disabled."""
|
|
kwargs['verify'] = False
|
|
# Optionally add other configurations
|
|
kwargs.setdefault('timeout', httpx.Timeout(30.0))
|
|
return httpx.AsyncClient(**kwargs)
|
|
|
|
def get_gateway_endpoint(agentcore_client, gateway_id):
|
|
response = agentcore_client.get_gateway(
|
|
gatewayIdentifier=gateway_id\
|
|
)
|
|
|
|
return response['gatewayUrl']
|
|
|
|
def list_gateways(agentcore_client):
|
|
response = agentcore_client.list_gateways()
|
|
|
|
return response['items']
|
|
|
|
def get_oath_token(boto_session):
|
|
response = requests.post(
|
|
os.getenv("cognito_token_url"),
|
|
data=f"grant_type=client_credentials&client_id={os.getenv('cognito_client_id')}&client_secret={get_cognito_client_secret(boto_session)}&scope={os.getenv('cognito_auth_scope')}",
|
|
headers={'Content-Type': 'application/x-www-form-urlencoded'}
|
|
)
|
|
|
|
#print(response.json())
|
|
return response.json()['access_token']
|
|
|
|
def get_cognito_client_secret(boto_session):
|
|
cognito_client = boto_session.client("cognito-idp", region_name=os.getenv('aws_default_region'))
|
|
|
|
print(f"Getting Client Secret using UserPoolId: {os.getenv('cognito_user_pool_id')} and ClientId: {os.getenv('cognito_client_id')}")
|
|
response = cognito_client.describe_user_pool_client(
|
|
UserPoolId=os.getenv('cognito_user_pool_id'),
|
|
ClientId=os.getenv('cognito_client_id')
|
|
)
|
|
return response['UserPoolClient']['ClientSecret']
|