【问题标题】:An error occurred (AuthFailure) AWS was not able to validate the provided access credentials: ClientError from lambda function发生错误 (AuthFailure) AWS 无法验证提供的访问凭证:来自 lambda 函数的 ClientError
【发布时间】:2020-11-21 23:05:58
【问题描述】:

我正在尝试从 lambda 函数运行以下命令,但我不断收到错误 AWS 无法验证提供的访问凭证。我非常确定凭证是正确的,因为访问凭证是我在本地 AWS CLI 中使用的一组凭证。有人知道吗?

 ec2 = boto3.client('ec2', region_name=str(REGION_NAME), aws_access_key_id=str(ACCESS_KEY), aws_secret_access_key=str(SECRET_KEY))

【问题讨论】:

  • 最佳实践是使用 IAM 角色而不是硬编码凭证,如前所述。但我想知道为什么你的代码不起作用。因为据我所知,当您直接在代码中将凭证传递给 boto 时,它应该优先于 IAM 角色。我的怀疑是代码没有从变量中获取凭证。尝试记录凭据以查看代码是否正在接收凭据。
  • 这是否意味着一旦我将示例 ec2 完全访问权限附加到角色并将此角色附加到我的 lambda,我可以在不传递凭据的情况下调用 boto3.client?
  • 是的。您可以同时删除访问密钥和密钥参数

标签: amazon-web-services amazon-ec2


【解决方案1】:

当您使用 lambda 函数时,应使用 AWS Lambda execution role 提供其权限:

AWS Lambda 函数的执行角色授予其访问 AWS 服务和资源的权限。您在创建函数时提供此角色,而 Lambda 在调用您的函数时代入该角色。

我知道它不能直接回答您的问题,但这是良好做法,您不应在 lambda 函数或其环境变量中硬编码任何 IAM 凭证。

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 2013-07-04
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多