AssumeRoleとは
現在のIAMの権限から、異なるIAMロールへ権限委譲するときに利用するAWS API名。
本記事では、Lambdaに付与しているIAMロールからAssumeRole先のIAMロールへ権限委譲するための実装を後述。

IAMロールの構築
AssumeRole先のIAMロールを作成(添付画像の信頼関係の設定必須!)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::${アカウントID指定}:role/Lambda-Role"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
AssumeRoleをするためのLambdaを作成
Lambda作成後に「AssumeRole用のスクリプト」を貼り付けてデプロイ後に、「Test」をクリック

AssumeRole用のスクリプト
一部の値を除いて(${アカウントID指定})、そのまま流用できます!
import boto3
def lambda_handler(event, context):
    
    sts = boto3.client('sts',
                       region_name='us-east-1',
                       endpoint_url='https://sts.us-east-1.amazonaws.com')
                       
    print("## AssumeRole前のLambdaに付与しているIAMロールを出力 ##")
    print(sts.get_caller_identity())
    res = sts.assume_role(RoleArn='arn:aws:iam::${アカウントID指定}:role/lambda-iam-assumerole',
                          RoleSessionName='dev-assume-role')
    session = boto3.Session(aws_access_key_id=res['Credentials']['AccessKeyId'],
                      aws_secret_access_key=res['Credentials']['SecretAccessKey'],
                      aws_session_token=res['Credentials']['SessionToken'],
                      region_name='ap-northeast-1')
                      
    sts = session.client('sts')
    print("## AssumeRole先のIAMロールを出力 ##")
    print(sts.get_caller_identity())


