amazon-web-services - 如何从 Account1 在 Account2 中创建记录集
问题描述
我正在尝试从 Account2 中的 Account1 创建一个 route53 记录集。
通过阅读其他帖子和在线搜索,我正在考虑做这样的事情:
from boto3 import Session
session = Session(aws_access_key_id=*****,aws_secret_access_key=****,region_name='us-east-1')
r53_client = session.client('route53')
r53_resource = session.resource('route53')
想从有经验的人那里知道这是否是正确的方法?还是有更好的方法来实现上述目标?
这是更新的代码:
def lambda_handler(event, context):
sts = boto3.client('sts')
response = sts.assume_role(
RoleArn='arn:aws:iam::***123:role/lambda',
RoleSessionName='my-random-session-name',
DurationSeconds= 900 # how many seconds these credentials will work
)
tempAccessKeyId = response['Credentials']['AccessKeyId']
tempSecretAccessKey = response['Credentials']['SecretAccessKey']
tempSessionToken = response['Credentials']['SessionToken']
client = boto3.client('route53',
region_name = 'us-west-2',
aws_access_key_id=tempAccessKeyId,
aws_secret_access_key=tempSecretAccessKey,
aws_session_token=tempSessionToken)
response = client.list_resource_record_sets(
HostedZoneId='***',
StartRecordName='test.example.com.',
StartRecordType='A'
)
print(response)
解决方案
基于您从 AWS Lambda 函数执行此操作的事实,最安全的方法是:
- 在账户 1 中:
- 创建
Role 1
将由 Lambda 函数使用的 IAM 角色 ( ) - 将权限分配给允许其承担的角色
Role-2
- 还分配 Lambda 函数所需的任何其他权限(您通常会添加
AWSLambdaBasicExecutionRole
托管策略以允许日志记录) - 分配
Role 1
给 Lambda 函数
- 创建
- 在账户 2 中:
- 创建一个
Role 2
具有信任权限的 IAM 角色 ( ),允许Role 1
账户 1代入该角色 - 授予
Role 2
适当的权限以使用 Amazon Route 53
- 创建一个
在您的 Lambda 代码中,您将调用AssumeRole()
. Role 2
这将提供一组可用于访问帐户 2 的临时凭据(根据您的代码,上面)。
请参阅:切换到 IAM 角色 (AWS API) - AWS Identity and Access Management
推荐阅读
- r - 一起洗衣服概率的模拟
- html - 如何在无序列表上设置点并将它们更改为悬停时的图像
- python - ' TypeError: Parser 必须是字符串或字符流,而不是列表' Python
- c++ - 在 cppcms GET 或 POST 请求中显示参数
- c - C删除函数中的循环双向链表
- kotlin - Kotlin 中的 Gradle 构建系统是什么?
- c# - C# 命名空间中的类、方法
- python - python在cog文件中关闭db说它仍在运行,错误
- java - 根据字符串的模式数组对字符串进行排序
- tensorflow - 使用 tf.data.dataset 为序列模型创建数据生成器