Почему принятие ролей должно выполняться внутри лямбды?

Вот почему сервис AWS Lambda был разработан таким образом.

Согласно документации о том, как настроить функцию Lambda для принятия роли из другой учетной записи AWS?, чтобы получить доступ к ресурсу из другой учетной записи, функция Lambda должна вызватьassume_roleметод для получения временных учетных данных. У меня вопрос, почему это нельзя сделать вне лямбды. Например, мы могли бы просто привязать RoleB из AccountB к RoleA (роль выполнения лямбда-функции).

Преимущество переноса логики за пределы очевидно - лямбда более портативна.

import boto3

def lambda_handler(context, event):

    sts_connection = boto3.client('sts')
    acct_b = sts_connection.assume_role(
        RoleArn="arn:aws:iam::222222222222:role/role-on-source-account",
        RoleSessionName="cross_acct_lambda"
    )

    ACCESS_KEY = acct_b['Credentials']['AccessKeyId']
    SECRET_KEY = acct_b['Credentials']['SecretAccessKey']
    SESSION_TOKEN = acct_b['Credentials']['SessionToken']

    # create service client using the assumed role credentials, e.g. S3
    client = boto3.client(
        's3',
        aws_access_key_id=ACCESS_KEY,
        aws_secret_access_key=SECRET_KEY,
        aws_session_token=SESSION_TOKEN,
    )

    return "Hello from Lambda"

После удаления логики приведенный выше код можно упростить следующим образом:

import boto3

def lambda_handler(context, event):

   # create service client e.g. S3
    client = boto3.client(
        's3'
    )

    return "Hello from Lambda"

0 ответов

Другие вопросы по тегам