ã³ã¼ãã¼ã好ããªæ¨è°·æ è¦ã§ãã
Amazon Redshift ã¯ãã§ãã¬ã¼ãããã¯ã¨ãªããµãã¼ããã¦ãã¾ãã
Redshift ã§ã®ãã§ãã¬ã¼ãããã¯ã¨ãªã®æ¦è¦ã«ã¤ãã¦ã¯ä»¥ä¸ã®ããã°ããåç
§ãã ããã
ä»åã¯ãAmazon Redshift Serverless ãã Aurora Serverless PostgreSQL äºæãã¼ã¸ã§ã³ã¸ã®ãã§ãã¬ã¼ãããã¯ã¨ãªãæ¤è¨¼ãã¦ã¿ã¾ããã®ã§ã宿½æé ãè¨è¼ãã¾ãã
ç§èªèº« PostgreSQL åå¿è
ã§ãããããåå¿ãå
¼ãã¦è©³ç´°ãªå®è¡ã³ãã³ãã¾ã§è¨è¼ãã¦ããæé ãé·ããªã£ã¦ããã¾ãããäºæ¿ãã ããã
- 宿½æé æ¦è¦
- AWS æ¤è¨¼ç°å¢ã®æºå
- EC2 ã¤ã³ã¹ã¿ã³ã¹ãæ§ç¯ããpsql ãã¤ã³ã¹ãã¼ã«ãã
- Redshift Serverless ã使ãã
- Aurora Serverless PostgreSQL äºæã¨ãã£ã·ã§ã³ã使ãã
- ã»ãã¥ãªãã£ã°ã«ã¼ãã®ç¢ºèª
- AWS Secrets Manager ã§ Aurora Serverless PostgreSQL ãã¼ã¿ãã¼ã¹ç¨ã®ã·ã¼ã¯ã¬ãããè¨å®
- 注æï¼Redshift Serverless ã§æ¡å¼µããã VPC ã®ã«ã¼ãã£ã³ã°ãæå¹ã«ãã¦ããå ´å
- ãã§ãã¬ã¼ãããã¯ã¨ãªãããããã®æºå
- ãã§ãã¬ã¼ãããã¯ã¨ãªã®å®è¡
- åè
宿½æé æ¦è¦
æ±äº¬ãªã¼ã¸ã§ã³ã® Amazon VPC å
ã« Aurora Serverless PostgreSQL äºæã¨ãã£ã·ã§ã³ã¨ Redshift Serverless ãæ§ç¯ããRedshift Serverless ãããã§ãã¬ã¼ãããã¯ã¨ãªãå®è¡ãã¾ãã
Aurora Serverless PostgreSQL äºæã¨ãã£ã·ã§ã³ã¨ Redshift Serverless ã«æ¥ç¶ãã¦æä½ãè¡ãããã®ã¯ã©ã¤ã¢ã³ãã¨ãã¦ããããªãã¯ãµããããã« EC2 ã¤ã³ã¹ã¿ã³ã¹ã 1 å°ä½æããã»ãã·ã§ã³ããã¼ã¸ã£ã¼ã§æå
ã®ç«¯æ«ããæ¥ç¶ã§ããããã«ãã¦ããã¾ãã
Redshift Serverless ãã Aurora Serverless PostgreSQL äºæã¨ãã£ã·ã§ã³ã¸æ¥ç¶ããããã®èªè¨¼æ
å ±ã¯ AWS Secrets Manager ã«ä¿åãã¾ãã
VPC ã®ä½ææé ã¯å²æãã¾ããå³ãåç §ããã ãã¾ãã¨å¹¸ãã§ãã
AWS æ¤è¨¼ç°å¢ã®æºå
EC2 ã¤ã³ã¹ã¿ã³ã¹ãæ§ç¯ããpsql ãã¤ã³ã¹ãã¼ã«ãã
以ä¸ã®ãã㪠EC2 ã¤ã³ã¹ã¿ã³ã¹ã使ãã¾ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
ååã¨ã¿ã° | client | ä»»æã®åå |
AMI ID | ami-078296f82eb463377 | Amazon Linux 2 Kernel 5.10 AMI 2.0.20220912.1 x86_64 HVM gp2 |
ã»ãã¥ãªãã£ã°ã«ã¼ã | client-sg | HTTP ãã¼ã 80 ã㤠IP ããã®ã¤ã³ãã¦ã³ãè¨±å¯ |
IAM ã¤ã³ã¹ã¿ã³ã¹ãããã£ã¼ã« | AmazonSSMManagedInstanceCore 権éããã IAM ãã¼ã«ãä»ä¸ |
ã»ãã·ã§ã³ããã¼ã¸ã£ã¼ã§ãã°ã¤ã³ãããã |
EC2 ã¤ã³ã¹ã¿ã³ã¹ãèµ·åããããã»ãã·ã§ã³ããã¼ã¸ã£ã¼ã§ãã°ã¤ã³ãã¾ãã
Amazon Redshift Serverless ã¸ã®æ¥ç¶ç¢ºèªç¨ã«ãpsql ã使ç¨ã§ããããã«ãã¦ããã¾ãã以ä¸ã³ãã³ããå®è¡ã㦠psql ãã¤ã³ã¹ãã¼ã«ãã¾ãã
sudo yum install postgresql
å®è¡çµæ
sh-4.2$ sudo yum install postgresql Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core | 3.7 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package postgresql.x86_64 0:9.2.24-8.amzn2 will be installed --> Processing Dependency: postgresql-libs(x86-64) = 9.2.24-8.amzn2 for package: postgresql-9.2.24-8.amzn2.x86_64 --> Processing Dependency: libpq.so.5()(64bit) for package: postgresql-9.2.24-8.amzn2.x86_64 --> Running transaction check ---> Package postgresql-libs.x86_64 0:9.2.24-8.amzn2 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================================================================================= Package Arch Version Repository Size ================================================================================================================================================================================================================= Installing: postgresql x86_64 9.2.24-8.amzn2 amzn2-core 3.0 M Installing for dependencies: postgresql-libs x86_64 9.2.24-8.amzn2 amzn2-core 232 k Transaction Summary ================================================================================================================================================================================================================= Install 1 Package (+1 Dependent package) Total download size: 3.3 M Installed size: 17 M Is this ok [y/d/N]: y Downloading packages: (1/2): postgresql-libs-9.2.24-8.amzn2.x86_64.rpm | 232 kB 00:00:00 (2/2): postgresql-9.2.24-8.amzn2.x86_64.rpm | 3.0 MB 00:00:00 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 15 MB/s | 3.3 MB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : postgresql-libs-9.2.24-8.amzn2.x86_64 1/2 Installing : postgresql-9.2.24-8.amzn2.x86_64 2/2 Verifying : postgresql-9.2.24-8.amzn2.x86_64 1/2 Verifying : postgresql-libs-9.2.24-8.amzn2.x86_64 2/2 Installed: postgresql.x86_64 0:9.2.24-8.amzn2 Dependency Installed: postgresql-libs.x86_64 0:9.2.24-8.amzn2 Complete! sh-4.2$
psql ã¨ã¯ PostgreSQL ã®ç®¡çãã¼ã«ã®ä¸ã¤ã§ã対話çã«ãã¼ã¿ãã¼ã¹ããã¼ãã«ã使ããããã¼ã¿ã®è¿½å ãå徿ä½ãããã¨ãã§ããã³ãã³ãã©ã¤ã³åã®ãã¼ã«ã§ãã
Redshift Serverless ã使ãã
以ä¸ã®ãã㪠Redshift Serverless ã使ãã¾ããè¨è¼ãã¦ããªãè¨å®ã¯ããã©ã«ãã®ã¾ã¾ã§ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
åå空éã®åå | 2022mmdd-namespace | ä»»æã®åå |
管çè ã¦ã¼ã¶ã¼å | admin | |
管çè ãã¹ã¯ã¼ã | ************ | |
IAM ãã¼ã« | yyyyMMdd-Redshift-ServerlessRole | â»å¾è¿° |
ã¯ã¼ã¯ã°ã«ã¼ãã®åå | 2022mmdd-workgroup | ä»»æã®åå |
ã»ãã¥ãªãã£ã°ã«ã¼ã | redshift-serverless-sg | Redshift ãã¼ã 5439 client-sg ããã®ã¤ã³ãã¦ã³ãè¨±å¯ |
VPCããµãããã | 3 ã¤ã® AZ ã«ã¾ããã 3 ã¤ã®ãµããããã鏿ãã | å³ãåç § |
â» IAM ãã¼ã«ã«ã¯ä¿¡é ¼ããªã·ã¼ã®ã¿ä»ä¸ãã¦ããã¦ãã ããã
- ä¿¡é ¼ããªã·ã¼ããã¥ã¡ã³ãã§è¨å®ãããä¿¡é ¼ããã¦ããã¨ã³ãã£ãã£ã
- "redshift.amazonaws.com"
- "redshift-serverless.amazonaws.com"
ä¿¡é ¼é¢ä¿ã¿ãã®ä¿¡é ¼ãããã¨ã³ãã£ãã£ã¯ãããªãã¾ãã
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "redshift-serverless.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
å®ã¯ãã§ãã¬ã¼ãããã¯ã¨ãªã®ããã«å¿
è¦ãªè¨±å¯ã¯ Secrets Manager ã¸ã®ã¢ã¯ã»ã¹è¨±å¯ã ããªã®ã§ãä»ã¯ ID ãã¼ã¹ã®è¨±å¯ããªã·ã¼ã¯è¨å®ããªãã¦ã大ä¸å¤«ã§ãã
ãã® IAM ãã¼ã«ã¯ãã®å¾ AWS Secret Manager ã®è¨å®æã«ç·¨éãã¾ãã
Aurora Serverless PostgreSQL äºæã¨ãã£ã·ã§ã³ã使ãã
DB ãµããããã°ã«ã¼ããããããã使ãã¦ããã¾ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
DB ãµããããã°ã«ã¼ã | ä»å㯠Redshift Servreless ã«åãã㦠3 ã¤ã® AZ ã«ã¾ããã 3 ã¤ã®ãµããããã鏿ãã | å³ãåç § |
以ä¸ã®ãã㪠Aurora Serverless PostgreSQL äºæã¨ãã£ã·ã§ã³ã使ãã¾ããè¨è¼ãã¦ããªãè¨å®ã¯ããã©ã«ãã®ã¾ã¾ã§ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
ã¨ã³ã¸ã³ã®ã¿ã¤ã | Amazon Aurora | |
ã¨ãã£ã·ã§ã³ | Amazon Aurora PostgreSQL äºæã¨ãã£ã·ã§ã³ | |
ã¨ã³ã¸ã³ãã¼ã¸ã§ã³ | Aurora PostgreSQL (compatible with PostgreSQL 13.7) | ããã£ã«ã¿ã¼ã®é表示ãã§ãServerless v2 ããµãã¼ããããã¼ã¸ã§ã³ã表示ãã«ãã§ãã¯ããã¨åºã¦ãã |
ãã³ãã¬ã¼ã | éçº/ãã¹ã | |
DB ã¯ã©ã¹ã¿ã¼èå¥å | database-2 | |
ãã¹ã¿ã¼ã¦ã¼ã¶ã¼å | postgres | |
ãã¹ã¿ã¼ãã¹ã¯ã¼ã | ************ | |
DB ã¤ã³ã¹ã¿ã³ã¹ã¯ã©ã¹ | ãµã¼ãã¼ã¬ã¹ | 容éã®ç¯å² 2 ~ 16 ACU |
ãã«ã AZ é ç½® | Aurora ã¬ããªã«ã使ç¨ããªã | |
VPCããµãããã | 使ãã¦ããã VPC 㨠DB ãµããããã°ã«ã¼ãã鏿 | å³ãåç § |
ã»ãã¥ãªãã£ã°ã«ã¼ã | aurora-postgresql-sg | PostgreSQL ãã¼ã 5432 client-sg ããã®ã¤ã³ãã¦ã³ã許å¯ãPostgreSQL ãã¼ã 5432 redshift-serverless-sg ããã®ã¤ã³ãã¦ã³ãè¨±å¯ |
AZ | ä»å㯠ap-northeast-1c | ä»»æã® AZ |
ã»ãã¥ãªãã£ã°ã«ã¼ãã®ç¢ºèª
ããã¾ã§ã§ãã»ãã¥ãªãã£ã°ã«ã¼ãã®è¨å®ã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ãã
AWS Secrets Manager ã§ Aurora Serverless PostgreSQL ãã¼ã¿ãã¼ã¹ç¨ã®ã·ã¼ã¯ã¬ãããè¨å®
ãã§ãã¬ã¼ãããã¯ã¨ãªã使ç¨ããããã®ã·ã¼ã¯ã¬ãã㨠IAM ãã¼ã«ã®ä½æ ãåèã«ãSecrets Manager ã§ Aurora Serverless PostgreSQL ãã¼ã¿ãã¼ã¹ç¨ã®ã·ã¼ã¯ã¬ãããè¨å®ãã¾ãã
ã·ã¼ã¯ã¬ãããè¨å®ããããRedshift Serverless ã Secrets Manager ã«ä¿åãããã·ã¼ã¯ã¬ããã«ã¢ã¯ã»ã¹ã§ããããã Redshift Serverless ã«ä»ä¸ãã¦ãã IAM ãã¼ã«ã«æ¨©éã追å ãã¾ãã
AWS Secrets Manager ã§ Aurora Serverless PostgreSQL ãã¼ã¿ãã¼ã¹ç¨ã®ã·ã¼ã¯ã¬ããã以ä¸ã®ããã«è¨å®ãã¾ããè¨è¼ãã¦ããªãè¨å®ã¯ããã©ã«ãã®ã¾ã¾ã§ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
ã·ã¼ã¯ã¬ããã®ã¿ã¤ã | Amazon RDS ãã¼ã¿ãã¼ã¹ã®èªè¨¼æ å ± | |
ã¦ã¼ã¶ã¼å | postgres | |
ãã¹ã¯ã¼ã | ************ | |
æå·åãã¼ | aws/seretsmanager | |
ãã¼ã¿ãã¼ã¹ | database-2 | |
ã·ã¼ã¯ã¬ããã®åå | dev/Redshift-FederatedQuery/AuroraPostgreSQL | ä»»æã®åå |
Secrets Manager ã§ Aurora Serverless PostgreSQL ãã¼ã¿ãã¼ã¹ç¨ã®ã·ã¼ã¯ã¬ããã使ã§ããããã·ã¼ã¯ã¬ããã® ARN ãã³ãã¼ãã¦æ§ãã¦ããã¾ãã
IAM ããã¸ã¡ã³ãã³ã³ã½ã¼ã«ã«ç§»åãã以ä¸ã® JSON ã使ç¨ã㦠IAM ã«ã¹ã¿ã 管çããªã·ã¼ã使ãã¾ãã"Sid": "AccessSecret"
ã§å§ã¾ãä¸é¨ã®ããªã·ã¼ã® "Resource"
ã«ãæ§ãã¦ãããã·ã¼ã¯ã¬ããã® ARN ãè²¼ãä»ãã¾ãã
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:ap-northeast-1:xxxxxxxxxxxx:secret:dev/Redshift-FederatedQuery/Aurorapostgresql-Y9Ih4g" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*" } ] }
IAM ããªã·ã¼ã使ã§ããããRedshift Serverless ã«ä»ä¸ããã¦ãã IAM ãã¼ã«ã«ã使ãã IAM ããªã·ã¼ãã¢ã¿ãããã¾ããç§ã¯ Redshift Serverless ã使ãã ã§ä½æãã IAM ãã¼ã« yyyyMMdd-Redshift-ServerlessRole ã«ã使ãã IAM ã«ã¹ã¿ã 管çããªã·ã¼ãã¢ã¿ãããã¾ãã
注æï¼Redshift Serverless ã§æ¡å¼µããã VPC ã®ã«ã¼ãã£ã³ã°ãæå¹ã«ãã¦ããå ´å
Redshift Serverless ã®è¨å®ã§ãæ¡å¼µããã VPC ã®ã«ã¼ãã£ã³ã°ããæå¹ã«ãã¦ããå ´åãSecrets Manager ããã·ã¼ã¯ã¬ãããåå¾ããããã« VPC ã¨ã³ããã¤ã³ããå¿
è¦ã§ãã
Secrets Manager ç¨ VPC ã¨ã³ããã¤ã³ãã®è¨å®ä¾ã以ä¸ã«è¨è¼ãã¦ããã¾ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
ååã¿ã° | secrets-manager-endp | ä»»æã®åå |
ãµã¼ãã¹ã«ãã´ãª | AWS ã®ãµã¼ãã¹ | |
ãµã¼ãã¹ | com.amazonaws.ap-northeast-1.secretsmanager | |
VPC | ä»å Redshift Serverless ã使ãã¦ãã VPC ã鏿 | |
ãµãããã | ä»å Redshift Serverless ã使ãã¦ãããµãããã 3 ã¤ã鏿 | ã¤ã³ã¿ã¼ãã§ã¤ã¹å VPC ã¨ã³ããã¤ã³ã㯠AZé害ã«åãåé·åãã¦ãããã¨ãæ¨å¥¨ããã |
ã»ãã¥ãªãã£ã°ã«ã¼ã | secrets-manager-endp-sg | HTTP ãã¼ã 443 redshift-serverlss-sg ããã®ã¤ã³ãã¦ã³ãè¨±å¯ |
ããªã·ã¼ | ãã«ã¢ã¯ã»ã¹ | ä»åã¯ã»ãã¥ãªãã£ã°ã«ã¼ãã§éä¿¡å¶å¾¡ãããããã¨ã³ããã¤ã³ãããªã·ã¼ã¯å¶éããªã |
æ¡å¼µããã VPC ã®ã«ã¼ãã£ã³ã°ã«ã¤ãã¦ã®è©³ç´°ã¯ã以ä¸ã®è¨äºããåç §ãã ããã blog.serverworks.co.jp
ãã§ãã¬ã¼ãããã¯ã¨ãªãããããã®æºå
AWS æ¤è¨¼ç°å¢ã®æºåãå®äºããã®ã§ãRedshift Serverless 㨠Aurora Serverless ã«ãã°ã¤ã³ãã¦ãã¼ãã«ãã¹ãã¼ãã使ãã¦ããã¾ãã
Aurora Serverless PostgreSQL ã§ãµã³ãã«ãã¼ã¿ãã¼ã¹ã使
ããããã³ãã³ããç¨ãã¦ãAurora Serverless PostgreSQL ã§ä»¥ä¸ã®ããã«è¨å®ãã¦ããã¾ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
ãµã³ãã«ãã¼ã¿ãã¼ã¹å | aurorapostgresql2 | |
ã¹ãã¼ãå | users |
- age_table
id | name | age |
---|---|---|
1 | aoki | 20 |
2 | iida | 21 |
3 | usui | 22 |
- job_table
id | job |
---|---|
1 | engineer |
2 | musician |
3 | driver |
psql ãã¤ã³ã¹ãã¼ã«ãã¦ããã EC2 ã¤ã³ã¹ã¿ã³ã¹ãã Aurora Serverless PostgreSQL ã«ä»¥ä¸ãã°ã¤ã³ã³ãã³ãã§ãã°ã¤ã³ãã¾ãã
- æ§æ
psql --host=<Aurora Serverless PostgreSQL ã¯ã©ã¹ã¿ã¼ã¨ã³ããã¤ã³ã or ãªã¼ãã¼ã¨ã³ããã¤ã³ã> --port=5432 --username=postgres --password
- ä¾
psql --host=database-2.cluster-cno8jxqxarf4.ap-northeast-1.rds.amazonaws.com --port=5432 --username=postgres --password
- ãã°ã¤ã³å¾ã®è¡¨ç¤º
sh-4.2$ psql --host=database-2.cluster-cno8jxqxarf4.ap-northeast-1.rds.amazonaws.com --port=5432 --username=postgres --password Password for user postgres: psql (9.2.24, server 13.7) WARNING: psql version 9.2, server version 13.0. Some psql features might not work. SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128) Type "help" for help. postgres=>
Aurora PostgreSQL ã®ãã¼ã¿ãã¼ã¹ aurorapostgresql2 ã使ãã¾ãã
- æ§æ
CREATE DATABASE <ãã¼ã¿ãã¼ã¹å>;
- ä¾
CREATE DATABASE aurorapostgresql2;
- å®è¡çµæ
postgres=> CREATE DATABASE aurorapostgresql2; CREATE DATABASE postgres=>
\l
ã§ãåå¨ãããã¼ã¿ãã¼ã¹ä¸è¦§ã確èªã§ãã¾ãã
- å®è¡çµæ
postgres=> \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -------------------+----------+----------+-------------+-------------+----------------------- aurorapostgresql2 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/rdsadmin + | | | | | rdsadmin=CTc/rdsadmin template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (5 rows) postgres=>
ãã¼ã¿ãã¼ã¹ã鏿ãã¾ãã
- æ§æ
\c ãã¼ã¿ãã¼ã¹å
- ä¾
\c aurorapostgresql2
- å®è¡çµæ
postgres=> \c aurorapostgresql2 Password for user postgres: psql (9.2.24, server 13.7) WARNING: psql version 9.2, server version 13.0. Some psql features might not work. SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128) You are now connected to database "aurorapostgresql2" as user "postgres". aurorapostgresql2=>
ç¾å¨ã®ã¹ãã¼ãã確èªãã¾ãã
- æ§æ
select current_schema();
- å®è¡çµæ
aurorapostgresql2=> select current_schema(); current_schema ---------------- public (1 row) aurorapostgresql2=>
ã¹ãã¼ãã使ãã¾ãã
CREATE SCHEMA users;
\dn
ã§ã¹ãã¼ãä¸è¦§ã確èªã§ãã¾ãã
- å®è¡çµæ
aurorapostgresql2=> \dn List of schemas Name | Owner --------+---------- public | postgres users | postgres (2 rows) aurorapostgresql2=>
ã¹ãã¼ãã夿´ãã¾ãã
- æ§æ
SET search_path = users;
- å®è¡çµæ
aurorapostgresql2=> SET search_path = users; SET aurorapostgresql2=>
ç¾å¨ã®ã¹ãã¼ããå度確èªããusers
ã«ãªã£ã¦ãããã¨ã確èªãã¾ãã
ãã¼ãã« age_table
ã使ãã¾ãã
- æ§æ
CREATE TABLE ãã¼ãã«å (ã«ã©ã 1 ãã¼ã¿å å¶ç´, ã«ã©ã 2 ãã¼ã¿å å¶ç´, ã«ã©ã 3 ãã¼ã¿åãå¶ç´, PRIMARY KEY(ã«ã©ã 1));
- ä¾
CREATE TABLE age_table (id char(4) not null, name text not null, age integer not null, PRIMARY KEY(id));
\d
ã§ä½æãããã¼ãã«ã確èªã§ãã¾ãã
- å®è¡çµæ
aurorapostgresql2=> \d List of relations Schema | Name | Type | Owner --------+-----------+-------+---------- users | age_table | table | postgres (1 row) aurorapostgresql2=>
age_table ãã¼ãã«ã«ãã¼ã¿ãç»é²ãã¾ãã
- æ§æ
INSERT INTO ãã¼ãã«å (ã«ã©ã ï¼,ã«ã©ã ï¼,ã«ã©ã ï¼) VALUES (ã«ã©ã ï¼ã®æ°ãã¼ã¿, ã«ã©ã 2ã®æ°ãã¼ã¿, ã«ã©ã 3ã®æ°ãã¼ã¿);
- ä¾
INSERT INTO age_table (id,name,age)VALUES (1,'aoki',20), (2,'iida',21), (3,'usui',22);
select * from age_table;
ã§ãã¼ãã«å
容ã確èªãã¾ãã
- å®è¡çµæ
aurorapostgresql2=> select * from age_table; id | name | age ------+------+----- 1 | aoki | 20 2 | iida | 21 3 | usui | 22 (3 rows) aurorapostgresql2=>
åæ§ã®æé ã§ãjob_table ãã¼ãã«ã使ãã¾ãã
- ä¾
CREATE TABLE job_table (id char(4) not null, job text not null, PRIMARY KEY(id));
job_table ãã¼ãã«ã«ãã¼ã¿ãç»é²ãã¾ãã
- ä¾
INSERT INTO job_table (id,job)VALUES (1,'engineer'), (2,'musician'), (3,'driver');
select * from job_table;
ã§ãã¼ãã«å
容ã確èªãã¾ãã
- å®è¡çµæ
aurorapostgresql2=> select * from job_table; id | job ------+---------- 1 | engineer 2 | musician 3 | driver (3 rows) aurorapostgresql2=>
Redshift Serverless ã§ãµã³ãã«ãã¼ã¿ãã¼ã¹ã使
Redshift Serverless ã§ãåæ§ã«ã³ãã³ããç¨ãã¦ã以ä¸ã®ããã«è¨å®ãã¦ããã¾ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
ãµã³ãã«ãã¼ã¿ãã¼ã¹å | redshiftdb | |
ã¹ãã¼ãå | users |
- food_table
id | food |
---|---|
1 | onigiri |
2 | tamagoyaki |
3 | coffee |
psql ãã¤ã³ã¹ãã¼ã«ãã¦ããã EC2 ã¤ã³ã¹ã¿ã³ã¹ãã Redshift Serverless ã«ä»¥ä¸ãã°ã¤ã³ã³ãã³ãã§ãã°ã¤ã³ãã¾ãã
- æ§æ
psql -h <Redshift Serverless ã¨ã³ããã¤ã³ã> -U <管çè ã¦ã¼ã¶ã¼å> -d dev -p 5439
- å®è¡çµæ
sh-4.2$ psql -h 20220920-workgroup.xxxxxxxxxxxx.ap-northeast-1.redshift-serverless.amazonaws.com -U admin -d dev -p 5439 Password for user admin: psql (9.2.24, server 8.0.2) WARNING: psql version 9.2, server version 8.0. Some psql features might not work. SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256) Type "help" for help. dev=#
Redshift Serverless ã®ãã¼ã¿ãã¼ã¹ redshiftdb ã使ãã¾ãã
CREATE DATABASE redshiftdb;
ãã¼ã¿ãã¼ã¹ã鏿ãã¾ãã
\c redshiftdb
ç¾å¨ã®ã¹ãã¼ãã確èªãã¾ãã
select current_schema();
ã¹ãã¼ãã使ãã¾ãã
CREATE SCHEMA users;
\dn
ã§ã¹ãã¼ãä¸è¦§ã確èªã§ãã¾ãã
ã¹ãã¼ãã夿´ãã¾ãã
SET search_path = users;
ç¾å¨ã®ã¹ãã¼ããå度確èªããusers
ã«ãªã£ã¦ãããã¨ã確èªãã¾ãã
ãã¼ãã« food_table ã使ãã¾ãã
CREATE TABLE food_table (id char(4) not null, food text not null, PRIMARY KEY(id));
food_table ãã¼ãã«ã«ãã¼ã¿ãç»é²ãã¾ãã
INSERT INTO food_table (id,food)VALUES (1,'onigiri'), (2,'tamagoyaki'), (3,'coffee');
select * from food_table;
ã§ãã¼ãã«å
容ã確èªãã¾ãã
- å®è¡çµæ
redshiftdb=# select * from food_table; id | food ------+------------ 1 | onigiri 2 | tamagoyaki 3 | coffee (3 rows) redshiftdb=#
å¤é¨ã¹ãã¼ãã使ç¨ã㦠Aurora Serverless PostgreSQL ãã¼ã¿ãã¼ã¹ã«æ¥ç¶ãã
CREATE EXTERNAL SCHEMA - Amazon Redshift ãåèã«ãç¾å¨ã®ãã¼ã¿ãã¼ã¹ã«æ°ããå¤é¨ã¹ãã¼ãã使ãã¾ãããã®å¤é¨ã¹ãã¼ãã使ç¨ãã¦ãAmazon RDS for PostgreSQL ã¾ã㯠Amazon Aurora PostgreSQL äºæã¨ãã£ã·ã§ã³ãã¼ã¿ãã¼ã¹ã«æ¥ç¶ã§ãã¾ãã
ãã®æä½ã¯ Redshift å´ã§ãããªãã¾ãã
è¨å®é ç® | ãã©ã¡ã¼ã¿ | åè |
---|---|---|
使ããå¤é¨ã¹ãã¼ãå | newusers | |
æ¥ç¶ãããµã¼ãã¹ | POSTGRES | |
æ¥ç¶å ã®ãã¼ã¿ãã¼ã¹ | aurorapostgresql2 | |
æ¥ç¶å ã®ã¹ãã¼ã | users | |
æ¥ç¶å ã®URL | database-2.cluster-cno8jxqxarf4.ap-northeast-1.rds.amazonaws.com | Aurora Serverless PostgreSQL ã©ã¤ã¿ã¼ã¤ã³ã¹ã¿ã³ã¹ã®ã¨ã³ããã¤ã³ã |
Redshift ã«ä»ä¸ãã IAM ãã¼ã«ã® ARN | arn:aws:iam::xxxxxxxxxxxx:role/service-role/yyyyMMdd-Redshift-ServerlessRole | |
ã·ã¼ã¯ã¬ããï¼èªè¨¼æ å ±ï¼ã® ARN | arn:aws:secretsmanager:ap-northeast-1:xxxxxxxxxxxx:secret:dev/Redshift-FederatedQuery/Aurorapostgresql-Y9Ih4g |
- æ§æ
CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name FROM POSTGRES DATABASE 'federated_database_name' [SCHEMA 'schema_name'] URI 'hostname' [ PORT port_number ] IAM_ROLE { default | 'arn:aws:iam::<AWS ã¢ã«ã¦ã³ã-id>:role/<role-name>' } SECRET_ARN 'ssm-secret-arn'
- ä¾
CREATE EXTERNAL SCHEMA newusers FROM POSTGRES DATABASE 'aurorapostgresql2' SCHEMA 'users' URI 'database-2.cluster-cno8jxqxarf4.ap-northeast-1.rds.amazonaws.com' PORT 5432 IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/service-role/yyyyMMdd-Redshift-ServerlessRole' SECRET_ARN 'arn:aws:secretsmanager:ap-northeast-1:xxxxxxxxxxxx:secret:dev/Redshift-FederatedQuery/Aurorapostgresql-Y9Ih4g';
- å®è¡çµæ
redshiftdb=# CREATE EXTERNAL SCHEMA newusers redshiftdb-# FROM POSTGRES redshiftdb-# DATABASE 'aurorapostgresql2' redshiftdb-# SCHEMA 'users' redshiftdb-# URI 'database-2.cluster-cno8jxqxarf4.ap-northeast-1.rds.amazonaws.com' redshiftdb-# PORT 5432 redshiftdb-# IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/service-role/yyyyMMdd-Redshift-ServerlessRole' redshiftdb-# SECRET_ARN 'arn:aws:secretsmanager:ap-northeast-1:xxxxxxxxxxxx:secret:dev/Redshift-FederatedQuery/Aurorapostgresql-Y9Ih4g'; CREATE SCHEMA redshiftdb=#
SVV_EXTERNAL_SCHEMAS ã使ç¨ãã¦ãå¤é¨ã¹ãã¼ãã®æ å ±ã表示ãã¾ãã
- ä¾
SELECT * FROM svv_external_schemas WHERE schemaname = 'newusers';
- å®è¡çµæ
redshiftdb=# SELECT * FROM svv_external_schemas WHERE schemaname = 'newusers'; esoid | eskind | schemaname | esowner | databasename | esoptions --------+--------+------------+---------+-------------------+------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------- 128103 | 3 | newusers | 100 | aurorapostgresql2 | {"SCHEMA":"users","URI":"database-2.cluster-cno8jxqxarf4.ap-northeast-1.rds.amazonaws.com","PORT":5432,"IAM_ROLE":"arn:aws:iam ::xxxxxxxxxxxx:role/service-role/yyyyMMdd-Redshift-ServerlessRole","SECRET_ARN":"arn:aws:secretsmanager:ap-northeast-1:xxxxxxxxxxxx:secret:dev/Redshift-FederatedQuery/Auro rapostgresql-Y9Ih4g"} (1 row) redshiftdb=#
eskind
ã¯å¤é¨ã¹ãã¼ãã®å¤é¨ã«ã¿ãã°ã®ã¿ã¤ãã§ã3 㯠Aurora PostgreSQL ã¾ã㯠Amazon RDS PostgreSQL ã¸ã®ãã§ãã¬ã¼ãããã¯ã¨ãªã示ãã¦ãã¾ãã
SVV_TABLES ã使ç¨ãã¦ã使ããå¤é¨ã¹ãã¼ã newusers
ã«æ¥ç¶ããåç
§ã§ããå¤é¨ãã¼ãã«ã確èªãã¾ããAurora Serverless PostgreSQL ä¸ã®ãã¼ãã«ãåç
§ã§ãããæ¥ç¶ã¯æåã§ãã
- ä¾
SELECT * FROM svv_tables where table_type = 'EXTERNAL TABLE' AND table_schema = 'newusers';
- å®è¡çµæ
redshiftdb=# SELECT * FROM svv_tables where table_type = 'EXTERNAL TABLE' AND table_schema = 'newusers'; table_catalog | table_schema | table_name | table_type | remarks ---------------+--------------+------------+----------------+--------- redshiftdb | newusers | age_table | EXTERNAL TABLE | redshiftdb | newusers | job_table | EXTERNAL TABLE | (2 rows) redshiftdb=#
Redshift Serverless ãããAurora Serverless PostgreSQL ä¸ã®ãã¼ãã«ãåç §ã§ãã¾ããã
ãã§ãã¬ã¼ãããã¯ã¨ãªã®å®è¡
Aurora Serverless PostgreSQL ã® age_table ãã¼ãã«å ã®è¡æ°ã表示ãã¾ãã
- ä¾
SELECT count(*) FROM newusers.age_table;
- å®è¡çµæ
redshiftdb=# SELECT count(*) FROM newusers.age_table; count ------- 3 (1 row) redshiftdb=#
Aurora Serverless PostgreSQL ã® age_table ãã¼ãã«ã表示ãã¾ãã
- ä¾
select * from newusers.age_table;
- å®è¡çµæ
redshiftdb=# select * from newusers.age_table; id | name | age ------+------+----- 1 | aoki | 20 2 | iida | 21 3 | usui | 22 (3 rows) redshiftdb=#
Aurora Serverless PostgreSQL ã® age_table ãã¼ãã«ã¨ job_table ãã name, age, job ãåãåºãã¦è¡¨ç¤ºãã¾ãã
- ä¾
SELECT name, age, job FROM newusers.age_table,newusers.job_table WHERE age_table.id = job_table.id;
- å®è¡çµæ
redshiftdb=# SELECT name, age, job FROM newusers.age_table,newusers.job_table WHERE age_table.id = job_table.id; name | age | job ------+-----+---------- iida | 21 | musician usui | 22 | driver aoki | 20 | engineer (3 rows) redshiftdb=#
Aurora Serverless PostgreSQL ã® age_table ãã¼ãã«ã¨ Redshift Serverless ã® food_table ãã name, age, food ãåãåºãã¦è¡¨ç¤ºãã¾ãã
- ä¾
SELECT name, age, food FROM newusers.age_table,users.food_table WHERE age_table.id = food_table.id;
- å®è¡çµæ
redshiftdb=# SELECT name, age, food redshiftdb-# FROM newusers.age_table,users.food_table redshiftdb-# WHERE age_table.id = food_table.id; name | age | food ------+-----+------------ aoki | 20 | onigiri iida | 21 | tamagoyaki usui | 22 | coffee (3 rows) redshiftdb=#
Redshift Serverless ã®ãã¼ãã«ã¨ Aurora Serverless PostgreSQL ã®ãã¼ãã«ãçµåããã¯ã¨ãªãå®è¡ã§ãã¾ããã
åè
PostgreSQL ã¸ã®æ¨ªä¸²æ¤ç´¢ã使ç¨ããéå§æ¹æ³ - Amazon Redshift
psql ãã¼ã«ã使ç¨ãã¦ã¯ã©ã¹ã¿ã¼ã«æ¥ç¶ãã
横串æ¤ç´¢ã®ä½¿ç¨ä¾ - Amazon Redshift
CREATE EXTERNAL SCHEMA - Amazon Redshift
ãµã³ãã«ãã¼ã¿ãã¼ã¹ - Amazon Redshift
ãµã³ãã«ãã¼ã¿ããã¼ããã
Amazon S3 ãã¼ã¿ã Aurora PostgreSQL DB ã¯ã©ã¹ã¿ã¼ã«ã¤ã³ãã¼ããã
Amazon Redshift ã¯ã¨ãªã¨ãã£ã¿ v2 ã使ç¨ãããã¼ã¿ãã¼ã¹ã®ã¯ã¨ãªã®å®è¡
emi kitani(å·çè¨äºã®ä¸è¦§)
ASé¨LX課ã2022/2å ¥ç¤¾ãã³ã¼ãã¼ã¨ãµã¦ãã好ãã§ããå·çæ´»åã«èå³ãããã¾ããAWSèªå®12å ã