繁体   English   中英

创建一个 IAM 角色,使 Redshift 能够访问 S3 存储桶(只读)

[英]Create an IAM Role that makes Redshift able to access S3 bucket (ReadOnly)

我正在尝试创建一个新的 IAM 角色并附加 S3 只读访问策略,但是当我运行以下代码时。 我收到以下错误:调用 CreateRole 操作时发生错误 (InvalidClientTokenId):请求中包含的安全令牌无效。

我已经在配置文件中设置了正确的 aws 访问密钥和安全密钥,但我仍然无法解决此错误。

创建 IAM 角色的代码。

try:
    print('1.1 Creating a new IAM Role')
    dwhRole = iam.create_role(
        Path='/',
        RoleName=DWH_IAM_ROLE_NAME,
        Description='Allows Redshift clusters to call AWS services on your behalf.',
        AssumeRolePolicyDocument=json.dumps({
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Effect": "Allow",
                  "Principal": {
                    "Service": "redshift.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
                }
              ]
            }),
    )

except Exception as e:
    print(e)

# TODO: Attach Policy
print('1.2 Attaching Policy')
iam.attach_role_policy(RoleName=DWH_IAM_ROLE_NAME,
                       PolicyArn="arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
                      )['ResponseMetadata']['HTTPStatusCode']

# TODO: Get and print the IAM role ARN
print('1.3 Get the IAM role ARN')
roleArn = iam.get_role(RoleName=DWH_IAM_ROLE_NAME)['Role']['Arn']

print(roleArn)

DWH_IAM_ROLE_NAME 是一个变量,它也在配置文件中定义。

首先,取消设置以下环境变量:-

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN

获取新的 session 令牌并将其保存或复制到剪贴板:-

aws sts get-session-token

运行下面的命令,它要求 SECRET KEY、ID、TOKEN

aws configure

最后,重新运行您的脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM