我正在尝试从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函数执行此操作的事实,最安全的方法是:
Role 1
)Role-2
的角色>AWSLambdaBasicExecutionRole
托管策略以允许记录)Role 1
分配给Lambda函数Role 2
),该权限允许帐户1中的Role 1
承担角色Role 2
适当的权限以使用Amazon Route 53在您的Lambda代码中,您将在AssumeRole()
上调用Role 2
。这将提供一组临时凭证,可用于访问帐户2(按照上面的代码)。
参见:Switching to an IAM Role (AWS API) - AWS Identity and Access Management
要对AWS账户进行API调用,您要么需要该AWS账户的凭证(例如,与IAM用户关联的凭证),要么需要能够承担