首页 > 解决方案 > 如何从 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)

标签: amazon-web-servicesboto3amazon-route53

解决方案


基于您从 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


推荐阅读