View a markdown version of this page

예제: AWS 서명 버전 4의 서명 계산 - Amazon Simple Storage Service

예제: AWS 서명 버전 4의 서명 계산

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

이 섹션에서는 Java 및 C#으로 작성된 서명 계산 예제를 제공합니다. 코드 샘플은 다음 요청을 전송하고 HTTP Authorization 헤더를 사용하여 인증 정보를 제공합니다.

  • PUT object – 개별 예제가 전체 페이로드를 한 번에 업로드하는 방법과 페이로드를 청크로 업로드하는 방법을 모두 보여줍니다. 인증에 Authorization 헤더를 사용하는 방법에 대한 자세한 내용은 요청 인증: Authorization 헤더 사용(AWS 서명 버전 4) 섹션을 참조하세요.

  • GET object – 이 예제에서는 미리 서명된 URL을 생성하여 객체를 가져옵니다. 쿼리 파라미터는 서명 및 기타 인증 정보를 제공합니다. 사용자는 브라우저에 미리 서명된 URL을 붙여 넣어 객체를 검색하거나 URL을 사용하여 클릭 가능한 링크를 생성할 수 있습니다. 인증에 쿼리 파라미터를 사용하는 방법에 대한 자세한 내용은 요청 인증: 쿼리 파라미터 사용(AWS 서명 버전 4) 섹션을 참조하세요.

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

Java를 사용한 서명 계산 예제(AWS 서명 버전 4)

서명 계산을 보여주는 Java 샘플은 https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AWSS3SigV4JavaSamples.zip에서 다운로드할 수 있습니다. 이러한 샘플은 AWS SDK for Java v1을 사용하므로 새 애플리케이션에는 AWS SDK for Java v2를 사용하는 것이 좋습니다. 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이 포함된 디렉터리로 이동합니다.

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

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

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

      참고

      이 예제에서는 가상 호스팅 방식 요청을 사용하여 버킷에 액세스합니다. 잠재적 오류를 방지하려면 Amazon Simple Storage Service 사용 설명서버킷 규제 및 제한에 설명된 대로 버킷 이름이 버킷 이름 지정 규칙을 준수하는지 확인하세요.

    • AWS 리전 버킷이 상주하는 위치입니다.

      버킷이 미국 동부(버지니아 북부) 리전에 있는 경우 us-east-1을 사용하여 리전을 지정합니다. 다른 AWS 리전의 목록은 AWS 일반 참조Amazon Simple Storage Service(S3)를 참조하세요.

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

    javac -d bin -source 6 -verbose com
  5. 디렉터리를 bin/으로 변경한 다음 RunAllSamples를 실행합니다.

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

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

C#을 사용한 서명 계산 예제(AWS 서명 버전 4)

서명 계산을 보여주는 C# 샘플은 https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AmazonS3SigV4_Samples_CSharp.zip에서 다운로드할 수 있습니다. 이러한 샘플은 AWS SDK for .NET v1을 사용하므로 새 애플리케이션에는 AWS SDK for .NET v3을 사용하는 것이 좋습니다. 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 파일의 압축을 풉니다.

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

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

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

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

  5. 코드를 실행합니다.

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