【发布时间】:2019-05-22 14:03:45
【问题描述】:
我在我的两个帐户(Dev 和 Prod)之间执行了以下任务,但我无法将数据从 S3 复制到我的 Prod 帐户中的 Redshift。
任务 1:
- 我在 S3 下的开发帐户中有一些数据
- 此数据使用 KMS 加密
- 我想将相同的数据移动到 Prod 帐户
- 我启动了一个 EC2 服务器并执行了同步命令以将数据从 Dev 移动到 Prod(我的错误是我在同步时没有专注于解密)
-
我的数据在 Prod 帐户中可用(大约 500 GB)
任务 2:
现在我想将这个 S3 数据(从 Dev 复制)移动到 Redshift ,我使用 Redshift Query 执行了以下命令 编辑器。
命令:
COPY table1(wre,sdf,sfd,sd,fs,df,sdfs,dfsdf,sd,fs,dfsdf,sdf,qwer,wer,wer)
FROM 's3://mydata/csv'
IAM_ROLE 'arn:aws:iam::myrole'
DELIMITER '|' IGNOREHEADER 1 TIMEFORMAT 'auto' REMOVEQUOTES NULL AS 'NULL'
EMPTYASNULL TRIMBLANKS ROUNDEC;
但是我遇到了以下错误:
[Amazon](500310) Invalid operation: S3ServiceException:Access Denied,Status 403,
Error AccessDenied,Rid 70FE39F0982E9706,ExtRid Pxs9xdm+Plb2fvgySsuVq0UWLV2UCwMJ+qrGe0jazom346t4szXILbHma5SX1ZrIq4kPJA8q5Ws=,
CanRetry 1 Details: -----------------------------------------------
error: S3ServiceException:Access Denied,Status 403,Error AccessDenied,
Rid 70FE39F0982E9706,ExtRid Pxs9xdm+Plb2fvgySsuVq0UWLV2UCwMJ+qrGe0jazom346t4szXILbHma5SX1ZrIq4kPJA8q5Ws=,
CanRetry 1 code: 8001 context: S3 key being read :
我认为由于数据已加密,因此我遇到了这个问题。因此,为了克服这个问题,我尝试允许跨帐户访问 KMS。
任务 3:
我浏览了this 文档并遵循了程序。这是相同的步骤和我创建的策略。
- 我在生产帐户中创建了一个 IAM 策略(如下所述)
- 将此策略附加到我的角色(在上面的副本声明中使用)用于生产帐户中的 Redshift 副本
政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUseOfCMKInAccount444455556666",
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "arn:aws:kms:us-east-2:XXXXXXXXXX:key/9821114k-mfdfki-7e8e"
},
{
"Sid": "AllowUseofCMKToCreateEncryptedResourcesInAccount444455556666",
"Effect": "Allow",
"Action": "kms:CreateGrant",
"Resource": "arn:aws:kms:us-east-2:XXXXXXXXXX:key/9821114k-mfdfki-7e8e",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}
XXXXXXXXXX 是开发帐号,arn 是开发帐号密钥 arn。
我必须进行哪些其他更改才能使其运行并将我的数据导入 Redshift。
如果有人也能帮助我了解背景行为,那就太好了。
注意:我在 KMS 的开发帐户中使用客户管理的密钥。
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-kms