amazon-web-services - Amazon S3 在另一个账户中触发另一个 Lambda 函数

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

当任何对象进入账户 A S3 存储桶时,我想在账户 B 中运行 lambda。

但是我听说我们只能从同一个账户 S3 访问 Lambda,对于跨账户 S3 Lambda 访问,我必须在同一个账户中运行 Lambda 并制作另一个运行另一个账户 Lambda 的触发器:

  • S3(账户 A)--> Lambda(账户 B)- 不可能
  • S3(账户A)--> Lambda(账户A)-->Lambda(账户B)- 可能

  • 有人可以帮助我哪个选项是可能的吗?如果是这样怎么办?

    最佳答案

    @John 的解决方案有效,但我想在他的回答中添加某些步骤。

  • S3 桶和 Lambda 必须在同一个地区。例如,两者都应该在 us-east-1 中创建地区。不同地区会抛出如下错误:

  • The notification destination service region is not valid for the bucket location constraint



    以下是我创建触发器的步骤:
    Account-A.S3-bucket -> Account-B.Lambda-function
    
  • 从终端,切换到 Lambda 所在的账户 B 的 AWS 配置文件
  • 运行以下命令,更改您的情况的参数:
    aws lambda add-permission \ --region {Account-B.Lambda region Eg. us-east-1} \ --function-name {Account-B.Lambda name} \ --statement-id 1 \ --principal s3.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::{Account-A.S3 name} \ --source-account {Account-A.account-id} \ --profile {Account-B.profile-name}

  • 在这种情况下,您可能会收到 statement-id 存在错误,增加 statement-id 并重新运行命令。
  • 转至 Account-A S3 存储桶和“属性”选项卡下 >“事件”下
  • 选择添加通知
  • 添加以下字段:
    Name: ObjectCreation Events: ObjectCreate (All) Send to: Lambda function Lambda: Add Lambda function ARN Lambda function ARN: your-lambda-arn

  • 注意:Lambda 函数可能仍会显示错误,但 S3 存储桶中添加的新对象会触发 lambda 和打印(事件)日志出现在 Cloudwatch 日志中。

    关于amazon-web-services - Amazon S3 在另一个账户中触发另一个 Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45445572/

    相关文章:

    node.js - AWS Lambda 外部 URI 请求错误 : connect ETIMEDOUT

    amazon-web-services - AWS Step Function 处理 Lambda.Unknown

    amazon-web-services - Amazon Lex 不会将用户和 Lex 之间的对话传递给 amazon connect

    javascript - dynamodb在列表中添加对象到列表中的对象内nodejs

    amazon-web-services - 如何使用 CloudFront 作为我的 App Runner 服务的反向代理?

    amazon-web-services - ECS 服务的 AWS 网络负载均衡器健康检查失败

    amazon-web-services - 如何调试 Amazon SQS 订阅 SNS 的问题

    php - 通过使用 AWS-SDK PHP 生成的预签名帖子拒绝 AWS S3 上传访问

    amazon-web-services - 是否可以在不使用 s3 的情况下在 sagemaker 中进行预测

    node.js - 如何将缓冲区保存到 S3 存储桶中