使用lambda自动在2个不同的aws帐户之间移动文件

时间:2015-10-22 13:06:01

标签: amazon-web-services amazon-s3 aws-lambda

我有以下情况:

  1. 具有S3 Bucket B1的AWS账户A1
  2. 另一个AWS账户A2与另一个S3 Bucket B2。
  3. 我想要的是:

    1. 用户在S3 B1中上传文件
    2. lambda函数自动将文件从S3 B1移动到S3 B2

1 个答案:

答案 0 :(得分:0)

我必须做类似的事情,我还在研究,但这是我发现的:

源S3 Bucket(B1)和调用的Lambda函数必须位于同一AWS区域,尽管它们可以位于不同的AWS账户中。

必须明确授予权限,以便Lambda能够从B1读取并写入B2,以及从B1接收通知(仅当B1与Lambda不同的AWS账户中,否则权限为隐含的)。

关于权限,您可以在此链接上找到更多信息: http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html

步骤应该是:

  1. 将“lambda invokeFunction权限”授予S3存储桶B1
  2. 授予S3存储桶B1对A2中的lambda执行角色的读取权限以及对S3存储桶B2的写入权限
  3. 我可以使用以下AWS CLI命令实现步骤#1:

    aws lambda add-permission \
    --region __REGION__ \
    --function-name lambda_name \
    --statement-id 1 \
    --principal s3.amazonaws.com \
    --action lambda:InvokeFunction \
    --source-arn arn:aws:s3:::__S3_B1_name__ \
    --source-account __ID_of_account_A1__