use*_*780 4 python amazon-s3 amazon-web-services
以下已解决的问题允许我在 Redshift 中卸载、复制、运行查询、创建表等:Redshift create table not work via Python和Unload to S3 with Python using IAM Rolecredential。请注意,即使我通过 Redshift 成功写入 S3 并从 S3 复制,也不依赖于 Boto3。
我希望能够使用Python(来自cwd)将文件动态上传到S3 - 但是我似乎没有找到如何使用而iam_role 'arn:aws:iam:<aws-account-id>:role/<role_name>
不是按照http访问和密钥的文档或示例: //boto3.readthedocs.io/en/latest/guide/quickstart.html。
任何帮助是极大的赞赏。这就是我现在所拥有的,它会引发以下错误Unable to locate credentials
:
import boto3
#Input parameters for s3 buckets and s3 credentials
bucket_name = ''
bucket_key = ''
filename_for_csv = 'output.csv'
#Moving file to S3
s3 = boto3.resource('s3')
data = open(filename_for_csv, 'rb')
s3.Bucket(bucket_name).put_object(Key=bucket_key, Body=data, ServerSideEncryption='AES256')
Run Code Online (Sandbox Code Playgroud)
您将需要 AWS IAM 访问密钥。
您面临的问题是,您需要访问密钥才能调用 STS(安全令牌服务),然后 STS 可以使用您的角色 ARN 处理 AssumeRole(),然后生成新的临时访问密钥。
但是,如果您有访问密钥,则无需使用 AssumeRole()。
如果您的计算机位于 AWS 之外,那么您将需要使用访问密钥或 Cognito 等身份验证/授权服务。
IAM 角色专为 Redshift、EC2 等服务而设计,这些服务有权使用您的角色 ARN 调用 STS 以生成新的临时访问密钥。角色不能在 AWS 外部调用(也有例外,例如 Cognito)。
[新评论后编辑]
您有几种解决方案:
归档时间: |
|
查看次数: |
5896 次 |
最近记录: |