

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

# Snowball Edge와의 데이터 마이그레이션을 위해 Amazon S3 어댑터를 사용하여 파일 전송
<a name="using-adapter"></a>

다음은 Amazon S3 REST API 작업을 사용하여 AWS Snowball Edge 디바이스에 이미 있는 S3 버킷과 프로그래밍 방식으로 데이터를 주고받는 데 사용할 수 있는 Amazon S3 어댑터의 개요입니다. 이 Amazon S3 REST API 지원은 일부 작업으로 제한됩니다. 이 작업 하위 집합을 AWS SDKs 중 하나와 함께 사용하여 프로그래밍 방식으로 데이터를 전송할 수 있습니다. 또한 지원되는 AWS Command Line Interface (AWS CLI) 명령의 하위 집합을 Amazon S3에 사용하여 프로그래밍 방식으로 데이터를 전송할 수도 있습니다.

솔루션에서 AWS SDK for Java 버전 1.11.0 이상을 사용하는 경우 `S3ClientOptions`다음를 사용해야 합니다.
+ `disableChunkedEncoding()` - chunked 인코딩이 어댑터에서 지원되지 않음을 나타냅니다.
+ `setPathStyleAccess(true)` - 모든 요청에 대해 경로 방식 액세스를 사용하도록 어댑터를 구성합니다.

자세한 내용은 *Java용 Amazon AppStream SDK*의 [클래스 S3ClientOptions.Builder](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/S3ClientOptions.Builder.html)를 참조하세요.

**중요**  
한 번에 하나의 메서드만 사용하여 AWS Snowball Edge 디바이스의 로컬 버킷에 데이터를 읽고 쓰는 것이 좋습니다. 동일한 버킷에서 NFS 인터페이스와 Amazon S3 어댑터를 동시에 사용하면 읽기/쓰기 충돌이 발생할 수 있습니다.  
[AWS Snowball Edge 할당량](limits.md)에서 한도에 대해 자세히 설명합니다.  
 AWS 서비스가 Snowball Edge에서 제대로 작동하려면 서비스의 포트를 허용해야 합니다. 자세한 내용은 [Snowball Edge의 AWS 서비스에 대한 포트 요구 사항](port-requirements.md)을 참조하세요.

**Topics**
+ [Amazon S3 어댑터와 함께 사용할 AWS CLI 버전 1.16.14 다운로드 및 설치](#aws-cli-version)
+ [Snowball Edge 디바이스에서 AWS CLI 및 API 작업 사용](#using-adapter-cli-specify-region)
+ [Snowball Edge에서 로컬 Amazon S3 자격 증명 가져오기 및 사용](#adapter-credentials)
+ [Snowball Edge의 Amazon S3 어댑터에 지원되지 않는 Amazon S3 기능](#snowball-edge-s3-unsupported-features)
+ [Snowball Edge로의 데이터 전송 성능을 개선하기 위해 작은 파일 일괄 처리](batching-small-files.md)
+ [Snowball Edge와의 데이터 전송에 지원되는 AWS CLI 명령](using-adapter-cli.md)
+ [데이터 전송을 위해 Snowball Edge에서 지원되는 Amazon S3 REST API 작업](using-adapter-supported-api.md)

## Amazon S3 어댑터와 함께 사용할 AWS CLI 버전 1.16.14 다운로드 및 설치
<a name="aws-cli-version"></a>

현재 AWS CLI 의 버전 1.16.14 및 이전 버전만 Snowball Edge 디바이스 사용이 지원됩니다. 최신 버전의 AWS CLI 는 Amazon S3 S3 어댑터와 호환되지 않습니다.

**참고**  
Snowball Edge에서 Amazon S3 호환 스토리지를 사용하는 경우 최신 버전의를 사용할 수 있습니다 AWS CLI. 최신 버전을 다운로드하여 사용하려면 [AWS Command Line Interface 사용 설명서](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)를 참조하세요.

### Linux 운영 체제 AWS CLI 에 설치
<a name="install-cli-linux"></a>

다음 체인 명령을 실행합니다.

```
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.14.zip" -o "awscli-bundle.zip";unzip awscli-bundle.zip;sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws;/usr/local/bin/aws --version;
```

### Windows 운영 체제 AWS CLI 에 설치
<a name="install-cli-windows"></a>

운영 체제에 맞는 설치 프로그램 파일을 다운로드하고 실행합니다.
+ [Python 2와 번들로 제공되는 32비트 설치 관리자](https://s3.amazonaws.com/aws-cli/AWSCLI32-1.16.14.msi)
+ [Python 3과 번들로 제공되는 32비트 설치 관리자](https://s3.amazonaws.com/aws-cli/AWSCLI32PY3-1.16.14.msi)
+ [Python 2와 번들로 제공되는 64비트 설치 관리자](https://s3.amazonaws.com/aws-cli/AWSCLI64-1.16.14.msi)
+ [Python 3과 번들로 제공되는 64비트 설치 관리자](https://s3.amazonaws.com/aws-cli/AWSCLI64PY3-1.16.14.msi)
+ [올바른 버전을 자동으로 설치하는 32비트 및 64비트 설치 관리자를 포함하는 설정 파일](https://s3.amazonaws.com/aws-cli/AWSCLISetup-1.16.14.exe)

## Snowball Edge 디바이스에서 AWS CLI 및 API 작업 사용
<a name="using-adapter-cli-specify-region"></a>

 AWS CLI 또는 API 작업을 사용하여 Snowball Edge에서 IAM, Amazon S3 및 Amazon EC2 명령을 실행할 때는 리전을 ""로 지정해야 합니다`snow`. 다음 예제와 같이 명령 자체 내에서 `AWS configure` 또는를 사용하여이 작업을 수행할 수 있습니다.

```
aws configure --profile abc
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: 1234567
Default region name [None]: snow
Default output format [None]: json
```

Or

```
aws s3 ls  --endpoint http://192.0.2.0:8080 --region snow --profile snowballEdge
```

### AWS Snowball Edge에 대한 Amazon S3 API 인터페이스를 사용한 권한 부여
<a name="auth-adapter"></a>

Amazon S3 어댑터를 사용하면 기본적으로 모든 상호 작용이 AWS 서명 버전 4 알고리즘으로 서명됩니다. 이 권한 부여는 소스에서 인터페이스로 이동하는 데이터를 확인하는 데에만 사용됩니다. 모든 암호화 및 암호화 해제는 디바이스에서 이루어집니다. 암호화되지 않은 데이터는 디바이스에 저장되지 않습니다.

인터페이스를 사용할 때는 다음 사항에 유의하세요.
+ 로컬 Amazon S3 자격 증명을 가져와 AWS Snowball Edge 디바이스에 대한 요청에 서명하려면 `snowballEdge list-access-keys` 및 `snowballEdge get-secret-access-keys` Snowball Edge 클라이언트 명령을 실행합니다. 자세한 내용은 [Snowball Edge 클라이언트 구성 및 사용](using-client-commands.md) 단원을 참조하십시오. 이러한 로컬 Amazon S3 자격 증명은 키 페어(액세스 키 및 비밀 키)를 포함합니다. 이러한 키는 작업과 연결된 디바이스에 대해서만 유효합니다. ( AWS Identity and Access Management IAM)이 없기 AWS 클라우드 때문에에서 사용할 수 없습니다.
+ 암호화 키는 사용하는 AWS 자격 증명에 따라 변경되지 않습니다. 서명 버전 4 알고리즘을 통한 서명은 소스에서 인터페이스로 이동하는 데이터를 확인하는 데에만 사용됩니다. 따라서 이러한 서명은 Snowball에서 데이터를 암호화하는 데 사용되는 암호화 키의 요소가 아닙니다.

## Snowball Edge에서 로컬 Amazon S3 자격 증명 가져오기 및 사용
<a name="adapter-credentials"></a>

Snowball Edge와의 모든 상호 작용은 AWS 서명 버전 4 알고리즘으로 서명됩니다. 알고리즘에 대한 자세한 정보는 *AWS 일반 참조*의 [서명 버전 4 서명 프로세스](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)를 참조하세요.

`snowballEdge list-access-keys` 및 `snowballEdge get-secret-access-key` Snowball Edge 클라이언트 정보를 실행하여 Snowball Edge 클라이언트 Edge 디바이스에 대한 요청에 서명하기 위한 로컬 Amazon S3 자격 증명을 얻을 수 있습니다([Snowball Edge에 대한 자격 증명 가져오기](using-client-commands.md#client-credentials) 참조). 이러한 로컬 Amazon S3 자격 증명은 키 페어(액세스 키 ID 및 비밀 키)를 포함합니다. 이러한 자격 증명은 작업과 연결된 디바이스에 대해서만 유효합니다. IAM이 없기 AWS 클라우드 때문에에서 사용할 수 없습니다.

이러한 자격 증명을 서버의 AWS 자격 증명 파일에 추가할 수 있습니다. 기본 자격 증명 프로필 파일은 일반적으로 `~/.aws/credentials`에 있지만, 위치는 플랫폼에 따라 다를 수 있습니다. 이 파일은 많은 AWS SDKs 및에서 공유됩니다 AWS CLI. 다음 예시와 같이 프로필 이름을 사용하여 로컬 자격 증명을 저장할 수 있습니다.

```
[snowballEdge]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### Snowball Edge에서 S3 어댑터를 엔드포인트로 AWS CLI 사용하도록 구성
<a name="using-adapter-cli-endpoint"></a>

 AWS CLI 를 사용하여 AWS Snowball Edge 디바이스에 명령을 실행할 때 엔드포인트를 Amazon S3 어댑터로 지정합니다. 다음과 같이 HTTPS 엔드포인트 또는 보안되지 않은 HTTP 엔드포인트를 사용할 수 있습니다.

**HTTPS 보안 엔드포인트**

```
aws s3 ls --endpoint https://192.0.2.0:8443 --ca-bundle path/to/certificate --profile snowballEdge
```

**HTTP 보안되지 않는 엔드포인트**

```
aws s3 ls --endpoint http://192.0.2.0:8080 --profile snowballEdge
```

`8443`의 HTTPS 엔드포인트를 사용하는 경우 데이터가 서버에서 Snowball Edge로 안전하게 전송됩니다. 이 암호화는 Snowball Edge에서 새 IP 주소를 가져올 때마다 생성하는 인증서로 보장됩니다. 인증서가 생기면 이를 로컬 `ca-bundle.pem` 파일에 저장할 수 있습니다. 그런 다음 다음 설명과 같이 인증서 경로를 포함하도록 AWS CLI 프로필을 구성할 수 있습니다.

**인증서를 인터페이스 엔드포인트에 연결하려면**

1. Snowball Edge를 전원과 네트워크에 연결한 후 켭니다.

1. 디바이스가 부팅을 마치면 로컬 네트워크상의 IP 주소를 적어 둡니다.

1. 네트워크의 터미널에서 Snowball Edge를 ping할 수 있는지 확인합니다.

1. 터미널에서 `snowballEdge get-certificate` 명령을 실행합니다. 이 명령에 대한 자세한 내용은 [Snowball Edge에서 퍼블릭 키 인증서 관리](snowball-edge-certificates-cli.md) 섹션을 참조하세요.

1. `snowballEdge get-certificate` 명령의 출력을 파일(예: `ca-bundle.pem`)에 저장합니다.

1. 터미널에서 다음 명령을 실행합니다.

   ```
   aws configure set profile.snowballEdge.ca_bundle /path/to/ca-bundle.pem
   ```

절차를 완료하면 다음 예시와 같이 이러한 로컬 자격 증명, 인증서 및 지정된 엔드포인트로 CLI 명령을 실행할 수 있습니다.

```
aws s3 ls --endpoint https://192.0.2.0:8443 --profile snowballEdge
```

## Snowball Edge의 Amazon S3 어댑터에 지원되지 않는 Amazon S3 기능
<a name="snowball-edge-s3-unsupported-features"></a>

Amazon S3 어댑터를 사용하여 Amazon S3 API 작업을 통해 프로그래밍 방식으로 Snowball Edge에서 데이터를 전송하고 수신할 수 있습니다. 하지만 일부 Amazon S3 전송 기능 및 API 작업은 Amazon S3 어댑터를 사용하여 Snowball Edge 디바이스에서 사용할 수 있도록 지원되지 않습니다. 예를 들어, 다음 기능 및 작업은 Snowball Edge에서 사용할 수 있도록 지원되지 않습니다.
+ [TransferManager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/examples-s3-transfermanager.html) - 이 유틸리티는 Java용 SDK를 사용하여 파일을 로컬 환경에서 Amazon S3로 전송합니다. 대신 지원되는 API 작업 또는 AWS CLI 명령을 인터페이스에서 사용하는 것을 고려해 보세요.
+ [GET Bucket(List Objects) 버전 2](https://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html) - 이 GET 작업의 구현은 버킷 내 객체를 일부 또는 전부(최대 1,000개) 반환합니다. [GET Bucket(List Objects) 버전 1](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) 작업 또는 [ls](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) AWS CLI 명령을 사용하는 것을 고려해 보세요.
+ [ListBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html) - 객체 엔드포인트가 있는 ListBuckets는 지원되지 않습니다. 다음 명령은 Snowball Edge의 Amazon S3 호환 스토리지에서 작동하지 않습니다.

  ```
  aws s3 ls --endpoint https://192.0.2.0 --profile profile                    
  ```