云技术分享|Bedrock代理访问方案

一、背 景

巧妙结合 VPC 对等连接和网络负载均衡器技术,将 Bedrock 的端点高效代理。通过采用 'Cold Potato' 路由策略,我们确保绝大部分流量在 AWS 全球骨干网上传输,显著提升网络性能和稳定性。这一方案可以针对全球不同地区的用户访问Bedrock的体验进行优化。

二、方案概述

以用新加坡 nlb 暴露 us-east-1 region bedrock-runtime endpoint 为例: 1. 2. 由于新加坡的 NLB 做了反向代理,在 us-east-1 Bedrock endpoint 处看到的 source IP 是新加坡 NLB的 IP 访问流量绝大部分走在 AWS 骨干网上,走在公网上的距离越短整体网络越稳定(客户端 ↔ 新加坡 AWS)

三、环境配置

1、创建vpc

[us-east-1] subnet 10.1.0.0/16(注意不要和新加坡 subnet overlap), 2 AZ,0 public subnet,None NAT,None S3 Gateway(只有内网)

2、创建 Endpoints

[us-east-1] 服务选择:com.amazonaws.us-east-1.bedrock-runtime,选两个 az, Designate IP addresses 分别为 10.1.128.66,10.1.144.66,security group 选择默认即可。

3、添加安全组入站规则

[us-east-1] bedrock endpoint 的 security group 添加 inbound rule,443 allow all(只有内网)

4、配置vpc peering

[us-east-1]创建vpc peering填入 ap-southeast-1 vpcid vpc-0f5be337a7da46ec1

[ap-southeast-1] peering connections accpet

[us-east-1] bedrock-transit VPC 中的两个 subnet 添加路由,10.5.0.0/16 下一跳 peering connect

5、创建目标组

[ap-southeast-1]

类型: IP address,

目标组名称: us-east-1-bedrock

协议 端口:tcp 443,

vpc:slq-t1-vpc (选择上面和美东区域连通的vpc)

ip地址: other private IP,10.1.128.66 & 10.1.144.66

6、创建nlb

[ap-southeast-1] NLB 的 subnet 必须是 public subnet,否则没有 IGW 返回不了客户端。

同时确认 NLB turn off preserve client IP(默认就 turn off),否则 bedrock-runtime endpoint 回包直接返回给了 client IP,而不走 VPC peering

使用lambda验证

1、创建lambda

2、验证代码

注意:该代码需要在bedrock已经启用anthropic.claude-3-5-sonnet 模型,需要修改runtime url为nlb dns

import urllib3

import json

import boto3

def lambda_handler(x,y):

    urllib3.disable_warnings()

    bedrock_runtime = boto3.client(service_name='bedrock-runtime',

                                    region_name = 'us-east-1'# 如果使用美西2的代理,请改成us-west-2

                                    endpoint_url=https://bedrock-nlb-xxxx.elb.ap-southeast-1.amazonaws.com',

                                    # endpoint_url='https://bedrock-runtime.us-east-1.amazonaws.com',

                                    verify = False)

    MODEL_ID = "anthropic.claude-3-5-sonnet-20240620-v1:0"

    # IMAGE_NAME = "wind-generation.png"

    # with open(IMAGE_NAME, "rb") as f:

    #     image = f.read()

    user_message = "test"

    messages = [

        {

            "role""user",

            "content": [

                # {"image": {"format": "png", "source": {"bytes": image}}},

                {"text": user_message},

            ],

        }

    ]

    response = bedrock_runtime.converse(

        modelId=MODEL_ID,

        messages=messages,

    )

    response_text = response["output"]["message"]["content"][0]["text"]

    print(response_text)

3、授予lambda角色bedrock权限

4、执行lambda

可以在下面看到正确输出,测试成功。

5、sourceIPAddress验证

在cloudtrail服务查看调用的sourceIPAddress是否改变

### 如何在 AWS Bedrock 中获取模型访问权限 要在 AWS Bedrock 中成功获取模型访问权限并解决无权访问模型的问题,可以按照以下方式操作: #### 1. 配置 IAM 策略以允许调用特定模型 AWS Identity and Access Management (IAM) 是管理资源访问的核心工具。为了使应用程序能够调用特定的基础模型,需要创建一个合适的 IAM 策略来授权此行为。以下是示例策略配置[^1]: ```json { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowInference", "Effect": "Allow", "Action": ["bedrock:InvokeModel"], "Resource": "arn:aws:bedrock:*::*/<foundation-model>/<model-id-of-model-to-allow>" } ] } ``` 上述 JSON 文件中的 `Resource` 字段指定了要授予权限的具体模型 ARN。如果未正确设置此字段,则可能导致无权访问某些模型。 #### 2. 使用 Amazon Bedrock 提供的功能扩展应用 Amazon Bedrock 不仅支持直接调用预训练好的基础模型,还允许用户通过微调或知识增强的方式定制化模型[^2]。因此,如果您希望获得更广泛的模型功能,可以通过以下两种途径实现: - **微调现有模型**:利用自有业务数据调整已有模型的行为。 - **训练新模型**:完全基于内部数据集构建新的机器学习模型。 这两种方法都需要额外的时间投入和技术积累,但对于满足个性化需求至关重要。 #### 3. 关于可用模型数量有限的原因分析 尽管官方宣传声称提供多种类型的高质量大语言模型(LLMs),但实际上开放给用户的选项可能较为局限[^3]。这主要是因为以下几个方面原因造成的: - 法律法规限制; - 商业合作条款约束; - 技术兼容性和稳定性考量。 这些因素共同决定了当前阶段下可供选择的实际模型种类较少的情况。 #### 4. 参考 InvokeModel API 文档完成集成工作 最后,在实际编码过程中还需要仔细阅读有关 invokeModel 方法的相关资料[^4]。下面给出了一段简单的 JavaScript 调用实例作为参考: ```javascript const bedrockRuntime = new AWS.BedrockRuntime(); let params = { body: JSON.stringify({ promptData: "Tell me about the weather today.", maxTokensToSample: 50, temperature: 0.8, topP: 0.9 }), modelId: 'anthropicsclaude-v2', accept: '*/*', contentType: 'application/json' }; bedrockRuntime.invokeModel(params, function(err,data){ if (!err){ console.log(data); }else{ console.error('Error:', err); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值