

# 예제: AWS 서명 버전 4의 서명 계산
<a name="sig-v4-examples-using-sdks"></a>

**Topics**
+ [Java를 사용한 서명 계산 예제(AWS 서명 버전 4)](#sig-v4-examples-using-sdk-java)
+ [C\#을 사용한 서명 계산 예제(AWS 서명 버전 4)](#sig-v4-examples-using-sdk-dotnet)

 인증된 요청의 경우, AWS SDK를 사용하지 않는 한 요청에 인증 정보를 제공하는 서명을 계산하는 코드를 작성해야 합니다. AWS 서명 버전 4([요청 인증(AWS 서명 버전 4)](sig-v4-authenticating-requests.md) 참조)의 서명 계산은 복잡한 작업일 수 있으므로 가능한 경우 AWS SDK를 사용하는 것이 좋습니다.

 이 섹션에서는 Java 및 C\#으로 작성된 서명 계산 예제를 제공합니다. 코드 샘플은 다음 요청을 전송하고 HTTP Authorization 헤더를 사용하여 인증 정보를 제공합니다.
+ **PUT object** – 개별 예제가 전체 페이로드를 한 번에 업로드하는 방법과 페이로드를 청크로 업로드하는 방법을 모두 보여줍니다. 인증에 Authorization 헤더를 사용하는 방법에 대한 자세한 내용은 [요청 인증: Authorization 헤더 사용(AWS 서명 버전 4)](sigv4-auth-using-authorization-header.md) 섹션을 참조하세요.
+ **GET object** – 이 예제에서는 미리 서명된 URL을 생성하여 객체를 가져옵니다. 쿼리 파라미터는 서명 및 기타 인증 정보를 제공합니다. 사용자는 브라우저에 미리 서명된 URL을 붙여 넣어 객체를 검색하거나 URL을 사용하여 클릭 가능한 링크를 생성할 수 있습니다. 인증에 쿼리 파라미터를 사용하는 방법에 대한 자세한 내용은 [요청 인증: 쿼리 파라미터 사용(AWS 서명 버전 4)](sigv4-query-string-auth.md) 섹션을 참조하세요.

이 섹션의 나머지 부분에서는 Java 및 C\#으로 작성된 예제를 설명합니다. 주제에는 샘플 다운로드 및 실행을 위한 지침이 포함되어 있습니다.

## Java를 사용한 서명 계산 예제(AWS 서명 버전 4)
<a name="sig-v4-examples-using-sdk-java"></a>

서명 계산을 보여주는 Java 샘플은 [https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AWSS3SigV4JavaSamples.zip](samples/AWSS3SigV4JavaSamples.zip)에서 다운로드할 수 있습니다. 이러한 샘플은 AWS SDK for Java v1을 사용하므로 새 애플리케이션에는 [AWS SDK for Java v2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)를 사용하는 것이 좋습니다. `RunAllSamples.java`에서 `main()` 함수는 샘플 요청을 실행하여 객체를 생성하고, 객체를 검색하고, 객체에 대해 미리 서명된 URL을 생성합니다. 샘플은 코드에 제공된 텍스트 문자열에서 객체를 생성합니다.

```
PutS3ObjectSample.putS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
GetS3ObjectSample.getS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
PresignedUrlSample.getPresignedUrlToS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
PutS3ObjectChunkedSample.putS3ObjectChunked(bucketName, regionName, awsAccessKey, awsSecretKey);
```

**Linux 기반 컴퓨터에서 예제를 테스트하려면**

다음은 Linux 운영 체제용 지침입니다.

1. 터미널에서 `AWSS3SigV4JavaSamples.zip`이 포함된 디렉터리로 이동합니다.

1. .zip 파일의 압축을 풉니다.

1. 텍스트 편집기에서 `./com/amazonaws/services/s3/samples/RunAllSamples.java` 파일을 엽니다. 코드를 다음 정보로 업데이트합니다.

    
   + 새 객체를 생성할 수 있는 버킷의 이름입니다.

      
**참고**  
이 예제에서는 가상 호스팅 방식 요청을 사용하여 버킷에 액세스합니다. 잠재적 오류를 방지하려면 *Amazon Simple Storage Service 사용 설명서*의 [버킷 규제 및 제한](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)에 설명된 대로 버킷 이름이 버킷 이름 지정 규칙을 준수하는지 확인하세요.
   + AWS 리전 버킷이 상주하는 위치입니다.

      버킷이 미국 동부(버지니아 북부) 리전에 있는 경우 us-east-1을 사용하여 리전을 지정합니다. 다른 AWS 리전의 목록은 *AWS 일반 참조*의 [Amazon Simple Storage Service(S3)](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)를 참조하세요.

1. 소스 코드를 컴파일하고 컴파일된 클래스를 `bin/` 디렉터리에 저장합니다.

   ```
   javac -d bin -source 6 -verbose com
   ```

1. 디렉터리를 `bin/`으로 변경한 다음 `RunAllSamples`를 실행합니다.

    

   ```
   java com.amazonaws.services.s3.sample.RunAllSamples
   ```

   코드는 `main()`의 메서드를 모두 실행합니다. 각 요청에 대해 출력에 정식 요청, 서명할 문자열 및 서명이 표시됩니다.



## C\#을 사용한 서명 계산 예제(AWS 서명 버전 4)
<a name="sig-v4-examples-using-sdk-dotnet"></a>

 서명 계산을 보여주는 C\# 샘플은 [https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AmazonS3SigV4\_Samples\_CSharp.zip](samples/AmazonS3SigV4_Samples_CSharp.zip)에서 다운로드할 수 있습니다. 이러한 샘플은 AWS SDK for .NET v1을 사용하므로 새 애플리케이션에는 [AWS SDK for .NET v3](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/home.html)을 사용하는 것이 좋습니다. `Program.cs`에서 `main()` 함수는 샘플 요청을 실행하여 객체를 생성하고, 객체를 검색하고, 객체에 대해 미리 서명된 URL을 생성합니다. 서명 계산을 위한 코드는 `\Signers` 폴더에 있습니다.

```
PutS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt");

Console.WriteLine("\n\n************************************************");
PutS3ObjectChunkedSample.Run(awsRegion, bucketName, "MySampleFileChunked.txt");

Console.WriteLine("\n\n************************************************");
GetS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt");

Console.WriteLine("\n\n************************************************");
PresignedUrlSample.Run(awsRegion, bucketName, "MySampleFile.txt");
```

**Microsoft Visual Studio 2010 이상을 사용하여 예제를 테스트하려면**

1. .zip 파일의 압축을 풉니다.

1.  Visual Studio를 시작한 다음 .sln 파일을 엽니다.

1. App.config 파일을 유효한 보안 자격 증명으로 업데이트합니다.

1. 다음과 같이 코드를 업데이트합니다.

    
   +  `Program.cs`에서 버킷 이름과 버킷이 상주하는 AWS 리전을 입력합니다. 샘플은 이 버킷에 객체를 생성합니다.

1. 코드를 실행합니다.

1.  객체가 생성되었는지 확인하려면 프로그램이 생성하는 미리 서명된 URL을 복사하여 브라우저 창에 붙여 넣습니다.