若为windows机器,请使用在线工具进行编码
若为Linux 和 Mac,您可以使用将文件内容打印为 base64 编码的字符串。
执行base64 service_account_json_file.json,将打印出来的内容复制到文本中,注意删除换行符。
点击项目名称,获取对应项目ID,保存以备用。
使用Secrets Manager 控制台,创建密钥,选择其它类型密钥,键输入:credentials,值输入使用base64编码后的字符串
输入密钥名称:bigquery_credentials_poc,其它选项默认填写,点击存储生成密钥。
在密钥列表,点击bigquery_credentials_poc,打开详情信息,复制密钥ARN以备用。
arn:aws:secretsmanager:us-west-2:260527533511:secret:bigquery_credentials_poc-wCHyT3
复制的s3-redshift-glue的arn以备用。arn:aws:s3:::s3-redshift-glue
文件夹名称可根据要导出的表名进行创建。此次创建文件夹311_service_requests。
使用以下json创建策略policy_secrets_s3,允许访问密钥bigquery_credentials_poc,S3桶s3-redshift-glue。
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “GetDescribeSecret”,
“Effect”: “Allow”,
“Action”: [
“secretsmanager:GetResourcePolicy”,
“secretsmanager:GetSecretValue”,
“secretsmanager:DescribeSecret”,
“secretsmanager:ListSecretVersionIds”
],
“Resource”: “arn:aws:secretsmanager:us-west-2:260527533511:secret:bigquery_credentials_poc-wCHyT3”
},
{
“Sid”: “S3Policy”,
“Effect”: “Allow”,
“Action”: [
“s3:GetBucketLocation”,
“s3:ListBucket”,
“s3:GetBucketAcl”,
“s3:GetObject”,
“s3:PutObject”,
“s3:DeleteObject”
],
“Resource”: [
“arn:aws:s3:::s3-redshift-glue”,
“arn:aws:s3:::s3-redshift-glue/*”
]
}
]
}
创建角色roleGlueBigqueryS3,受信任实体类型选择Glue,添加以下三个策略:
输入连接的名称bigquery,密钥文件选择bigquery_credentials_poc
选中ApplyMapping并删除它。
至此,使用glue自定义规则从BigQuery同步数据到S3桶已完成,若需要将数据加载到redshift,请在redshift中创建对应表,再使用copy命令导入S3数据到表中。详细操作请见上一份POC文档《Redshift测试工作截图》。