1313# limitations under the License.
1414
1515import json
16+ import os
1617
1718from google .adk .tools import ToolContext
1819
1920from veadk .config import getenv
2021from veadk .utils .logger import get_logger
2122from veadk .utils .volcengine_sign import ve_request
23+ from veadk .auth .veauth .utils import get_credential_from_vefaas_iam
2224
2325logger = get_logger (__name__ )
2426
@@ -51,8 +53,26 @@ def run_code(code: str, language: str, tool_context: ToolContext) -> str:
5153 f"Running code in language: { language } , session_id={ session_id } , code={ code } , tool_id={ tool_id } , host={ host } , service={ service } , region={ region } "
5254 )
5355
54- access_key = getenv ("VOLCENGINE_ACCESS_KEY" )
55- secret_key = getenv ("VOLCENGINE_SECRET_KEY" )
56+ ak = tool_context .state .get ("VOLCENGINE_ACCESS_KEY" )
57+ sk = tool_context .state .get ("VOLCENGINE_SECRET_KEY" )
58+ header = {}
59+
60+ if not (ak and sk ):
61+ logger .debug ("Get AK/SK from tool context failed." )
62+ ak = os .getenv ("VOLCENGINE_ACCESS_KEY" )
63+ sk = os .getenv ("VOLCENGINE_SECRET_KEY" )
64+ if not (ak and sk ):
65+ logger .debug (
66+ "Get AK/SK from environment variables failed. Try to use credential from Iam."
67+ )
68+ credential = get_credential_from_vefaas_iam ()
69+ ak = credential .access_key_id
70+ sk = credential .secret_access_key
71+ header = {"X-Security-Token" : credential .session_token }
72+ else :
73+ logger .debug ("Successfully get AK/SK from environment variables." )
74+ else :
75+ logger .debug ("Successfully get AK/SK from tool context." )
5676
5777 res = ve_request (
5878 request_body = {
@@ -68,14 +88,14 @@ def run_code(code: str, language: str, tool_context: ToolContext) -> str:
6888 ),
6989 },
7090 action = "InvokeTool" ,
71- ak = access_key ,
72- sk = secret_key ,
91+ ak = ak ,
92+ sk = sk ,
7393 service = service ,
7494 version = "2025-10-30" ,
7595 region = region ,
7696 host = host ,
97+ header = header ,
7798 )
78-
7999 logger .debug (f"Invoke run code response: { res } " )
80100
81101 try :
0 commit comments