在同一 lambda 函数中从不同帐户访问两个表

2024-02-24

是否可以在一个 lambda 函数中访问两个表,其中一个表与 lambda 函数位于同一帐户中,另一个表位于另一个帐户中?

我看过有关的文章跨账户访问委托 https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html到处使用 IAM 角色。但我不确定代码应如何反映从另一个帐户访问资源。这是我通常访问某些 DynamoDb 表的方式:

const dynamodb = new AWS.DynamoDB();
const docClient = new AWS.DynamoDB.DocumentClient({ service: dynamodb });
docClient
  .get({
    TableName: 'SomeTable',
    Key: { id }
  });

看着文档 https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#constructor-property,构造函数中没有提及帐户 ID。所以我不确定如何同时拥有两个连接,一个指向一个帐户,另一个指向另一个帐户!?


是的,可以从同一个 lambda 函数访问 2 个 dynamoDb 表(1 个位于另一个 AWS 账户中)。

访问同一账户的 DynamoDB 表非常简单。

dynamodb_client_of_same_account = boto3.client('dynamodb', region_name='us-east-1')

要访问另一个 AWS 账户的表,需要创建一个新的 dynamoDb 客户端。您需要创建跨账户IAM角色并使用STS https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html获得临时凭证。请按照以下步骤创建跨账户角色。

AWS 账户 A 有 Lambda-----尝试读/写----->使用 DynamoDB 的 AWS 账户 B

在账户 B 中创建 IAM 角色,与账户 A 建立信任关系。

  1. 转到 IAM 角色 -------> 创建角色 ------> 在小部件中选择 *另一个 AWS 账户 *-----> 输入 AWS 账户 A Id 并创建角色

  2. 不要忘记将 DynamoDBAccess 策略添加到此 IAM 角色。

将 STS 代入角色策略附加到账户 A 中的 AWS Lambda 角色

  1. 使用以下 JSON 创建新策略并将该策略附加到您的 Lambda 角色。

    { "版本": "2012-10-17", “陈述”: [ { "效果": "允许", "Action": "sts:AssumeRole", “资源”:“” } ] }

  2. 使用以下代码创建一个新客户端来访问另一个账户中的 DynamoDB 表。

    roleARN = '*<ARN of the role created in Step-1>*'
    client = boto3.client('sts')
    response = client.assume_role(RoleArn=roleARN, 
                                  RoleSessionName='RoleSessionName', 
                                  DurationSeconds=900)
    
    dynamodb_client_for_other_account = boto3.client('dynamodb', region_name='us-east-1',
                aws_access_key_id=response['Credentials']['AccessKeyId'],
                aws_secret_access_key=response['Credentials']['SecretAccessKey'],
                aws_session_token = response['Credentials']['SessionToken'])
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一 lambda 函数中从不同帐户访问两个表 的相关文章

随机推荐

  • LINQ FirstOrDefault 检查默认值

    如何检查是否返回了对象FirstOrDefaultLINQ功能其实是默认的 例如 Contact contact dbo contact Where m gt m contactName Stackoverflow FirstOrDefau
  • 如何在flutter中创建工具栏搜索视图

    我需要实施searchview在工具栏中我的应用程序用于过滤列表视图 在 aziza回答的帮助下 我用下面的列表过滤器编写了搜索视图的详细代码片段 这对其他人有帮助 import package flutter material dart
  • SQL SERVER MANAGEMENT STUDIO:突出显示变量

    SQL SERVER MANAGEMENT STUDIO 中有没有一种方法可以在我们单击变量名称时突出显示变量的所有用法 它可能不适用于所有情况 但我发现使用F2按钮 在我的机器上映射到 View EditLabel 它使我能够突出显示所有
  • range::sort 无法编译

    在 MyRect h 中 struct MyRect MyRect std initializer list
  • Fluentd 发送到 Splunk HEC:想要将源类型设置为命名空间

    是否可以以编程方式将源类型设置为生成日志的名称空间 我正在使用 fluidd 插件将数据发送到 Splunk http 事件收集器 在其他地方 建议使用 record kubernetes namespace name 将索引名称设置为命名
  • 函数的隐式声明在 C99 中无效

    我是 C 语言新手 我遇到了一个我真的不明白的问题 我试图从另一个函数获取一个数组 但是当我尝试提取信息时 它给了我以下警告 函数 getk vector calculation 的隐式声明在 C99 中无效 数组初始值设定项必须是初始值设
  • 使用访问权限填充多对多表

    我有两张桌子 persons and projects 位于多对多表中 因此通过第三个表链接在一起persons projects 在 ms access 中 我现在创建了一个表单 显示来自projects table 我想要的是有一个显示
  • 如何使用 openXML 深度克隆 .xlsx 文件中的行?

    我有 template xlsx 文件 必须通过在特定索引中添加一行的几个副本来修改该文件 当我尝试使用克隆方法进行此操作时 我添加了一行 但每行都互相修改 我需要创建 opemxml 行对象的深度克隆 但是当我尝试此操作时 出现 open
  • 具有多个选项的 jQuery 日期选择器

    我想得到datepicker显示我发送的日期名称 但它仍然使用默认值 有什么东西应该关闭吗 我应该使用单个选项语句设置值吗 我在 Firebug 中没有收到任何错误 这是我的代码 datepicker dateFormat dd mm yy
  • 在 C# 中旋转色调

    我正在寻找复制发现的 CSS3 色调旋转行为here http css3 bradshawenterprises com filters 原始图像 色调旋转 180 度的图像 我已经可以准确地将 RGB 值转换为 HSL 值 然后再转换回来
  • 为什么即使我设置了随机种子,我也无法在 Keras 中获得可重现的结果?

    我正在 Mac OSX 上使用 Keras 在虚拟数据上训练 MobileNet 架构 我都设置了nump random and tensorflow set random seed 但由于某些原因 我无法获得可重现的结果 每次重新运行代码
  • 您知道 NTSC 解码器 API 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 API 可以用来解码模拟信号的数字样本 根据 http en wikipedia org
  • if fi [: 参数太多

    这个脚本有什么问题吗 if grep q
  • 如何更改LocationRequest的间隔

    我将应用程序设置为每 5 秒获取一次位置通知 mLocationRequest LocationRequest create mLocationRequest setPriority LocationRequest PRIORITY HIG
  • 如何跟踪点击时正确的标注附件视图的位置

    正如您在下面看到的 我有一个带有右键的注释视图 当用户点击右侧按钮时 我将呈现一个弹出窗口 问题是我不知道用户点击的位置 因此我没有 X 和 Y 来相应地显示弹出窗口 如何找出用户点击的位置 即 X 和 Y HotelAnnotationV
  • 如何快速检查一个对象是否是动态类类型?

    我正在实现一个名为的函数ofType它过滤掉给定类型的所有元素 这是我的代码 class Animal class Mammal Animal class Monkey Mammal class Pig Mammal class Human
  • 如何调试 Firefox 扩展,它似乎无声地崩溃

    我不知道如何调试我的简单扩展 脚本 内容脚本 加载 因为第一个 console log 调用显示在选项卡的控制台中 但随后什么也没有 没有任何错误 也没有第二次 console log 调用 我的问题不是关于解决我的代码问题 肯定有一个 如
  • Matplotlib/Pandas 中条形图的优化

    代码 df pd DataFrame 770 215 179 107 83 82 70 60 57 54 52 index A B C D E F G H I J K ax df plot kind bar stacked False al
  • java 解组 LocalDateTime

    这是我的适配器类 public class LocalDateTimeAdapter extends XmlAdapter
  • 在同一 lambda 函数中从不同帐户访问两个表

    是否可以在一个 lambda 函数中访问两个表 其中一个表与 lambda 函数位于同一帐户中 另一个表位于另一个帐户中 我看过有关的文章跨账户访问委托 https docs aws amazon com IAM latest UserGu