Настройка кросс-аккаунта S3 - PullRequest
0 голосов
/ 17 марта 2020

У меня есть две учетные записи в AWS, такие как учетная запись A и учетная запись B. В учетную запись A, когда я загружаю объекты в корзину S3, она должна автоматически загружаться в учетную запись B, корзину S3. Может кто-нибудь предложить мне, как написать лямбда-функцию, используя python для этого и какую роль IAM мы можем использовать для этого .?

1 Ответ

0 голосов
/ 18 марта 2020

Похоже, что ваше требование:

  • Создание AWS лямбда-функции in Account-A
  • Лямбда-функция должна иметь возможность создать объекты Amazon S3 в корзине (Bucket-B), принадлежащей Account-B

Самая простая настройка для этого будет:

  • Создать Роль IAM для функции Lambda
  • Роль должна иметь разрешение на PutObject в Bucket-B (или даже на любое ведро), например:
{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":"arn:aws:s3:::bucket-b/*"
      }
   ]
}
  • На Bucket-BAccount-B) добавьте Политику Bucket, которая позволяет вышеупомянутой роли IAM записывать в корзину:
{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicRead",
      "Effect":"Allow",
      "Principal": "arn:aws:iam::<ACCOUNT-B>:role/lambda-role",
      "Action":["s3:PutObject"],
      "Resource":["arn:aws:s3:::bucket-b/*"]
    }
  ]
}
  • При записи для объектов Bucket-B, убедитесь, что лямбда-функция устанавливает ACL='bucket-owner-full-control', чтобы владение было передано Account-B

. Приведенный выше метод не требует принятия роли в Account-B, потому что сегмент политика Bucket-B разрешает доступ через роль IAM с Account-A.

...