如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

阅读数:2 2019 年 12 月 27 日 11:30

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

执行 Amazon Redshift COPY

  1. 从您的查询工具登录 Amazon Redshift 集群并使用下面的 DDL 创建客户表。

SQL

复制代码
CREATE TABLE customer
(
c_custkey INTEGER NOT NULL,
c_name VARCHAR(25) NOT NULL,
c_address VARCHAR(25) NOT NULL,
c_city VARCHAR(10) NOT NULL,
c_nation VARCHAR(15) NOT NULL,
c_region VARCHAR(12) NOT NULL,
c_phone VARCHAR(15) NOT NULL,
c_mktsegment VARCHAR(10) NOT NULL
);

2. 现在,您可以成功运行下面的 COPY 语句。

SQL

复制代码
copy customer from 's3://rs-xacct-kms-bucket/customer/'
iam_role '<IAM role ARN of redshift_role_account_b,IAM role ARN of xacct_kms_role_account_b>'
gzip
region 'us-west-2';

注意:替换账户 B 中的 IAM 角色 ARN,用逗号隔开,周围不加任何空格。

3. 运行下面的示例查询,以确认数据已成功加载。

SQL

复制代码
select * from customer limit 10;

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

为要查询的 Redshift Spectrum 设置 AWS Glue 数据目录表

现在,我们在账户 B 中创建 AWS Glue 爬网程序,以对相同的
客户数据进行爬网,并按照下面的步骤在 AWS Glue 数据目录数据库
spectrumdb_account_b 中创建称为
客户的表:

  1. 在 AWS Glue 控制台中导航至数据库并选择添加数据库以创建称为

    spectrumdb_account_b 的 AWS Glue 数据目录数据库,如下所示。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 在 AWS Glue 控制台中导航至爬网程序并选择添加爬网程序,如下所示。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 如下所示创建爬网程序

    customerxacct

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

注意:爬网程序作业名称(在此案例中为
customerxacct)与爬网程序创建的表名称不同(经常容易混淆)。表名称从前缀中自动选择,文件夹名称从 S3 存储桶和文件夹结构中自动选择。如果需要,您还可以选择附加表名称前缀。 __

  1. 选择下一步进入

    客户表数据存储详细信息,如下所示。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 选择下一步进入添加另一个数据存储,我们保留默认设置,因为我们没有要添加的任何其他数据存储。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 选择下一步,为要使用的爬网程序选择早前创建的 IAM 角色

    glue_service_role_account_b,如下所示。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 选择下一步进入计划页面,然后选择您希望此爬网程序作业运行的计划。在此示例中,我们可以选择按需运行

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 选择下一步,以将 AWS Glue 数据目录数据库 spectrumdb_account_b(早前通过创建外部架构命令创建)选为爬网程序输出位置。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 选择下一步以进入查看页面。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 查看详细信息后,选择完成以完成爬网程序的创建。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 现在,我们通过如下所示选择作业并选择运行爬网程序来运行爬网程序作业。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 等待作业完成。作业状态从正在开始改变为停止,再改变为就绪。您可以选择刷新按钮来了解最新状态。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 如果作业失败,失败情况将记录在 Amazon CloudWatch Logs 中。要查看日志,请选择前面的屏幕截图中所示的日志,然后您将进入 CloudWatch Logs。

  2. 现在,我们进入 AWS Glue 数据目录数据库,以确保表格存在。

选择数据库,选择
spectrumdb_account_b 数据库,然后选择查看表,或选择数据库名称的超链接。您应该会看到如下所示的客户表。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

  1. 选择客户超链接以进入外部表,详细信息如下。

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

由于数据文件没有标题记录,AWS Glue 爬网程序已分配一个默认的列命名约定,如前所示。对于客户表,该命名从列 0 到列 7

  1. 选择编辑架构并按照下面的映射分配适当的列名称。

c0 => c_custkey

c1 => c_name

c2 => c_address

c3 => c_city

c4 => c_nation

c5 => c_region

c6 => c_phone

c7 => c_mktsegment

完成时,选择保存

如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(三)

本文转载自 AWS 技术博客。

原文链接: https://amazonaws-china.com/cn/blogs/china/how-to-enable-cross-account-amazon-redshift-copy-and-redshift-spectrum-query-for-aws-kms-encrypted-data-in-amazon-s3/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布