当前位置: 首页 > 知识库问答 >
问题:

我可以在boto3使用的. aws/凭据中用IAM角色替换aws键吗?

商夜洛
2023-03-14

我尝试将该角色用作:

~/.aws/credentials
[default]
role_arn=arn:aws:iam::xxxxxxx:role/yyyy

但我得到了一个错误:

Partial credentials found in assume-role, missing: source_profile or credential_source

因此,IAM的角色似乎无法取代

[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAAAAAA
aws_secret_access_key =  BBBBBBBBBBBBBBBBBBBBBBBBBBB

根据http://boto3.readthedocs.io/en/latest/guide/configuration.html

# In ~/.aws/credentials:
[development]
aws_access_key_id=foo
aws_access_key_id=bar

# In ~/.aws/config
[profile crossaccount]
role_arn=arn:aws:iam:...
source_profile=development

我仍然需要使用密钥,这可能会带来安全风险,即使没有在代码中使用

有没有一种方法可以在不使用aws API凭据的情况下使用具有管理员权限的boto3?

所以基本上:

>

#!/usr/bin/env python导入boto3
ec2_client=boto3.client('ec2')
def main():vpcs=ec2_client.在vpcs['vpcs']中为vpc_信息描述vpcs():打印(vpc_info['VpcId'])
如果name==“main”:main()

我在github上遇到了一个解决此问题的应用程序

https://github.com/AdRoll/hologram

共有1个答案

长孙承嗣
2023-03-14

如果您有一个角色附加到EC2实例,您可以使用:

~/.aws/config

[default]
credential_source=Ec2InstanceMetadata

https://docs.aws.amazon.com/cli/latest/topic/config-vars.html

credential_source—用于获取初始角色调用的凭据的凭据提供程序。此参数不能与源配置文件一起提供。有效值为:

从环境变量中提取源凭据。

Ec2InstanceMetadata将EC2实例角色用作源凭据。

使用ECS容器凭据作为源凭据。

 类似资料:
  • 我正在尝试使用已附加到EC2实例的IAM角色来生成一组AWS SES SMTP凭据。但是,在尝试通过django发送电子邮件时,使用Amazon提供的脚本从IAM角色的密钥生成SMTP密码,并使用IAM角色的访问密钥ID。果心邮件,我收到错误。 这是我发送邮件的方式: 我如何生成密码: SMTP密码生成脚本如下所示:https://docs.aws.amazon.com/ses/latest/De

  • 我使用预先签名的post/url上传到S3并从S3下载。预签名的url/post是通过Lambda函数中的boto3生成的(它是通过zappa部署的)。 当我添加我的和作为env变量时,效果非常好。然后,我删除了我的凭据,并向lambda添加了一个IAM角色,以完全访问S3存储桶。之后,lambda返回带有预先签名的URL和运行良好,但是当我想通过URL上传对象时,它返回一个错误。使用的密钥id,

  • 我正在设置一些文件传输脚本,并正在使用boto3来做这件事。 我需要从本地发送一些文件到第三方AWS帐户(跨帐户)。我在另一个帐户上设置了一个角色,具有写入桶的权限,并将此角色分配给了我帐户上的一个用户。 我可以在CLI上做到这一点,但Boto一直在为桶踢出一个AccessDenied错误。 编辑:作为对John的多部分权限评论的回应,我尝试通过put_object方法上传以绕过此操作-但仍然被访

  • 场景:我在同一个帐户下有一个EC2实例和一个S3 bucket,我在该EC2上的web应用程序希望访问该bucket中的资源。 在官方文档之后,我使用创建了一个IAM角色,并将其分配给EC2实例。根据我的理解,现在我的web应用程序应该可以访问桶。但是,经过试验,我似乎必须添加桶策略,如下所示: 否则我就被禁止进入。 但是,既然我已经向EC2实例授予了IAM角色,为什么还要使用这个桶策略呢?

  • 我是AWS世界的新手,我不是来自安全背景的人,所以围绕AWS IAM和SMTP设置的概念让我头晕目眩。 我已经按照所有步骤安装了AWS PHP SDK,验证了域(以及从AWS控制台成功发送了一些测试电子邮件)和一些我想发送测试电子邮件的个人电子邮件地址,但我没有得到的部分是SMTP/IAM。 我有他们提供的Amazon基本脚本,但我真的不明白在创建SMTP凭据和/或IAM时需要做什么,我搜索了所有

  • 我们在AWS VPC中使用基于角色的IAM凭据。这意味着您永远不会将密钥传递给AWS SDK的客户端。 之前我们使用了PHPSDK。Amazon特别建议在PHP SDK中使用基于角色的身份验证时缓存凭据: https://docs.aws.amazon.com/aws-sdk-php/guide/latest/credentials.html#caching-iam-role-credential