Amazon Web Services 한국 블로그

AWS SDK for C++ 출시

오늘 오픈 소스 기반의 AWS C++ SDK를 발표합니다. 이를 통해 Amazon Web Services와 연계하여 네이티브 응용 프로그램 개발에 큰 도움이 될 것입니다. AWS SDK for C++는 현대적인 C++ 인터페이스에서 낮은 의존성 및 저수준 및 고수준 인터페이스에서 완벽하게 작동하도록 설계했습니다. 하지만, 가능한 한 외부 의존성은 낮추어 플랫폼이 독립적으로 동작합니다. 동시에 Windows, OS X, Linux 모바일 플랫폼을 지원합니다.

본 SDK는 게임 개발자를 위해 좀 더 집중적으로 설계하였습니다. 또한, 시스템 엔지니어링 및 기타 네이티브 코드의 효율성을 필요로하는 프로젝트 등에도 사용할 수 있도록 인터페이스 제공합니다.

주요 기능

  • 표준 템플릿 라이브러리 (STL) 사용
  • 사용자 정의 메모리 관리 지원
  • C++ 11 기능을 사용 및 지원
  • CMake 이용 네이티브 컴파일러 사용
  • 낮은 외부 의존도
  • 안전한 예외 설계
  • 세부 설정 가능한 로깅
  • 기본 자격 증명 공급자
  • Amazon Cognito Identity를 통한 ID 관리
  • TransferClient을 통한 Amazon S3에 대한 높은 수준 인터페이스
  • 암호화 및 HTTP의 지원에 기본 OS의 API 이용

코드 샘플
아래 코드는 Amazon DynamoDB 테이블에 데이터를 저장하는 샘플 코드입니다.

 
Aws::DynamoDB::DynamoDBClient dynamoDbClient;
PutItemRequest putItemRequest;
putItemRequest.WithTableName("TestTableName");
AttributeValue hashKeyAttribute;
hashKeyAttribute.SetS("SampleHashKeyValue");
putItemRequest.AddItem("HashKey", hashKeyAttribute);
AttributeValue valueAttribute;
valueAttribute.SetS("SampleValue");
putItemRequest.AddItem("Value", valueAttribute);
auto putItemOutcome = dynamoDbClient.PutItem(putItemRequest);

if(putItemOutcome.IsSuccess())
{
    std::cout << "PutItem Success Using IOPS " << putItemOutcome.GetResult().GetConsumedCapacity();
}
else
{
    std::cout << "PutItem failed with error " << putItemOutcome.GetError().GetMessage();
}

Amazon Simple Storage Service (S3)에서 파일을 다운로드하는 샘플코드입니다.

 
Aws::S3::S3Client s3Client;
GetObjectRequest getObjectRequest;
getObjectRequest.SetBucket("sample_bucket");
getObjectRequest.SetKey("sample_key");
getObjectRequest.SetResponseStreamFactory(
    [](){
        return Aws::New(ALLOCATION_TAG, DOWNLOADED_FILENAME, std::ios_base::out | std::ios_base::in | std::ios_base::trunc);
    });
auto getObjectOutcome = s3Client.GetObject(getObjectRequest);
if(getObjectOutcome.IsSuccess())
{
    std::cout << "File downloaded from S3 to location " << DOWNLOADED_FILENAME;
}
else
{
    std::cout << "File download failed from s3 with error " << getObjectOutcome.GetError().GetMessage();
}

간단하지요? GitHub 오늘 다운로드하여 AWS를 통해 C++용 프로그램을 더 확장해 보세요.

현재 상태
AWS SDK for C++는 현재 실험적으로 제공합니다. 사용자 분들과 오픈 소스 커뮤니티에서 의견을 모아 API를 더 견고하게 만들고 있습니다. 또한 개별 서비스 지원을 추가하고 클라이언트가 제대로 프로토콜을 지원할 수 있도록 노력하고 있습니다. 의견과 아이디어를 GitHub의 Issue로 보내주세요.

Jonathan Henson, Software Development Engineer (SDE)

이 글은 Introducing the AWS SDK for C++의 한국어 번역입니다.