Redshift Scheduler 无法创建计划

rho*_*nda 5 amazon-s3 amazon-web-services amazon-redshift

我的 AWS 有 2 个不同的用户:admin,s3_readonly

\n

我是主要管理员,在 Redshift(cluster1) 中有 1 个集群。\n现在我正在尝试安排一个查询,每小时只调用这些过程(CALL <procedure_name>)

\n

对于此任务,我遵循了 AWS 的官方文档(在 Amazon Redshift 控制台上安排查询 - Amazon Redshift),确切地说是本文档步骤(在 Amazon Redshift 数据仓库上安排 SQL 查询 | AWS 大数据博客)。

\n

因此,我创建了新的 IAM 角色RedshiftScheduler,该角色具有Redshift Customizable选项并已附加AmazonRedshiftDataFullAccess到它。然后我编辑了信任关系并添加了:

\n
{\n  "Version": "2012-10-17",\n  "Statement": [\n    {\n      "Effect": "Allow",\n      "Principal": {\n        "Service": "redshift.amazonaws.com"\n      },\n      "Action": "sts:AssumeRole"\n    },\n    {\n      "Sid": "S2",\n      "Effect": "Allow",\n      "Principal": {\n        "AWS": "arn:aws:iam::<ACCOUNT_ID>:user/admin"\n      },\n      "Action": "sts:AssumeRole"\n    },\n    {\n      "Sid": "S1",\n      "Effect": "Allow",\n      "Principal": {\n        "Service": "events.amazonaws.com"\n      },\n      "Action": "sts:AssumeRole"\n    }\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

然后,我返回到我的 AWS 用户(管理员)并附加了授予角色权限的新策略:

\n
{\n    "Version": "2012-10-17",\n    "Statement": [\n        {\n            "Sid": "S3",\n            "Effect": "Allow",\n            "Action": "sts:AssumeRole",\n            "Resource": "arn:aws:iam::<ACCOUNT_ID>:role/RedshiftScheduler"\n        }\n    ]\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

现在,我通过AWS服务登录到Redshift集群。使用临时凭据连接cluster1并使用dbuser。但是,当我尝试安排查询时,它会抛出错误

\n
\n

要查看此计划的计划历史记录,请将 IAM 角色 arn:aws:iam::<ACCOUNT_ID>:role/RedshiftScheduler 的 sts:AssumeRole 添加到您的 IAM 角色。您还需要将 IAM 用户 ARN 添加到角色\xe2\x80\x99s 信任策略中。

\n
\n

小智 1

您需要将 IAM 用户 ARN 添加到角色\xe2\x80\x99s 信任策略中,如下所示

\n
{\n    "Effect": "Allow",\n    "Principal": {\n        "AWS": "arn:aws:iam::<account #>:user/<admin username"\n    },\n    "Action": "sts:AssumeRole",\n    "Condition": {}\n}\n
Run Code Online (Sandbox Code Playgroud)\n

\n
{\n    "Sid": "S1",\n    "Effect": "Allow",\n    "Principal": {\n        "Service": "events.amazonaws.com"\n    },\n    "Action": "sts:AssumeRole"\n}\n
Run Code Online (Sandbox Code Playgroud)\n