我编写了一个lambda函数,该函数用于获取实例的volume_id,而我使用cross_account lambda来获取未使用的卷ID时使用的同一函数
比如说我在其中运行该功能的帐户A能够获取卷ID,而我尝试从帐户B获取我无法获得的帐户A的卷ID。
我正在使用Cloudwatch Event Bus,因此无论何时在帐户A中启动实例,该功能都将使用Cloudwatch角色触发。
import boto3
import json
import datetime
ststoken = boto3.client('sts')
def lambda_handler(event, context):
awsaccount = ststoken.assume_role(
RoleArn='**************************************************************',
RoleSessionName='awsaccount_session'
)
client = boto3.client('lambda',
aws_access_key_id=awsaccount['Credentials']['AccessKeyId'],
aws_secret_access_key=awsaccount['Credentials']['SecretAccessKey'],
aws_session_token=awsaccount['Credentials']['SessionToken']
)
def findVolumes(instaceId, region):
print "Insatnce-id=" + instaceId
ec2 = boto3.client('ec2')
#instance = ec2.Instance(instaceId)
volumes = ec2.describe_volumes(
Filters=[
{
'Name' : 'attachment.instance-id',
'Values': [instaceId]
}
]
)
for v in volumes['Volumes']:
print v['VolumeId']
print(v['VolumeId'],instanceId)