{"id":22662,"date":"2026-06-22T10:35:55","date_gmt":"2026-06-22T01:35:55","guid":{"rendered":"https:\/\/itport.cloud\/?p=22662"},"modified":"2026-06-22T10:35:55","modified_gmt":"2026-06-22T01:35:55","slug":"post-22662","status":"publish","type":"post","link":"https:\/\/itport.cloud\/?p=22662","title":{"rendered":"Terraform\u3067Amazon QuickSight\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u30b3\u30fc\u30c9\u7ba1\u7406\u3059\u308b"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"e381afe38198e38281e381ab-1\">\u306f\u3058\u3081\u306b<\/h2>\n\n\n\n<p>Amazon QuickSight\u306f\u3001\u30c7\u30fc\u30bf\u306e\u5206\u6790\u30fb\u53ef\u8996\u5316\u30fb\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u81ea\u52d5\u5316\u30fb\u7d44\u7e54\u5168\u4f53\u3067\u306e \u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u73fe\u3059\u308b\u3001\u751f\u6210AI\u3092\u6d3b\u7528\u3057\u305fBI\u30c4\u30fc\u30eb\u3067\u3059\u3002 <br>\u4e3b\u306a\u69cb\u6210\u8981\u7d20\u3068\u3057\u3066\u300c\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u300d\u300c\u5206\u6790\u300d\u300c\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u300d\u306e3\u3064\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>SQL\u3092\u4f7f\u308f\u306a\u304f\u3066\u3082\u753b\u9762\u304b\u3089\u306e\u64cd\u4f5c\u3067\u30c7\u30fc\u30bf\u3092\u30c6\u30fc\u30d6\u30eb\u306a\u3069\u306b\u53ef\u8996\u5316\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br>\u3067\u3059\u304c\u3001\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u6570\u304c\u5897\u3048\u3066\u304f\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3053\u3068\u304c\u5927\u5909\u306b\u306a\u3063\u3066\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u958b\u767a\u30fb\u691c\u8a3c\u30fb\u672c\u756a\u306e\u3088\u3046\u306b\u74b0\u5883\u3084\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u5206\u304b\u308c\u3066\u3044\u3066\u3001\u6bce\u56de\u753b\u9762\u304b\u3089\u624b\u4f5c\u696d\u3067\u540c\u3058\u5185\u5bb9\u3092\u4f5c\u308a\u76f4\u3059\u306e\u304c\u8f9b\u3044<\/li>\n\n\n\n<li>\u74b0\u5883\u9593\u3067\u8a2d\u5b9a\u306b\u30ba\u30ec\u304c\u751f\u3058\u3066\u3057\u307e\u3046<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001<strong>Terraform<\/strong>\u3092\u4f7f\u3063\u3066QuickSight\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u30b3\u30fc\u30c9\u3067\u7ba1\u7406\u3059\u308b\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<br>\u307e\u305f\u3001Quicksight\u4e0a\u3067\u3082\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306eSQL\u306f\u5c65\u6b74\u7ba1\u7406\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001<br>\u4f5c\u6210\u3057\u305fSQL\u30d5\u30a1\u30a4\u30eb\u3092Git\u3067\u7ba1\u7406\u3059\u308b\u3053\u3068\u3067\u74b0\u5883\u9593\u306e\u5c55\u958b\u304c\u53ef\u80fd\u306b\u306a\u308a\u3001\u5909\u66f4\u5c65\u6b74\u306e\u8ffd\u8de1\u30fb\u30c1\u30fc\u30e0\u3067\u306e\u5171\u540c\u4f5c\u696d\u3082\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"terraforme381a8e381af-2\">Terraform\u3068\u306f<\/h2>\n\n\n\n<p>Terraform\u306f<strong>\u30a4\u30f3\u30d5\u30e9\u3092\u30b3\u30fc\u30c9\u3067\u7ba1\u7406\u3059\u308b\u30c4\u30fc\u30eb<\/strong>\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u901a\u5e38\u3001AWS\u306e\u30ea\u30bd\u30fc\u30b9\uff08\u4eca\u56de\u306fQuickSight\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306a\u3069\uff09\u306f\u30b3\u30f3\u30bd\u30fc\u30eb\u753b\u9762\u3067\u30dd\u30c1\u30dd\u30c1\u4f5c\u6210\u3057\u307e\u3059\u304c\u3001Terraform\u3092\u4f7f\u3046\u3068 <code>.tf<\/code> \u30d5\u30a1\u30a4\u30eb\u3092\u901a\u3058\u3066\u81ea\u52d5\u3067\u4f5c\u6210\u30fb\u66f4\u65b0\u30fb\u524a\u9664\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ntf\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304f \u2192 terraform plan\uff08\u5dee\u5206\u78ba\u8a8d\uff09\u2192 terraform apply\uff08\u5b9f\u969b\u306b\u53cd\u6620\uff09\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e6a78be68890e381aee6a682e8a681-3\">\u69cb\u6210\u306e\u6982\u8981<\/h2>\n\n\n\n<p>\u4eca\u56de\u4f5c\u6210\u3059\u308b\u30d5\u30a9\u30eb\u30c0\u69cb\u6210\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059\u3002<br>\uff08\u793e\u5185\u7528\u306e\u60f3\u5b9a\u306e\u305f\u3081\u3001.gitignore\u306f\u4f5c\u6210\u3057\u3066\u304a\u308a\u307e\u305b\u3093\u3002\u7528\u9014\u306b\u5408\u308f\u305b\u3066\u8a2d\u5b9a\u304f\u3060\u3055\u3044\u3002\uff09<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nquicksight-iac\/\n\u251c\u2500\u2500 environments\/\n\u2502   \u251c\u2500\u2500 dev\/\n\u2502   \u2502   \u2514\u2500\u2500 main.tf        # \u958b\u767a\u74b0\u5883\u306e\u8a2d\u5b9a\n\u2502   \u251c\u2500\u2500 stag\/\n\u2502   \u2502   \u2514\u2500\u2500 main.tf        # \u691c\u8a3c\u74b0\u5883\u306e\u8a2d\u5b9a\n\u2502   \u2514\u2500\u2500 prod\/\n\u2502       \u2514\u2500\u2500 main.tf        # \u672c\u756a\u74b0\u5883\u306e\u8a2d\u5b9a\n\u2514\u2500\u2500 modules\/\n    \u2514\u2500\u2500 dataset\/\n        \u251c\u2500\u2500 main.tf        # \u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\n        \u251c\u2500\u2500 variables.tf   # \u5909\u6570\u5b9a\u7fa9\n        \u251c\u2500\u2500 outputs.tf     # \u51fa\u529b\u5b9a\u7fa9\n        \u2514\u2500\u2500 sql\/\n            \u2514\u2500\u2500 *.sql.tftpl  # SQL\u30d5\u30a1\u30a4\u30eb\uff08\u74b0\u5883\u5909\u6570\u5bfe\u5fdc\uff09\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"e3839de382a4e383b3e38388efbc9asqle381aee38386e383b3e38397e383ace383bce38388e5a489e695b0-4\">\u30dd\u30a4\u30f3\u30c8\uff1aSQL\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5909\u6570<\/h3>\n\n\n\n<p>\u74b0\u5883\u3054\u3068\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\u3060\u3051\u304c\u7570\u306a\u308b\u5834\u5408\u3001SQL\u30d5\u30a1\u30a4\u30eb\u306b\u5909\u6570\u3068\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\u3092\u57cb\u3081\u8fbc\u3080\u3053\u3068\u3067\u30011\u3064\u306eSQL\u30d5\u30a1\u30a4\u30eb\u3092\u5168\u74b0\u5883\u3067\u4f7f\u3044\u56de\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- \u74b0\u5883\u5909\u6570\u3092\u4f7f\u3063\u305fSQL\u306e\u4f8b\nSELECT *\nFROM \"${database_name}\".\"\u30c6\u30fc\u30d6\u30eb\u540d\" AS t1<\/code><\/pre>\n\n\n\n<p><code>${database_name}<\/code> \u306e\u90e8\u5206\u304c\u74b0\u5883\u3054\u3068\u306b\u81ea\u52d5\u3067\u7f6e\u304d\u63db\u308f\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u74b0\u5883<\/th><th>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\uff08\u4eee\u3067\u8a2d\u5b9a\u3057\u307e\u3057\u305f\uff09<\/th><\/tr><\/thead><tbody><tr><td>\u958b\u767a<\/td><td>DB-dev<\/td><\/tr><tr><td>\u691c\u8a3c<\/td><td>DB-stag<\/td><\/tr><tr><td>\u672c\u756a<\/td><td>DB-prod<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u4eca\u56de\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306fAWS Athena\uff08S3\u4e0a\u306e\u30c7\u30fc\u30bf\u3092SQL\u3067\u691c\u7d22\u3067\u304d\u308b\u30b5\u30fc\u30d3\u30b9\uff09\u3067\u3059\u3002<br>QuickSight\u304b\u3089Athena\u306b\u63a5\u7d9a\u3059\u308b\u8a2d\u5b9a\uff08\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\uff09\u306f\u4e8b\u524d\u306b\u624b\u52d5\u3067\u4f5c\u6210\u6e08\u307f\u306e\u524d\u63d0\u3067\u9032\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e382bbe38383e38388e382a2e38383e38397e6898be9a086-5\">\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u624b\u9806<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-aws-clie381aee382a4e383b3e382b9e38388e383bce383abe381a8e8a8ade5ae9a-6\">1. AWS CLI\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u8a2d\u5b9a<\/h3>\n\n\n\n<p>AWS CLI\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u3001PowerShell\u3067\u8a8d\u8a3c\u60c5\u5831\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aws configure<\/code><\/pre>\n\n\n\n<p>\u4ee5\u4e0b\u3092\u9806\u756a\u306b\u5165\u529b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AWS Access Key ID: \uff08IAM\u30e6\u30fc\u30b6\u30fc\u306e\u30a2\u30af\u30bb\u30b9\u30ad\u30fcID\uff09\nAWS Secret Access Key: \uff08\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\uff1aIAM\u304b\u3089\u767a\u884c\uff09\nDefault region name: ap-northeast-1\nDefault output format: json<\/code><\/pre>\n\n\n\n<p>\u63a5\u7d9a\u78ba\u8a8d\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aws sts get-caller-identity<\/code><\/pre>\n\n\n\n<p>\u30a2\u30ab\u30a6\u30f3\u30c8\u60c5\u5831\u304c\u8868\u793a\u3055\u308c\u308c\u3070\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-terraforme381aee382a4e383b3e382b9e38388e383bce383ab-7\">2. Terraform\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n\n\n\n<p>\u4eca\u56de\u306f\u4ee5\u4e0b\u306e\u30b5\u30a4\u30c8\u3092\u53c2\u8003\u306b\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002<br>windows\u306bTerraform\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/p>\n\n\n\n<p><a href=\"https:\/\/qiita.com\/watyanabe164\/items\/99bd119e23c5ed9b71ac\" target=\"_blank\">https:\/\/qiita.com\/watyanabe164\/items\/99bd119e23c5ed9b71ac<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-e38395e382a9e383abe38380e4bd9ce68890-8\">3. \u30d5\u30a9\u30eb\u30c0\u4f5c\u6210<\/h3>\n\n\n\n<p>\u4eca\u56de\u4f7f\u7528\u3059\u308b\u30d5\u30a9\u30eb\u30c0\u3092\u305d\u308c\u305e\u308c\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u304b\u3089\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir quicksight-iac\ncd quicksight-iac\nmkdir environments\\dev\nmkdir environments\\stag\nmkdir environments\\prod\nmkdir modules\\dataset\nmkdir modules\\dataset\\sql<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e38395e382a1e382a4e383abe381aee4b8ade8baab-9\">\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u8eab<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"modules-dataset-variables-tf-10\">modules\/dataset\/variables.tf<\/h3>\n\n\n\n<p>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u53d7\u3051\u53d6\u308b<strong>\u5909\u6570\u306e\u5b9a\u7fa9<\/strong>\u3067\u3059\u3002\u74b0\u5883\u3054\u3068\u306b\u7570\u306a\u308b\u5024\uff08\u30a2\u30ab\u30a6\u30f3\u30c8ID\u30fbDB\u540d\u306a\u3069\uff09\u3092\u3053\u3053\u3067\u5ba3\u8a00\u3057\u3066\u304a\u304f\u3053\u3068\u3067\u3001\u547c\u3073\u51fa\u3057\u5074\u304b\u3089\u5024\u3092\u6e21\u305b\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>variable \"aws_account_id\" {\n  description = \"AWS\u30a2\u30ab\u30a6\u30f3\u30c8ID\"\n  type        = string\n}\n\nvariable \"database_name\" {\n  description = \"Athena\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\"\n  type        = string\n}\n\nvariable \"dataset_id\" {\n  description = \"QuickSight\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8ID\"\n  type        = string\n}\n\nvariable \"dataset_name\" {\n  description = \"QuickSight\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u540d\"\n  type        = string\n}\n\nvariable \"data_source_arn\" {\n  description = \"QuickSight\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306eARN\"\n  type        = string\n}\n\nvariable \"quicksight_user_arn\" {\n  description = \"QuickSight\u30e6\u30fc\u30b6\u30fc\u306eARN\"\n  type        = string\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"modules-dataset-main-tf-11\">modules\/dataset\/main.tf<\/h3>\n\n\n\n<p>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u304cQuickSight\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u4f5c\u6210\u3059\u308b<strong>\u672c\u4f53<\/strong>\u3067\u3059\u3002<br>\u76f4\u63a5\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3059\u308b\u306e\u3067import_mode\u3067&#8221;DIRECT_QUERY&#8221;\u3068\u3057\u3066\u3044\u307e\u3059\u3002<br>SPICE\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001&#8221;SPICE&#8221;\u3068\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>resource \"aws_quicksight_data_set\" \"this\" {\n  data_set_id = var.dataset_id\n  name        = var.dataset_name\n  import_mode = \"DIRECT_QUERY\"\u3000\n\n  physical_table_map {\n    physical_table_map_id = \"primary\"\n    custom_sql {\n      data_source_arn = var.data_source_arn\n      name            = var.dataset_name\n      sql_query = templatefile(\"${path.module}\/sql\/${var.dataset_id}.sql.tftpl\", {\n        database_name = var.database_name\n      })\n      columns {\n        name = \"placeholder\"\n        type = \"STRING\"\n      }\n    }\n  }\n\n  permissions {\n    actions = &#91;\n      \"quicksight:DescribeDataSet\",\n      \"quicksight:DescribeDataSetPermissions\",\n      \"quicksight:PassDataSet\",\n      \"quicksight:DescribeIngestion\",\n      \"quicksight:ListIngestions\",\n      \"quicksight:UpdateDataSet\",\n      \"quicksight:DeleteDataSet\",\n      \"quicksight:CreateIngestion\",\n      \"quicksight:CancelIngestion\",\n      \"quicksight:UpdateDataSetPermissions\",\n    ]\n    principal = var.quicksight_user_arn\n  }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"modules-dataset-outputs-tf-12\">modules\/dataset\/outputs.tf<\/h3>\n\n\n\n<p>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u304c<strong>\u5916\u90e8\u306b\u8fd4\u3059\u5024<\/strong>\u306e\u5b9a\u7fa9\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>output \"data_set_arn\" {\n  description = \"\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306eARN\"\n  value       = aws_quicksight_data_set.this.arn\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"environments-dev-main-tf-13\">environments\/<strong>dev<\/strong>\/main.tf<\/h3>\n\n\n\n<p>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u304c<strong>\u958b\u767a\u74b0\u5883\u306e\u8a2d\u5b9a<\/strong>\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>terraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp\/aws\"\n      version = \"~&gt; 5.0\"\n    }\n  }\n}\n\nprovider \"aws\" {\n  region = \"ap-northeast-1\"\n}\n# \u74b0\u5883\u3054\u3068\u306b\u5909\u308f\u308b\u5024\u3092\u307e\u3068\u3081\u3066\u5b9a\u7fa9\uff08\u3053\u3053\u3092\u5909\u3048\u308b\u3060\u3051\u3067\u5225\u74b0\u5883\u306b\u5bfe\u5fdc\u3067\u304d\u308b\uff09\nlocals {\n  aws_account_id      = \"\uff08\u958b\u767a\u30a2\u30ab\u30a6\u30f3\u30c8ID\uff09\"\n  database_name       = \"DB-dev\"\n  quicksight_user_arn = \"arn:aws:quicksight:ap-northeast-1:\uff08\u958b\u767a\u30a2\u30ab\u30a6\u30f3\u30c8ID\uff09:user\/default\/\uff08\u30e6\u30fc\u30b6\u30fc\u540d\uff09\"\n  data_source_arn     = \"arn:aws:quicksight:ap-northeast-1:\uff08\u958b\u767a\u30a2\u30ab\u30a6\u30f3\u30c8ID\uff09:datasource\/\uff08\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9ID\uff09\"\n}\n\n# \u4f5c\u6210\u3057\u305f\u3044\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u5206\u3060\u3051\u8ffd\u52a0\u3057\u3066\u3044\u304f\nmodule \"dataset_sample\" {\n  source              = \"..\/..\/modules\/dataset\"\n  aws_account_id      = local.aws_account_id\n  database_name       = local.database_name\n  dataset_id          = \"sample\"\n  dataset_name        = \"\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\"\n  data_source_arn     = local.data_source_arn\n  quicksight_user_arn = local.quicksight_user_arn\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"modules-dataset-sql-efbc88e38387e383bce382bfe382bbe38383e38388e5908defbc89-sql-tftpl-14\">modules\/dataset\/sql\/\uff08\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u540d\uff09.sql.tftpl<\/h3>\n\n\n\n<p>\u901a\u5e38\u306eSQL\u3068\u307b\u307c\u540c\u3058\u66f8\u304d\u65b9\u3067\u3059\u3002<br>DB\u540d\u306e\u90e8\u5206\u3060\u3051 <code>\"${database_name}\"<\/code> \u306b\u7f6e\u304d\u63db\u3048\u308b\u3060\u3051\u3067\u3001\u3042\u3068\u306f\u666e\u901a\u306bSQL\u3092\u66f8\u3051\u307e\u3059\u3002<br>\u4f5c\u6210\u3057\u305f\u3044\u5206\u3060\u3051\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n   *\nFROM \"${database_name}\".\"\uff08\u30c6\u30fc\u30d6\u30eb\u540d\uff09\" AS t1\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e38387e383bce382bfe382bbe38383e38388e38292e4bd9ce68890e38199e3828b-15\">\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u4f5c\u6210\u3059\u308b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"e5889de69c9fe58c96-16\">\u521d\u671f\u5316<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cd quicksight-iac\\environments\\dev\nterraform init<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"992\" height=\"407\" src=\"https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h43_34.png\" alt=\"\" class=\"wp-image-22778\" srcset=\"https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h43_34.png 992w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h43_34-300x123.png 300w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h43_34-768x315.png 768w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h43_34-450x185.png 450w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h43_34-900x369.png 900w\" sizes=\"auto, (max-width: 992px) 100vw, 992px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"e5b7aee58886e7a2bae8aa8defbc88awse381abe381afe4bd95e38282e5a489e3828fe3828ae381bee3819be38293efbc89-17\">\u5dee\u5206\u78ba\u8a8d\uff08AWS\u306b\u306f\u4f55\u3082\u5909\u308f\u308a\u307e\u305b\u3093\uff09<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>terraform plan<\/code><\/pre>\n\n\n\n<p>\u4eca\u56de\u306f\u8ffd\u52a0\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"524\" height=\"46\" src=\"https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h50_30.png\" alt=\"\" class=\"wp-image-22779\" srcset=\"https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h50_30.png 524w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h50_30-300x26.png 300w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h50_30-450x40.png 450w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><\/figure>\n\n\n\n<p>\u4f5c\u6210\u30fb\u5909\u66f4\u30fb\u524a\u9664\u3055\u308c\u308b\u5185\u5bb9\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u554f\u984c\u306a\u3051\u308c\u3070\u6b21\u3078\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"e5ae9fe99a9be381abe58f8de698a0-18\">\u5b9f\u969b\u306b\u53cd\u6620<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>terraform apply<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1012\" height=\"112\" src=\"https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h52_53.png\" alt=\"\" class=\"wp-image-22780\" srcset=\"https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h52_53.png 1012w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h52_53-300x33.png 300w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h52_53-768x85.png 768w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h52_53-450x50.png 450w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h52_53-900x100.png 900w\" sizes=\"auto, (max-width: 1012px) 100vw, 1012px\" \/><\/figure>\n\n\n\n<p><code>yes<\/code> \u3092\u5165\u529b\u3059\u308b\u3068\u5b9f\u969b\u306bQuickSight\u306b\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"582\" height=\"272\" src=\"https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h55_53.png\" alt=\"\" class=\"wp-image-22781\" srcset=\"https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h55_53.png 582w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h55_53-300x140.png 300w, https:\/\/itport.cloud\/wp-content\/uploads\/2026\/05\/2026-05-26_18h55_53-450x210.png 450w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sqle38292e69bb4e696b0e38199e3828be5a0b4e59088-19\">SQL\u3092\u66f4\u65b0\u3059\u308b\u5834\u5408<\/h2>\n\n\n\n<p>SQL\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u3066 <code>terraform apply<\/code> \u3092\u5b9f\u884c\u3059\u308b\u3060\u3051\u3067\u3059\u3002Terraform\u304c\u5dee\u5206\u3092\u691c\u77e5\u3057\u3066\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e38387e383bce382bfe382bbe38383e38388e38292e8bfbde58aa0e38199e3828b-20\">\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u8ffd\u52a0\u3059\u308b<\/h2>\n\n\n\n<p>\u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3068\u304d\u306f\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>modules\\dataset\\sql\\<\/code> \u306b\u65b0\u3057\u3044 <code>.sql.tftpl<\/code> \u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0<\/li>\n\n\n\n<li><code>environments\\dev\\main.tf<\/code> \u306b <code>module<\/code> \u30d6\u30ed\u30c3\u30af\u3092\u8ffd\u52a0<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>module \"dataset_new\" {\n  source              = \"..\/..\/modules\/dataset\"\n  aws_account_id      = local.aws_account_id\n  database_name       = local.database_name\n  dataset_id          = \"new_dataset\"       # SQL\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u4e00\u81f4\u3055\u305b\u308b\n  dataset_name        = \"\u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\"\n  data_source_arn     = local.data_source_arn\n  quicksight_user_arn = local.quicksight_user_arn\n}\n<\/code><\/pre>\n\n\n\n<p><code>dataset_id<\/code> \u3068SQL\u30d5\u30a1\u30a4\u30eb\u540d\uff08<code>.sql.tftpl<\/code> \u306e\u524d\u306e\u90e8\u5206\uff09\u3092\u5fc5\u305a\u4e00\u81f4\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e6a49ce8a8bce383bbe69cace795aae792b0e5a283e381b8e381aee5b195e9968b-21\">\u691c\u8a3c\u30fb\u672c\u756a\u74b0\u5883\u3078\u306e\u5c55\u958b<\/h2>\n\n\n\n<p><code>environments\\\uff08\u74b0\u5883\uff09\\main.tf<\/code> \u306e <code>database_name<\/code> \u3092\u691c\u8a3c\u74b0\u5883\u306eDB\u540d\u306b\u5909\u3048\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>locals {\n  database_name =   # \u3053\u3053\u3060\u3051\u5909\u3048\u308b\n  ...\n}\n<\/code><\/pre>\n\n\n\n<p>\u3042\u3068\u306f\u540c\u3058SQL\u30d5\u30a1\u30a4\u30eb\u304c\u4f7f\u308f\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e381bee381a8e38281-22\">\u307e\u3068\u3081<\/h2>\n\n\n\n<p>Terraform\u3092\u4f7f\u3046\u3053\u3068\u3067\u4ee5\u4e0b\u304c\u5b9f\u73fe\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SQL\u306e\u5909\u66f4\u5c65\u6b74\u3092Git\u3067\u7ba1\u7406\u3067\u304d\u308b<\/li>\n\n\n\n<li>1\u3064\u306eSQL\u30d5\u30a1\u30a4\u30eb\u3067\u8907\u6570\u74b0\u5883\u306b\u5c55\u958b\u3067\u304d\u308b<\/li>\n\n\n\n<li><code>terraform apply<\/code> \u3060\u3051\u3067\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u4f5c\u6210\u30fb\u66f4\u65b0\u3067\u304d\u308b<\/li>\n<\/ul>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"\u306f\u3058\u3081\u306b Amazon QuickSight\u306f\u3001\u30c7\u30fc\u30bf\u306e\u5206\u6790\u30fb\u53ef\u8996\u5316\u30fb\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u81ea\u52d5\u5316\u30fb\u7d44\u7e54\u5168\u4f53\u3067\u306e \u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u73fe\u3059\u308b\u3001\u751f\u6210AI\u3092\u6d3b\u7528\u3057\u305fBI\u30c4\u30fc\u30eb\u3067\u3059\u3002 \u4e3b\u306a\u69cb\u6210\u8981\u7d20\u3068\u3057\u3066\u300c\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u300d\u300c\u5206\u6790\u300d\u300c\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u300d\u306e3\u3064\u304c\u3042\u308a\u307e\u3059\u3002 SQL\u3092\u4f7f\u308f\u306a\u304f\u3066\u3082\u753b\u9762\u304b\u3089\u306e\u64cd\u4f5c\u3067\u30c7\u30fc\u30bf\u3092\u30c6\u30fc\u30d6\u30eb\u306a\u3069\u306b\u53ef\u8996\u5316\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3067\u3059\u304c\u3001\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u6570\u304c\u5897\u3048\u3066\u304f\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3053\u3068\u304c\u5927\u5909\u306b\u306a\u3063\u3066\u304d\u307e\u3059\u3002 \u958b\u767a\u30fb\u691c\u8a3c\u30fb\u672c\u756a\u306e\u3088\u3046\u306b\u74b0\u5883\u3084\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u5206\u304b\u308c\u3066\u3044\u3066\u3001\u6bce\u56de\u753b\u9762\u304b\u3089\u624b\u4f5c\u696d\u3067\u540c\u3058\u5185\u5bb9\u3092\u4f5c\u308a\u76f4\u3059\u306e\u304c\u8f9b\u3044 \u74b0\u5883\u9593\u3067\u8a2d\u5b9a\u306b\u30ba\u30ec\u304c\u751f\u3058\u3066\u3057\u307e\u3046 \u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Terraform\u3092\u4f7f\u3063\u3066QuickSight\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u30b3\u30fc\u30c9\u3067\u7ba1\u7406\u3059\u308b&hellip;","protected":false},"author":46,"featured_media":22783,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80],"tags":[40],"class_list":{"0":"post-22662","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-aws","8":"tag-article"},"_links":{"self":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts\/22662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22662"}],"version-history":[{"count":7,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts\/22662\/revisions"}],"predecessor-version":[{"id":22910,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts\/22662\/revisions\/22910"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/media\/22783"}],"wp:attachment":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}