AWS Quicksight - การฝังแดชบอร์ด

คุณยังสามารถฝังแดชบอร์ด Quicksight ลงในแอปพลิเคชัน / เว็บเพจภายนอกหรือสามารถควบคุมการเข้าถึงของผู้ใช้โดยใช้บริการ AWS Cognito ในการดำเนินการควบคุมผู้ใช้คุณสามารถสร้างพูลผู้ใช้และพูลข้อมูลประจำตัวใน Cognito และกำหนดนโยบายแดชบอร์ดแบบฝังให้กับพูลข้อมูลประจำตัว

AWS Cognito เป็นบริการ IAM ที่ช่วยให้ผู้ดูแลระบบสามารถสร้างและจัดการผู้ใช้ชั่วคราวเพื่อให้เข้าถึงแอปพลิเคชันได้ คุณสามารถจัดการสิทธิ์ในพูลผู้ใช้เหล่านี้ได้ด้วยการใช้พูลข้อมูลประจำตัว

มาดูกันว่าเราจะสร้าง URL แดชบอร์ดที่ปลอดภัยและควบคุมผู้ใช้ได้อย่างไร -

ขั้นตอนที่ 1 - การสร้างกลุ่มผู้ใช้และผู้ใช้

สร้างกลุ่มผู้ใช้ใน AWS Cognito และสร้างผู้ใช้ ไปที่Amazon Cognito → Manage User Pools → Create a User Pool.

ขั้นตอนที่ 2 - การสร้างกลุ่มข้อมูลประจำตัว

เมื่อสร้างพูลผู้ใช้ขั้นตอนต่อไปคือการสร้างพูลเอกลักษณ์ ไปที่https://console.aws.amazon.com/cognito/home?region=us-east-1

คลิกที่ "Create New Identity Pool"

ป้อนชื่อที่เหมาะสมของกลุ่มข้อมูลประจำตัว ไปที่ส่วน Authentication Providers แล้วเลือกตัวเลือก“ Cognito”

ขั้นตอนที่ 3 - การสร้างบทบาท Cognito

ป้อน User Pool ID (User pool ID ของคุณ) และ App Client ID (ไปที่ App Clients ใน user pool และ copy id)

จากนั้นคลิกที่ 'สร้างพูล' และคลิกที่ 'อนุญาต' เพื่อสร้างบทบาทของกลุ่มข้อมูลประจำตัวใน IAM จะสร้าง 2 บทบาท Cognito

ขั้นตอนที่ 4 - การกำหนดนโยบายที่กำหนดเอง

ขั้นตอนต่อไปคือการกำหนดนโยบายที่กำหนดเองให้กับบทบาทข้อมูลประจำตัวที่สร้างในขั้นตอนข้างต้น -

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Action": "quicksight:RegisterUser",
         "Resource": "*",
         "Effect": "Allow"
      },
      {
         "Action": "quicksight:GetDashboardEmbedUrl",
         "Resource": "*",
         "Effect": "Allow"
      },
      {
         "Action": "sts:AssumeRole",
         "Resource": "*",
         "Effect": "Allow"
      }
   ]
}

คุณสามารถส่งผ่านแดชบอร์ด Amazon Resource Name (ARN) ภายใต้การตรวจสอบอย่างรวดเร็ว: GetDashboardEmbedUrl”แทน“ *” เพื่อ จำกัด ผู้ใช้ให้เข้าถึงแดชบอร์ดเดียว

ขั้นตอนที่ 5 - เข้าสู่แอปพลิเคชัน Cognito

ขั้นตอนต่อไปคือการล็อกอินเข้าสู่แอปพลิเคชัน Cognito ด้วยข้อมูลรับรองผู้ใช้ในกลุ่มผู้ใช้ เมื่อผู้ใช้ล็อกอินเข้าสู่แอปพลิเคชัน Cognito จะสร้างโทเค็น 3 รายการ -

  • IDToken
  • AccessToken
  • รีเฟรชโทเค็น

ในการสร้างผู้ใช้ IAM ชั่วคราวข้อมูลรับรองมีดังที่แสดงด้านล่าง -

AWS.config.region = 'us-east-1';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   IdentityPoolId:"Identity pool ID", Logins: {
      'cognito-idp.us-east-1.amazonaws.com/UserPoolID': AccessToken
   }
});

สำหรับการสร้างข้อมูลรับรอง IAM ชั่วคราวคุณต้องเรียกใช้ sts สมมติว่า role method ด้วยพารามิเตอร์ด้านล่าง -

var params = {
   RoleArn: "Cognito Identity role arn", RoleSessionName: "Session name"
};
sts.assumeRole(params, function (err, data) {
   if (err) console.log( err, err.stack); 
   // an error occurred
   else {
      console.log(data);
   })
}

ขั้นตอนที่ 6 - ลงทะเบียนผู้ใช้ใน Quicksight

ขั้นตอนต่อไปคือการลงทะเบียนผู้ใช้ใน Quicksight โดยใช้“ quicksight.registerUser” สำหรับข้อมูลรับรองที่สร้างขึ้นในขั้นตอนที่ 3 ด้วยพารามิเตอร์ด้านล่าง -

var params = {
   AwsAccountId: “account id”,
   Email: 'email',
   IdentityType: 'IAM' ,
   Namespace: 'default',
   UserRole: ADMIN | AUTHOR | READER | RESTRICTED_AUTHOR | RESTRICTED_READER,
   IamArn: 'Cognito Identity role arn',
   SessionName: 'session name given in the assume role creation',
};
quicksight.registerUser(params, function (err, data1) {
   if (err) console.log("err register user”); 
   // an error occurred
   else {
      // console.log("Register User1”);
   }
})

ขั้นตอนที่ 7 - การอัปเดตไฟล์ AWS Configuration

ถัดไปคือการอัปเดตการกำหนดค่า AWS สำหรับผู้ใช้ที่สร้างขึ้นในขั้นตอนที่ 5

AWS.config.update({
   accessKeyId: AccessToken,
   secretAccessKey: SecretAccessKey ,
   sessionToken: SessionToken,
   "region": Region
});

ขั้นตอนที่ 8 - การสร้าง URL แบบฝังสำหรับแดชบอร์ด Quicksight

ด้วยข้อมูลรับรองที่สร้างขึ้นในขั้นตอนที่ 5 ให้เรียกใช้ quicksight.getDashboardEmbedUrl ด้วยพารามิเตอร์ด้านล่างเพื่อสร้าง URL

var params = {
   AwsAccountId: "Enter AWS account ID",
   DashboardId: "Enter dashboard Id",
   IdentityType: "IAM",
   ResetDisabled: true,
   SessionLifetimeInMinutes: between 15 to 600 minutes,
   UndoRedoDisabled: True | False
}
quicksight.getDashboardEmbedUrl(params,function (err, data) {
   if (!err) {
      console.log(data);
   } else {
      console.log(err);
   }
});

คุณต้องเรียก“ QuickSightEmbedding.embedDashboard” จากแอปพลิเคชันของคุณโดยใช้ URL ที่สร้างขึ้นด้านบน

เช่นเดียวกับ Amazon Quicksight แดชบอร์ดแบบฝังยังรองรับคุณสมบัติต่อไปนี้ -

  • ตัวเลือกเจาะลึก
  • การดำเนินการแบบกำหนดเอง (ลิงก์ไปยังแท็บใหม่)
  • ตัวกรองบนหน้าจอ
  • ดาวน์โหลดเป็น CSV
  • การเรียงลำดับบนภาพ
  • เลือกใช้รายงานอีเมล
  • รีเซ็ตแดชบอร์ดเป็นตัวเลือกค่าเริ่มต้น
  • เลิกทำ / ทำซ้ำการกระทำบนแดชบอร์ด