Amazon Redshift:拒绝访问还原集群快照请求

Posted

技术标签:

【中文标题】Amazon Redshift:拒绝访问还原集群快照请求【英文标题】:Amazon Redshift : Acces Denied RestoreClusterSnapshotRequest 【发布时间】:2016-07-28 23:03:05 【问题描述】:

我在尝试使用快照还原集群时遇到问题。我将不胜感激。

使用的代码是:

var con = new AmazonRedshiftClient(acess_key_id, secret_acess_key, Amazon.RegionEndpoint.USWest2);

        var restore = new Amazon.Redshift.Model.RestoreFromClusterSnapshotRequest()
        
            ClusterIdentifier = clusterIdentifier,
            SnapshotIdentifier = snapshotIdentifier,
            AvailabilityZone = "us-west-2a",
        ;

        var response = con.RestoreFromClusterSnapshot(restore);

        Console.WriteLine("Cluster Status : 0", response.Cluster.ClusterStatus);

当它调用 RestoreClusterSnapshotRequest 操作时,我有一个异常: “拒绝访问。请确保您的 IAM 权限允许此操作。”

像这样为 Amazon Redshift 使用基于身份的策略(IAM 策略) 政策:


"Version": "2012-10-17",
"Statement": [
    
        "Effect": "Allow",
        "Action": [
            "redshift:CopyClusterSnapshot",
            "redshift:RestoreFromClusterSnapshot",
            "redshift:AuthorizeSnapshotAccess",
            "redshift:RevokeSnapshotAccess"
        ],
        "Resource": [
            "arn:aws:redshift:us-west-2:AccoundId:*/backup-20160208-dbrd",
            "arn:aws:redshift:us-west-2: AccoundId:cluster:*"
        ]
    ,
    
        "Effect": "Allow",
        "Action": [
            "redshift:DescribeClusterSnapshots"
        ],
        "Resource": [
            "*"
        ]
    
]

任何人都可以帮助我克服这个问题.. 如果我在此过程中犯了任何错误,请纠正我.. .

提前致谢

【问题讨论】:

【参考方案1】:

按照the other answer 中的建议,您应该更改此行:

"arn:aws:redshift:us-west-2:AccoundId:*/backup-20160208-dbrd",

"arn:aws:redshift:us-west-2:AccoundId:snapshot:*/backup-20160208-dbrd",

此外,我通过大量试验和错误以及 AWS 支持的帮助发现,您还需要多个 ec2 权限才能从快照恢复 Redshift 集群。此时的名单是:

    
        "Sid": "",
        "Effect": "Allow",
        "Action": [
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeAddresses",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcs",
            "ec2:DescribeInternetGateways"
        ],
        "Resource": "*"
    

您可能只想使用ec2:Describe* 来方便和/或防止将来发生这种情况(如果确切的权限集发生更改)。

Amazon Redshift Snapshots docs(搜索“RestoreFromClusterSnapshot”)应该很快就会使用此信息进行更新。

【讨论】:

【参考方案2】:

我认为您缺少“资源”部分中的快照详细信息部分。 请看下面的更新:

"Resource": [
            "arn:aws:redshift:us-west-2:AccoundId:*/backup-20160208-dbrd",
            "arn:aws:redshift:us-west-2: AccoundId:cluster:*",
            "arn:aws:redshift:us-west-2:AccoundId:snapshot:*"
        ]

希望这会对你有所帮助。

【讨论】:

【参考方案3】:

疯了,但这就是秘诀。

        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAddresses",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeInternetGateways"

【讨论】:

以上是关于Amazon Redshift:拒绝访问还原集群快照请求的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 Amazon EC2 实例中连接到 Amazon Redshift 集群

Amazon Redshift 术语

Amazon Redshift 安全组问题

使用 Python 和 Boto3 获取列表集群 Amazon Redshift

我想使用 python boto3 脚本将数据加载到 Amazon Redshift 集群中

适用于 Amazon Redshift 的 REST API