= {
+ access_key_secret: ['bedrock_ak', 'bedrock_sk'],
+ iam_role: ['aws_role_arn'],
+ assume_role: [],
+ };
+
+ cleanedValues.auth_mode = authMode;
+
+ Object.keys(fieldsByMode).forEach((mode) => {
+ if (mode !== authMode) {
+ fieldsByMode[mode].forEach((field) => {
+ delete cleanedValues[field];
+ });
+ }
+ });
+
const data = {
- ...values,
+ ...cleanedValues,
llm_factory: llmFactory,
max_tokens: values.max_tokens,
};
- onOk?.(data);
+ onOk?.(data as unknown as IAddLlmRequestBody);
};
return (
@@ -47,9 +78,6 @@ const BedrockModal = ({
title={
-
- {t('bedrockCredentialsHint')}
-
}
open={visible}
@@ -82,20 +110,75 @@ const BedrockModal = ({
>
-
- label={t('addBedrockEngineAK')}
- name="bedrock_ak"
- rules={[{ message: t('bedrockAKMessage') }]}
- >
-
-
-
- label={t('addBedrockSK')}
- name="bedrock_sk"
- rules={[{ message: t('bedrockSKMessage') }]}
- >
-
+
+ {/* AWS Credential Mode Switch (AK/SK section only) */}
+
+ {
+ const next = v as FieldType['auth_mode'];
+ setAuthMode(next);
+ // Clear non-active fields so they won't be validated/submitted by accident.
+ if (next !== 'access_key_secret') {
+ form.setFieldsValue({ bedrock_ak: '', bedrock_sk: '' } as any);
+ }
+ if (next !== 'iam_role') {
+ form.setFieldsValue({ aws_role_arn: '' } as any);
+ }
+ if (next !== 'assume_role') {
+ form.setFieldsValue({ role_arn: '' } as any);
+ }
+ }}
+ options={[
+ {
+ label: t('awsAuthModeAccessKeySecret'),
+ value: 'access_key_secret',
+ },
+ { label: t('awsAuthModeIamRole'), value: 'iam_role' },
+ { label: t('awsAuthModeAssumeRole'), value: 'assume_role' },
+ ]}
+ />
+
+ {authMode === 'access_key_secret' && (
+ <>
+
+ label={t('awsAccessKeyId')}
+ name="bedrock_ak"
+ rules={[{ required: true, message: t('bedrockAKMessage') }]}
+ >
+
+
+
+ label={t('awsSecretAccessKey')}
+ name="bedrock_sk"
+ rules={[{ required: true, message: t('bedrockSKMessage') }]}
+ >
+
+
+ >
+ )}
+
+ {authMode === 'iam_role' && (
+
+ label={t('awsRoleArn')}
+ name="aws_role_arn"
+ rules={[{ required: true, message: t('awsRoleArnMessage') }]}
+ >
+
+
+ )}
+
+ {authMode === 'assume_role' && (
+
+ {t('awsAssumeRoleTip')}
+
+ )}
+
label={t('bedrockRegion')}
name="bedrock_region"