Amazon QuickSight API를 사용한 애플리케이션 개발 - 아마존 QuickSight

중요: Amazon QuickSight 분석 워크스페이스를 재설계했습니다. 콘솔의 새로운 모습을 반영하지 않는 스크린샷이나 절차 텍스트가 나타날 수 있습니다. QuickSight 스크린샷과 절차 텍스트를 업데이트하는 중입니다.

기능이나 항목을 찾으려면 빠른 검색창을 사용하세요.

QuickSight의 새로운 모습에 대한 자세한 내용은 Amazon에서의 새로운 분석 경험 소개를 참조하십시오 QuickSight.

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

Amazon QuickSight API를 사용한 애플리케이션 개발

AWSSDK를 사용하여 사용 중인 프로그래밍 언어 또는 플랫폼에 맞게 조정된 API에 액세스하여 배포의 대부분을 관리할 수 있습니다. 자세한 내용은 AWS SDK 섹션을 참조하세요.

API 작업에 대한 자세한 내용은 Amazon QuickSight API 레퍼런스를 참조하십시오.

Amazon QuickSight API 작업을 호출하려면 먼저 IAM 자격 증명에 연결된 정책의 quicksight:operation-name 권한이 필요합니다. 예를 들어 list-users을(를) 직접 호출하려면 quicksight:ListUsers 권한이 필요합니다. 모든 작업에 같은 패턴이 적용됩니다.

필요한 권한이 무엇인지 확실하지 않은 경우, 직접 호출해 볼 수 있습니다. 그러면 클라이언트가 누락된 권한이 무엇인지 알려줍니다. 명시적인 리소스를 지정하는 대신 권한 정책의 리소스 필드에 별표(*)를 사용할 수 있습니다. 하지만 각 권한을 최대한 제한할 것을 권장합니다. Amazon QuickSight Amazon 리소스 이름 (ARN) 식별자를 사용하여 정책에서 리소스를 지정하거나 제외하여 사용자 액세스를 제한할 수 있습니다.

자세한 내용은 다음을 참조하세요.

사용자 또는 그룹의 ARN을 검색하려면 해당 리소스에서 Describe 작업을 사용합니다. 또한 상황에 따라 IAM에 조건을 추가하여 API에 대한 액세스를 추가로 제한할 수도 있습니다. 예를 들어Group1, User1 를 추가할 때 기본 리소스는 Group1 특정 그룹에 대한 액세스를 허용하거나 거부할 수 있지만 IAM Amazon QuickSight 키를 사용하여 특정 사용자가 해당 그룹에 추가되는 것을 허용하거나 quicksight:UserName 금지하는 조건을 추가할 수도 있습니다.

다음은 정책의 예입니다. 즉, 이 정책이 연결된 함수 호출자는 그룹에 추가하려는 사용자 이름이 user1이 아니면 어떤 그룹에서든 CreateGroupMembership 작업을 호출할 수 있습니다.

{ "Effect": "Allow", "Action": "quicksight:CreateGroupMembership", "Resource": "arn:aws:quicksight:us-east-1:aws-account-id:group/default/*", "Condition": { "StringNotEquals": { "quicksight:UserName": "user1" } } }
AWS CLI

다음 절차는 AWS CLI를 통해 Amazon QuickSight API 작업과 상호 작용하는 방법을 설명합니다. 다음 명령은 Bash에서 테스트가 되었지만, 다른 명령줄 환경에서도 같거나 비슷할 것입니다.

  1. 환경에 AWS SDK를 설치하십시오. 설치 방법에 대한 지침은 AWS명령줄 인터페이스에 있습니다.

  2. 다음 명령 및 후속 지침을 사용하여 AWS CLI ID 및 지역을 설정합니다. 적정 권한을 가진 IAM 자격 증명 및 역할에 대한 자격 증명을 사용합니다.

    aws configure
  3. 다음 명령을 실행하여 Amazon QuickSight SDK 도움말을 살펴보십시오.

    aws quicksight help
  4. API 사용 방법에 대한 자세한 지침을 얻으려면 다음과 같이 도움말 다음에 나오는 이름을 입력합니다.

    aws quicksight list-users help
  5. 이제 Amazon QuickSight API 작업을 호출할 수 있습니다. 이 예시는 계정의 Amazon QuickSight 사용자 목록을 반환합니다.

    aws quicksight list-users --aws-account-id aws-account-id --namespace default --region us-east-1
Java SDK

다음 절차를 사용하여 QuickSight Amazon과 상호 작용하는 Java 앱을 설정합니다.

  1. 시작하려면 IDE에서 Java 프로젝트를 만듭니다.

  2. Amazon QuickSight SDK를 새 프로젝트로 가져옵니다. 예를 들면 다음과 같습니다. AWSQuickSightJavaClient-1.11.x.jar

  3. IDE에서 Amazon QuickSight SDK를 인덱싱하고 나면 다음과 같이 임포트 라인을 추가할 수 있습니다.

    import com.amazonaws.services.quicksight.AmazonQuickSight;

    IDE가 이를 유효하다고 인식하지 않은 경우에는 SDK를 가져왔는지 확인합니다.

  4. 다른 AWS SDK와 마찬가지로 Amazon QuickSight SDK도 여러 기능을 수행하려면 외부 종속성이 필요합니다. 외부 종속 프로그램은 다운로드를 하여 같은 프로젝트에 가져와야 합니다. 다음과 같은 종속 프로그램이 필요합니다.

  5. 이제 Amazon QuickSight 클라이언트를 만들 준비가 되었습니다. 클라이언트가 통신할 수 있는 기본 퍼블릭 엔드포인트를 사용하거나 엔드포인트를 명시적으로 참조할 수 있습니다. AWS자격 증명을 제공하는 방법은 여러 가지가 있습니다. 다음 예제와 같이 직접적이고 간단한 접근 방법이 제공되고 있습니다. 다음 클라이언트 메서드는 다음과 같이 모든 API를 호출하는 데 사용됩니다.

    private static AmazonQuickSight getClient() { final AWSCredentialsProvider credsProvider = new AWSCredentialsProvider() { @Override public AWSCredentials getCredentials() { // provide actual IAM access key and secret key here return new BasicAWSCredentials("access-key", "secret-key"); } @Override public void refresh() {} }; return AmazonQuickSightClientBuilder .standard() .withRegion(Regions.US_EAST_1.getName()) .withCredentials(credsProvider) .build(); }
  6. 이제 위의 클라이언트를 사용하여 Amazon QuickSight 계정의 모든 사용자를 나열할 수 있습니다.

    참고

    Amazon에 가입할 때 사용한 AWS 계정 ID를 제공해야 QuickSight 합니다. 이는 발신자 ID의 AWS 계정 ID와 일치해야 합니다. 현재는 교차 계정 호출이 지원되지 않습니다. 뿐만 아니라 필수 파라미터 namespace를 항상 기본으로 설정해야 합니다.

    getClient().listUsers(new ListUsersRequest() .withAwsAccountId("relevant_AWS_account_ID") .withNamespace("default")) .getUserList().forEach(user -> { System.out.println(user.getArn()); });
  7. 가능한 모든 API 작업과 해당 작업에서 사용하는 요청 객체의 목록을 보려면 IDE의 클라이언트 객체를 Ctrl 키를 누른 상태에서 클릭하여 Amazon 인터페이스를 볼 수 있습니다. QuickSight Amazon QuickSight JavaClient JAR 파일의 com.amazonaws.services.quicksight 패키지 내에서 찾을 수도 있습니다.

JavaScript (Node.js) SDK

다음 절차에 따라 Node.js 를 QuickSight 사용하여 Amazon과 상호 작용하십시오.

  1. 다음 명령을 사용하여 노드 환경을 설정합니다.

    • npm install aws-sdk

    • npm install aws4

    • npm install request

    • npm install url

  2. AWSSDK를 사용하여 Node.js 구성 및 자격 증명 설정에 대한 자세한 내용은 SDK v2용 AWS SDK for JavaScript 개발자 안내서--> 를 참조하십시오.

  3. 다음 코드 예제를 사용하여 설정을 테스트합니다. HTTPS는 필수입니다. 샘플에는 Amazon QuickSight 작업의 전체 목록과 해당 URL 요청 파라미터, 계정 내 Amazon QuickSight 사용자 목록이 차례로 표시됩니다.

    const AWS = require('aws-sdk'); const https = require('https'); var quicksight = new AWS.Service({ apiConfig: require('./quicksight-2018-04-01.min.json'), region: 'us-east-1', }); console.log(quicksight.config.apiConfig.operations); quicksight.listUsers({ // Enter your actual AWS account ID 'AwsAccountId': 'relevant_AWS_account_ID', 'Namespace': 'default', }, function(err, data) { console.log('---'); console.log('Errors: '); console.log(err); console.log('---'); console.log('Response: '); console.log(data); });
Python3 SDK

Amazon과 상호 작용할 사용자 지정 botocore 패키지를 생성하려면 다음 절차를 사용하십시오 QuickSight.

  1. AWS디렉터리에 사용자 환경의 자격 증명 파일을 생성하십시오. Linux/Mac 기반 환경에서는 이 파일을 ~/.aws/credentials라고 부르며, 그 형식은 다음과 같습니다.

    [default] aws_access_key_id = Your_IAM_access_key aws_secret_access_key = Your_IAM_secret_key
  2. botocore-1.12.10 폴더를 압축 해제합니다. botocore-1.12.10에 디렉터리를 변경하고 Python 3 인터프리터 환경에 들어갑니다.

  3. 응답은 딕셔너리 객체 형태로 반환됩니다. 이들 각각은 요청 ID와 응답 상태가 포함된 ResponseMetadata 항목을 가지고 있습니다. 다른 항목들은 실행하는 작업 유형에 따라 결정됩니다.

  4. 다음 예제는 먼저 그룹을 생성, 삭제 및 나열하는 샘플 앱입니다. 그런 다음, Quicksight 계정에 사용자를 나열합니다.

    import botocore.session default_namespace = 'default' account_id = 'relevant_AWS_Account' session = botocore.session.get_session() client = session.create_client("quicksight", region_name='us-east-1') print('Creating three groups: ') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3') print('Retrieving the groups and listing them: ') response = client.list_groups(AwsAccountId = account_id, Namespace=default_namespace) for group in response['GroupList']: print(group) print('Deleting our groups: ') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3') response = client.list_users(AwsAccountId = account_id, Namespace=default_namespace) for user in response['UserList']: print(user)
.NET/C# SDK

다음 절차에 따라 C#.NET을 QuickSight 사용하여 Amazon과 상호 작용할 수 있습니다. 이 예제는 Mac용 Microsoft Visual에서 구성한 것이기 때문에 IDE 및 플랫폼에 따라 지침이 약간 다를 수 있습니다. 하지만 서로 비슷할 것입니다.

  1. nuget.zip 파일을 nuget라는 폴더에 풉니다.

  2. Visual Studio에 콘솔 앱 프로젝트를 새로 생성합니다.

  3. 솔루션 아래에서 앱 종속성을 찾아서, 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) 패키지 추가를 선택합니다.

  4. 소스 목록에서 소스 구성을 선택합니다.

  5. 추가를 선택하고 QuickSightSDK라고 소스 이름을 명명합니다. nuget 폴더를 검색하고 소스 추가를 선택합니다.

  6. 확인을 선택합니다. 그런 다음 QuickSightSDK 선택한 상태에서 Amazon QuickSight 패키지 세 개를 모두 선택합니다.

    • AWSSDK.QuickSight

    • AWSSDK.Extensions.NETCore.Setup

    • AWSSDK.Extensions.CognitoAuthentication

  7. 패키지 추가를 클릭합니다.

  8. 다음 샘플 앱을 콘솔 앱 편집기에 복사하여 붙여 넣습니다.

    using System; using Amazon.QuickSight.Model; using Amazon.QuickSight; namespace DotNetQuickSightSDKTest { class Program { private static readonly string AccessKey = "insert_your_access_key"; private static readonly string SecretAccessKey = "insert_your_secret_key"; private static readonly string AccountID = "AWS_account_ID"; private static readonly string Namespace = "default"; // leave this as default static void Main(string[] args) { var client = new AmazonQuickSightClient( AccessKey, SecretAccessKey, Amazon.RegionEndpoint.USEast1); var listUsersRequest = new ListUsersRequest { AwsAccountId = AccountID, Namespace = Namespace }; client.ListUsersAsync(listUsersRequest).Result.UserList.ForEach( user => Console.WriteLine(user.Arn) ); var listGroupsRequest = new ListGroupsRequest { AwsAccountId = AccountID, Namespace = Namespace }; client.ListGroupsAsync(listGroupsRequest).Result.GroupList.ForEach( group => Console.WriteLine(group.Arn) ); } } }