

AWS Blockchain 템플릿은 2019년 4월 30일에 중단되었습니다. 이 서비스나 이 지원 문서에 대한 추가 업데이트는 없을 것입니다. 에서 최상의 관리형 블록체인 경험을 위해 [ Amazon Managed Blockchain(AMB)](https://aws.amazon.com/managed-blockchain/)을 사용하는 AWS것이 좋습니다. Amazon Managed Blockchain을 시작하는 방법에 대해 자세히 알아보려면 [하이퍼레저 패브릭 워크숍](https://catalog.us-east-1.prod.workshops.aws/workshops/008da2cb-8454-42d0-877b-bc290bff7fcf/en-US) 또는 [이더리움 노드 배포에 관한 블로그](https://aws.amazon.com/blogs/database/deploy-an-ethereum-node-on-amazon-managed-blockchain/)를 참조하십시오. AMB에 대한 질문이 있거나 추가 지원이 필요한 경우 또는 AWS 계정 팀에 [문의 지원](https://console.aws.amazon.com/support/home#/case/create?issueType=technical)하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Hyperledger Fabric용 AWS Blockchain 템플릿 사용
<a name="blockchain-templates-hyperledger"></a>

Hyperledger Fabric은 Go로 작성되는 chaincode라는 스마트 계약을 실행하는 블록체인 프레임워크입니다. Hyperledger Fabric으로 프라이빗 네트워크를 생성하여 네트워크에 연결하고 참여할 수 있는 피어를 제한할 수 있습니다. Hyperledger Fabric에 대한 자세한 내용은 [Hyperledger Fabric](https://hyperledger-fabric.readthedocs.io/en/release-1.1/) 설명서를 참조하십시오. 체인코드에 대한 자세한 내용은 [Hyperledger Fabric](https://hyperledger-fabric.readthedocs.io/en/release-1.1/) 설명서의 [개발자를 위한 체인코드](https://hyperledger-fabric.readthedocs.io/en/release-1.1/chaincode4ade.html) 항목을 참조하십시오.

Hyperledger Fabric용 AWS Blockchain 템플릿은 *docker-local* 컨테이너 플랫폼만을 지원합니다. 따라서 Hyperledger Fabric 컨테이너는 단일 EC2 인스턴스에 배포됩니다.

## 시작 링크
<a name="blockchain-hyperledger-launch"></a>

Hyperledger Fabric [템플릿을 사용하여 특정 리전에서 시작할 수 있는 링크는 AWS Blockchain 템플릿 시작하기](https://aws.amazon.com/blockchain/templates/getting-started/)를 참조하세요. CloudFormation 

## Hyperledger Fabric용 AWS Blockchain 템플릿 구성 요소
<a name="blockchain-hyperledger-architecture"></a>

Hyperledger Fabric용 AWS Blockchain 템플릿은 Docker가 있는 EC2 인스턴스를 생성하고, 해당 인스턴스에서 컨테이너를 사용하여 Hyperledger Fabric 네트워크를 시작합니다. 네트워크에는 하나의 명령 서비스 및 3개의 조직이 포함되며, 각각에는 하나의 피어 서비스가 있습니다. 템플릿은 또한 Hyperledger Explorer 컨테이너를 시작하는데, 이를 통해 블록 체인 데이터를 찾을 수 있습니다. PostgreSQL 서버 컨테이너가 시작되어 Hyperledger Explorer를 지원합니다.

다음 다이어그램은 템플릿을 사용하여 생성된 Hyperledger Fabric 네트워크를 보여줍니다.

![\[AWS architecture diagram showing EC2 instance with containers in a VPC, connected to ECR and S3.\]](http://docs.aws.amazon.com/ko_kr/blockchain-templates/latest/developerguide/images/hyperledger-docker-local-arch.png)


## 사전 조건
<a name="blockchain-hyperledger-prerequisites"></a>

템플릿을 사용하여 Hyperledger Fabric 네트워크를 시작하기 전에 다음 요구 사항이 충족되는지 확인해야 합니다: 
+ 사용하는 IAM 보안 주체(사용자 또는 그룹)는 모든 관련 서비스에서 작업할 수 있는 권한을 가지고 있어야 합니다.
+ EC2 인스턴스 액세스에 사용(예: SSH 사용)할 수 있는 키 페어에 액세스할 수 있어야 합니다. 키가 인스턴스와 같은 리전에 있어야 합니다.
+ Amazon S3 및 Amazon Elastic Container Registry (Amazon ECR)에 액세스하여 컨테이너를 가져올 수 있도록 허용하는 권한 정책이 연결되어 있는 EC2 인스턴스 프로파일이 있어야 합니다. 권한 정책 예시는 [EC2 인스턴스 프로파일에 대한 IAM 권한 예제](#blockchain-hyperledger-ec2profile) 단원을 참조하십시오.
+ Amazon S3 및 Amazon ECR에 액세스할 수 있으려면 퍼블릭 서브넷이 있는 Amazon VPC 네트워크 또는 NAT 게이트웨이 CloudFormation와 탄력적 IP 주소가 있는 프라이빗 서브넷이 있어야 합니다.
+ SSH를 사용하여 인스턴스에 연결하는 데 필요한 IP 주소에서 오는 SSH 트래픽(포트 22)를 허용하는 인바운드 규칙과 함께 EC2 보안 그룹이 있어야 하며, Hyperledger Explorer(포트 8080)에 연결하는 데 필요한 클라이언트에 대해서도 동일한 보안 그룹이 있어야 합니다.

### EC2 인스턴스 프로파일에 대한 IAM 권한 예제
<a name="blockchain-hyperledger-ec2profile"></a>

Hyperledger Fabric용 AWS Blockchain 템플릿을 사용할 때 파라미터 중 하나로 EC2 인스턴스 프로파일 ARN을 지정합니다. EC2 역할 및 인스턴스 프로파일에 연결된 권한 정책에 대한 시작점으로 다음 정책 설명을 사용합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:ListImages",
                "ecr:DescribeImages",
                "ecr:BatchGetImage",
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Hyperledger Fabric 리소스에 연결하기
<a name="blockchain-hyperledger-connecting"></a>

템플릿을 사용하여 생성한 루트 스택에 **CREATE\$1COMPLETE**이 표시된 후 EC2 인스턴스에서 Hyperledger Fabric 리소스에 연결할 수 있습니다. 퍼블릭 서브넷을 지정한 경우 다른 EC2 인스턴스처럼 EC2 인스턴스에 연결할 수 있습니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [SSH를 사용하여 Linux 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)을 참조하세요.

프라이빗 서브넷을 지정한 경우 *Bastion Host*를 설정하고 사용하여 Hyperledger Fabric 리소스에 대한 연결을 프록시해야 합니다. 자세한 내용은 아래 [Bastion Host를 사용한 프록시 연결](blockchain-templates-ethereum.md#ethereum-create-bastion-host) 섹션을 참조하세요.

**참고**  
템플릿이 Hyperledger Fabric 서비스를 호스팅하는 EC2 인스턴스에 퍼블릭 IP 주소를 할당하는 것을 알 수 있습니다. 하지만 지정한 프라이빗 서브넷의 라우팅 정책이 이 IP 주소와 퍼블릭 소스 사이의 트래픽을 허용하지 않기 때문에 이 IP 주소는 공개적으로 액세스할 수 없습니다.

### Bastion Host를 사용한 프록시 연결
<a name="hyperledger-create-bastion-host"></a>

어떤 구성은 공용 Hyperledger Fabric 서비스가 제공되지 않습니다. 이러한 경우 *Bastion Host*를 통해 Hyperledger Fabric 리소스에 연결할 수 있습니다. Bastion Host에 대한 자세한 내용은 *Linux Bastion Host 퀵 스타트 가이드*의 [Linux Bastion Host 아키텍처를](https://docs.aws.amazon.com/quickstart/latest/linux-bastion/architecture.html) 참조하십시오.

Bastion Host는 EC2 인스턴스입니다. 다음 요구 사항을 충족하는지 확인합니다:
+ Bastion Host의 EC2 인스턴스는 퍼블릭 IP 자동 할당이 활성화되어 있고 인터넷 게이트웨이가 있는 퍼블릭 서브넷 내에 있습니다.
+ Bastion Host에는 ssh 연결을 허용하는 키 쌍이 있습니다.
+ Bastion Host는 연결하는 클라이언트의 인바운드 SSH 트래픽을 허용하는 보안 그룹과 연결됩니다.
+ Hyperledger Fabric 호스트에 할당된 보안 그룹(예: ECS가 컨테이너 플랫폼인 경우 또는 Application Load Balancer 또는 docker-local이 컨테이너 플랫폼인 경우 호스트 EC2 인스턴스)은 VPC 내 소스의 모든 포트에 인바운드 트래픽을 허용합니다.

Bastion Host를 설정한 후 연결하는 클라이언트가 Bastion Host를 프록시로 사용하는지 확인하십시오. 다음은 Mac OS를 사용하여 프록시 연결을 설정한 예입니다. *BastionIP*를 Bastion 호스트 EC2 인스턴스의 IP 주소로 대체하고 *MySshKey.pem*을 Bastion Host로 복제한 키 페어 파일로 대체합니다.

명령줄에 다음을 입력합니다:

```
ssh -i mySshKey.pem  ec2-user@BastionIP -D 9001
```

이렇게 하면 로컬 시스템의 포트 9001에 대한 포트 포워딩이 Bastion Host로 설정됩니다.

다음으로 `localhost:9001`에 대한 SOCKS 프록시를 사용하도록 브라우저 또는 시스템을 구성하십시오. 예를 들어, Mac OS의 경우, [**System Preferences**]와 [**Network**], [**Advanced**]를 선택하고 [**SOCKS proxy**]를 선택하여 **localhost:9001**을 입력합니다.

FoxyProxy Standard와 Chrome을 사용하여 [**More Tools**]와 [**Extensions**]를 선택합니다. [**FoxyProxy Standard**]에서 [**Details**]와 [**Extension options**], [**Add New Proxy**]를 선택합니다. [**Manual Proxy Configuration**]을 선택합니다. [**Host or IP Address**]에 **localhost**를 입력하고 [**Port**]에는 **9001**을 입력합니다. [**SOCKS proxy?**], [**Save**]를 선택합니다.

이제 템플릿 출력에 나열된 Hyperledger Fabric 호스트 주소에 연결할 수 있습니다.