Lambda истекает при доступе к S3 Bucket в другой учетной записи с помощью Boto3 - PullRequest
1 голос
/ 22 февраля 2020

Я пытаюсь получить доступ к S3 bucket в другой учетной записи с моей AWS Lambda с помощью boto3. Ниже приведены шаги, которые я настроил. 1. В учетной записи A, где находится Lambda, я создаю роль «Выполнение» (Lambda-S3-SNS-VP C -Role) и присоединяю к ней одну управляемую политику AmazonS3FullAccess и одну встроенную политику. как:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1489133353000",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::<Account-B-ID>:role/access-s3-bucket-from-lambda-in-another-acc-role"
            ]
        }
    ]
}

В Account-B, где присутствует моя корзина S3, я создал одну роль IAM (access-s3-bucket-from-lambda-in-another-a cc -role) как показано ниже: - Прикрепленная управляемая политика AmazonS3FullAccess и доверительные отношения:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<Account-A-ID>:role/Lambda-S3-SNS-VPC-Role",
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Кроме того, в S3 Bucket на счете B приведена ниже политика Bucket

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<Account-A-ID>:role/Lambda-S3-SNS-VPC-Role"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::my-bucket-in-acc-B",
                "arn:aws:s3:::my-bucket-in-acc-B/*"
            ]
        }
    ]
}

Ниже приведен мой код функции Lambda. :

def lambda_handler(event, context):
    sts_connection = boto3.client('sts')

    acct_b = sts_connection.assume_role(
        RoleArn="arn:aws:iam::<Account-B-ID>:role/access-s3-bucket-from-lambda-in-another-acc-role",
        RoleSessionName="cross_acct_lambda"
    )
    print('acct_b: ',acct_b)

Но во время тестирования ничего не происходит, и время ожидания функции истекло. Пожалуйста, руководство.

1 Ответ

0 голосов
/ 22 февраля 2020

Я не уверен, почему ваша функция отключена, но я хотел бы рекомендовать другой подход:

  • Лямбда-функция в Account-A, которая работает с ролью IAM Lambda-S3-SNS-VPC-Role
  • Bucket-B в Account-B с политикой Bucket, которая разрешает доступ с Lambda-S3-SNS-VPC-Role (это именно то, что вы показали выше)

Это все, что вам нужно!

нет необходимости принимать роль IAM от Account-B, поскольку политика Bucket в Bucket-B разрешает доступ из роли IAM, используемой функцией Lambda.

...