【发布时间】:2021-01-01 08:01:48
【问题描述】:
我正在将 S3 连接到 EC2 上的 Django。
我确认它可以在我的电脑(窗口)上运行,
但是当我将它上传到AWS EC2 Ubuntu 并运行它时,
我看到了以下消息。
当我运行python manage.py commands
File "/home/ubuntu/django/e/lib/python3.6/site-packages/botocore/session.py", line 821, in create_client aws_secret_access_key)) **botocore.exceptions.PartialCredentialsError: Partial credentials found in explicit, missing: aws_secret_access_key**
但我认为我设置正确。在我的settings.py
AWS_S3_HOST = 's3.me-south-1.amazonaws.com'
AWS_S3_REGION_NAME= config('AWS_S3_REGION_NAME')
AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_kEY = config('AWS_SECRET_ACCESS_kEY')
AWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME')
我试过了
- 授予 IAM 对 EC2 的权限
- 删除 EC2 重试
- 通过
export设置环境变量 - 扔掉 virtualenv 试试
- 安装 awscli 并进行配置
- s3 存储桶策略配置
- 尝试将其写入内联,因为它可能无法引用 .env 文件,但它给了我相同的信息。
我今天整天都在为这个问题苦苦挣扎。谈到 AWS Config,我想我已经尽力了。如果您对这个问题的原因有任何猜测,请给我提示。
我只认为 boto3 在 EC2 上以一种特殊的方式查找密钥
AWS 角色设置工作正常 :) 我注意到当我将 EC2 与 IAM 角色一起使用时,我应该设置 setting.py AWS_SECRET_ACCESS_kEY 和 AWS_ACCESS_KEY_ID None
【问题讨论】:
-
IAM 角色是否为
ec2.amazonaws.com启用了AssumeRolePolicyDocument和sts:AssumeRole -
@Exelian .. 我给了它 AmazonS3FullAccess 和 AmazonEC2FullAccess 角色
-
那些是权限,但不是受信任的实体。单击 IAM 控制台中的角色并选择“信任关系”选项卡。它应该提到 EC2.amazonaws.com 作为“身份提供者”
-
@Exelian !哦,好的。非常感谢。我明天试试。今天太累了
标签: django amazon-web-services amazon-s3 amazon-ec2 boto3