Amazon Web Services Blockchain Templates 已于 2019 年 4 月 30 日停产。不会对本服务或本支持文档进行进一步更新。为了获得最佳的托管区块链体验 AWS,我们建议您使用亚马逊托管区块链 (AMB)
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用适用于 Hyperledger Fabric 的 Amazon Web Services Blockchain Templates
Hyperledger Fabric 是一个区块链框架,它运行使用 Go 编写的智能合同 (名为chaincode)。您可以利用 Hyperledger Fabric 创建私有网络,限制可以连入并参与该网络的对等方。有关 Hyperledger Fabric 的更多信息,请参阅 Hyperledger Fabric
AWS Blockchain Template for Hyperledger Fabric 仅支持一个 docker-local容器平台,这意味着 Hyperledger Fabric 容器部署在单个 EC2 实例上。
启动链接
有关使用 Hyperledger Fabric 模板 CloudFormation 在特定区域启动的链接,请参阅 AWS Blockchain 模板入
适用于 Hyperledger Fabric 组件的 Amazon Web Services Blockchain Templates
AWS Blockchain Template for Hyperledger Fabric 使用 Docker 创建一个 EC2 实例,并在该实例上使用容器启动 Hyperledger Fabric 网络。该网络包括一个订单服务和三个组织,每个组织有一个对等服务。模板还会启动一个 Hyperledger Explorer 容器,用于浏览区块链数据。还会启动一个 PostgreSQL 服务器容器来支持 Hyperledger Explorer。
下图描述了使用模板创建的 Hyperledger Fabric 网络:
先决条件
使用模板启动 Hyperledger Fabric 网络之前,请确保满足以下要求:
您使用的 IAM 主体(用户或组),必须有权使用所有相关服务。
您必须有权使用密钥对来访问 EC2 实例 (例如,使用 SSH)。密钥必须与实例存在于同一区域。
您必须具有附加了权限策略的 EC2 实例配置文件,从而允许访问 Amazon S3 和 Amazon Elastic Container Registry (Amazon ECR) 以拉取容器。有关权限策略的示例,请参阅 EC2 实例配置文件的示例 &IAM; 权限。
您必须拥有一个带有公有子网的 Amazon VPC 网络,或者一个带有 NAT 网关和弹性 IP 地址的私有子网,这样才能访问 Amazon S3 和 Amazon ECR。 CloudFormation
您必须具有一个包含入站规则的 EC2 安全组,以允许来自需要使用 SSH 连接到实例的 IP 地址的 SSH 流量(端口 22),对需要连接到 Hyperledger Explorer 的客户端(端口 8080)同样适用。
EC2 实例配置文件的示例 &IAM; 权限
您在使用 AWS Blockchain Template for Hyperledger Fabric 模板时需指定 EC2 实例配置文件 ARN,作为参数之一。使用以下策略语句,作为附加到 EC2 角色和实例配置文件的权限策略的起点。
连接到 Hyperledger Fabric Resources
在使用模板创建的根堆栈显示CREATE_COMPLETE后,您可以连接到 EC2 实例上的 Hyperledger Fabric 资源。如果您指定了公有子网,可以像连接任何其他 EC2 实例那样连接到该 EC2 实例。有关更多信息,请参阅《Amazon EC2 用户指南》中的使用 SSH 连接到您的 Linux 实例。
如果指定了私有子网,您可以设置并使用堡垒主机以作为到 Hyperledger Fabric 资源的连接代理。有关更多信息,请参阅下面的 使用堡垒主机的代理连接。
注意
您可能会注意到,模板为托管 Hyperledger Fabric 服务的 EC2 实例分配了公有 IP 地址;但是,该 IP 地址不可公开访问,因为您指定的私有子网中的路由策略不允许此 IP 地址和公共源之间的流量。
使用堡垒主机的代理连接
包含某些配置的 Hyperledger Fabric 服务可能不会公开。在这种情况下,你可以通过堡垒主机连接到 Hyperledger Fabric 资源。有关堡垒主机的更多信息,请参阅 Linux 堡垒主机快速入门指南中的 Linux 堡垒主机架构。
堡垒主机是 EC2 实例。确保满足以下要求:
堡垒主机的 EC2 实例位于启用了自动分配公有 IP 且具有互联网网关的公有子网内。
堡垒主机拥有允许 ssh 连接的密钥对。
堡垒主机与允许来自连接的客户端的入站 SSH 流量的安全组关联。
分配给 Hyperledger Fabric 主机的安全组(例如,如果 ECS 是容器平台,则分配给应用程序负载均衡器;如果 docker-local 是容器平台,则分配给主机 EC2 实例)允许 VPC 内的所有端口上的入站流量。
设置堡垒主机后,请确保连接的客户端使用堡垒主机作为代理。以下示例演示了如何使用 Mac OS 设置代理连接。BastionIP替换为堡垒主机 EC2 实例的 IP 地址和MySshKey.pem您复制到堡垒主机的 key pair 文件。
在命令行键入以下内容:
ssh -imySshKey.pemec2-user@BastionIP-D 9001
这将为本地计算机上的端口 9001 设置至堡垒主机的端口转发。
接下来,将您的浏览器或系统设置为使用适用于localhost:9001 的 SOCKS 代理。例如,使用 Mac OS,选择 System Preferences (系统首选项)、Network (网络)、Advanced (高级),再选择 SOCKS proxy (SOCKS 代理),然后键入 localhost:9001。
在 Chrome 中使用 FoxyProxy 标准版,选择 “更多工具”、“扩展程序”。在 “FoxyProxy 标准” 下,选择 “详细信息”、“扩展选项”、“添加新代理”。选择 Manual Proxy Configuration (手动代理配置)。对于 Host or IP Address (主机或 IP 地址),键入 localhost,对于 Port (端口),键入 9001。选择 SOCKS Proxy? (SOCKS 代理?)、Save (保存)。
您现在应能连接到模板输出中列出的 Hyperledger Fabric 主机地址。