[英]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.