ソースを参照

feat: allow to use IAM Role for Bedrock (#5188)

Masashi Tomooka 10 ヶ月 前
コミット
0633aae7dc

+ 3 - 3
api/core/model_runtime/model_providers/bedrock/bedrock.yaml

@@ -21,16 +21,16 @@ configurate_methods:
 provider_credential_schema:
   credential_form_schemas:
     - variable: aws_access_key_id
-      required: true
+      required: false
       label:
-        en_US: Access Key
+        en_US: Access Key (If not provided, credentials are obtained from your running environment. e.g. IAM role)
         zh_Hans: Access Key
       type: secret-input
       placeholder:
         en_US: Enter your Access Key
         zh_Hans: 在此输入您的 Access Key
     - variable: aws_secret_access_key
-      required: true
+      required: false
       label:
         en_US: Secret Access Key
         zh_Hans: Secret Access Key

+ 5 - 5
api/core/model_runtime/model_providers/bedrock/llm/llm.py

@@ -95,8 +95,8 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
         # - https://docs.anthropic.com/claude/reference/claude-on-amazon-bedrock
         # - https://github.com/anthropics/anthropic-sdk-python
         client = AnthropicBedrock(
-            aws_access_key=credentials["aws_access_key_id"],
-            aws_secret_key=credentials["aws_secret_access_key"],
+            aws_access_key=credentials.get("aws_access_key_id", None),
+            aws_secret_key=credentials.get("aws_secret_access_key", None),
             aws_region=credentials["aws_region"],
         )
 
@@ -568,8 +568,8 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
         runtime_client = boto3.client(
             service_name='bedrock-runtime',
             config=client_config,
-            aws_access_key_id=credentials["aws_access_key_id"],
-            aws_secret_access_key=credentials["aws_secret_access_key"]
+            aws_access_key_id=credentials.get("aws_access_key_id", None),
+            aws_secret_access_key=credentials.get("aws_secret_access_key", None)
         )
 
         model_prefix = model.split('.')[0]
@@ -826,4 +826,4 @@ class BedrockLargeLanguageModel(LargeLanguageModel):
         elif error_code == "ModelStreamErrorException":
             return InvokeConnectionError(error_msg)
 
-        return InvokeError(error_msg)
+        return InvokeError(error_msg)

+ 1 - 1
web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx

@@ -205,7 +205,7 @@ const ModelModal: FC<ModelModalProps> = ({
   const encodeSecretValues = useCallback((v: FormValue) => {
     const result = { ...v }
     extendedSecretFormSchemas.forEach(({ variable }) => {
-      if (result[variable] === formSchemasValue?.[variable])
+      if (result[variable] === formSchemasValue?.[variable] && result[variable] !== undefined)
         result[variable] = '[__HIDDEN__]'
     })
     return result