Amazon web services AWS Lambda SQS触发器承担角色

Amazon web services AWS Lambda SQS触发器承担角色,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我的任务是使用来自外部公司的SQS队列中的消息,该队列返回一个bucket和密钥,我将从中复制一个文件。这家外部公司已经设置了一个角色,我可以假设它允许我访问SQS队列和S3存储桶,但我有一个问题。我如何假设Lambda触发器的外部角色?这可能吗?您将在Lambda中担任角色,然后使用临时凭据与外部AWS帐户交互 python示例 import boto3 sts = boto3.client('sts') role = sts.assume_role( RoleArn="a

我的任务是使用来自外部公司的SQS队列中的消息,该队列返回一个bucket和密钥,我将从中复制一个文件。这家外部公司已经设置了一个角色,我可以假设它允许我访问SQS队列和S3存储桶,但我有一个问题。我如何假设Lambda触发器的外部角色?这可能吗?

您将在Lambda中担任角色,然后使用临时凭据与外部AWS帐户交互

python示例

import boto3

sts = boto3.client('sts')

role = sts.assume_role(
   RoleArn="arn:aws:iam::EXTERNAL_COMPANY_ACCOUND_ID:role/EXTERNAL_COMPANY_ROLE",
   ExternalId="EXTERNAL_ID_CONFIGURED",
   RoleSessionName="RoleSessionNameYouWant")

credentials = role['Credentials']

# Interact with resoures from the external company account
external_session = boto3.Session(
    aws_access_key_id=credentials['AccessKeyId'],
    aws_secret_access_key=credentials['SecretAccessKey'],
    aws_session_token=credentials['SessionToken'])

s3 = external_session.client('s3'),
sqs = external_session.client('sqs')

外部ID是可选的,但在将角色指定给第三方以避免冲突时非常重要。如果没有为您的角色配置外部id,请让第三方为您的角色配置外部id。

当然,这没问题,非常简单。我的问题是关于使用SQS来触发lambda的,但是我想用作触发器的SQS队列在另一个帐户上。我怎样才能让触发器使用假定的角色?哦,我明白了!谢谢你的澄清。不可能使用外部角色添加lambda触发器,但实际上您甚至不需要角色,SQS支持跨帐户访问,下面是一篇解释其工作原理的文章: